Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
ZigZaHod_v1_1
//+------------------------------------------------------------------+
//| ZigZaHod v1.1.mq4 |
//| |
//| Coders ForTorg ZEVs |
//| https://www.mql5.com/ru/users/fortorg |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, ForTorg ZEVs"
#property link "https://www.mql5.com/ru/users/fortorg"
#property version "1.1"
#include <stdlib.mqh>
//#property strict
bool SigFractal=true;
extern int ABminRazmer=100; // ìèíèìàëüíûé ðàçìåð AB
extern double OtstupProc=0.1; // îòñòóï îòë. îò AB (0.1 = 10 %)
extern double KoefProfit=1.5; // Êîåôèöèåíò ïðîôèòà
extern double DelKorStopOrder=0.6; // ãëóáèíà êîððåêöèè ïðè êîòîðîé óáèðàòü îòë.
extern bool OtmerennyiHod=true; // îòìåðåííûé õîä.
extern bool OdnaStor=true; // Òîðãîâëÿ â îäíó ñòîðîíó.
bool ObeStor=false;
extern bool SignalDelOldOtl=false; // óäàëÿåò ïðåäûäóùóþ îòëîæêó ñâîåãî íàïðàâëåíèÿ ïðè ñèãíàëå
extern bool SignalDelOldOtlAll=false; // óäàëÿå ÂÑÅ ñòàðûå îòëîæêè ïðè ñèãíàëå
extern bool StopLos=false; // âûñòàâëÿåò SL çà Â
extern bool SLSignal=false; // âûñòàâëÿåò SL íà óðîâíå íîâîãî ñèãíàëà ïðîòèâîïîëîæíîãî íàïðàâëåíèÿ (åñëè "îäíà ñòîðîíà" òî íå ðàáîòàåò
//----
extern string Òðàë="-=-=-";
extern bool bTrlinloss=false; // ñëåäóåò ëè òðàëèòü íà ó÷àñòêå ëîññîâ (ìåæäó êóðñîì ñòîïëîññà è îòêðûòèÿ)
extern int iIndent=50; // îòñòóï îò òåíè áàðà, íà êîòîðîì ðàçìåùàåòñÿ ñòîïëîññ
extern int Frktl_kol=0; // êîë-âî ôðàêòàëîâ ïî êîòîðûì òðàëèòü
extern int Bars_kol=19; // êîë-âî áàðîâ, ïî òåíÿì êîòîðûõ ñëåäóåò òðàëèòü
//--------
extern double TargetLoss = 99999; // Öåëåâîé óáûòîê
extern double TargetProfit = 99999; // Öåëåâàÿ ïðèáûëü
extern bool Commentariy=false;
bool DelHistoryMassiv=true;
bool SaveMassiv=false;
extern int MagicNumber=515000000;
extern int MaxOrder=10; // ìàõ. êîë-âî îðäåðîâ (íå áîëüøå 30, îãð. â ìàññèâå)
extern double Lot=0.01;
extern int Otstup=15; // îòñòóï ïóíêòîâ îòë.( ñïðåä)
extern bool LotProiz=false; // ;-)
extern int Slippage=10;
bool Draw=False;
int NumberOfTry= 5; // Êîëè÷åñòâî ïîïûòîê
color clCloseBuy = Blue; // Öâåò çíà÷êà çàêðûòèÿ ïîêóïêè
color clCloseSell = Red; // Öâåò çíà÷êà çàêðûòèÿ ïðîäàæè
color clDelete = Yellow; // Öâåò çíà÷êà óäàëåíèÿ îðäåðà
bool UseSound = False; // Èñïîëüçîâàòü çâóêîâîé ñèãíàë
string SoundSuccess = "ok.wav"; // Çâóê óñïåõà
string SoundError = "timeout.wav"; // Çâóê îøèáêè
double hf,lf;
double temp;// ABBA
double MA,MB,MRazmer,MTime;
bool tut=1;
int hi,lo;
int SigTfFr=Period();
double h1,h2,h3,h4,l1,l2,l3,l4;
int hk1,hk2,hk3,hk4,lk1,lk2,lk3,lk4;
double A,B,C,D,Eh,El,AB,E,F,Up,Dn;
int i=0;
int Ak,Bk,Ck,Dk,Ek,Fk,Upk,Dnk;
double SelSL,BuySL;
double Razmer;
int BBars=0;
double BStp=0,SStp=0,BSsl=0,SSsl=0,BSotl=0,SSotl=0;
double Lots;
int Kol_B_S;
double LotB,LotS;
bool New_Bar=true;
string ExpertComment="ZigZaHod_v1.1";
int NumberOfTries=5;
double Mas_Ord_Tek[31][8]; // Îáüÿâëÿåì ìàññèâ òåêóùèõ îðäåðîâ
// 1é èíäåêñ = ïîðÿäêîâûé íîìåð îðäåðà â ýòîì ìàññèâå
// [0][0] Êîë-âî îòêðûòûõ îðäåðîâ
// [][1] êóðñ îòêð. îðäåðà (àáñîëþòíîå çíà÷. êóðñà)
// [][2] StopLoss îðäåðà (àáñîëþòíîå çíà÷. êóðñà)
// [][3] TakeProfit îðäåðà (àáñîëþòíîå çíà÷. êóðñà)
// [][4] íîìåð îðäåðà ticket
// [][5] êîëè÷. ëîòîâ îðäåðà
// [][6] òèï îðäåðà 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// [][7] Ìàãè÷åñêîå ÷èñëî îðäåðà MagicNumber
double Massiv[31][10]; // Îáüÿâëÿåì ìàññèâ -= Massiv =- Îñíîâíîé ìàññèâ
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
// 1é èíäåêñ = ïîðÿäêîâûé íîìåð îðäåðà â ýòîì ìàññèâå
// [0][1] MagicNumber !!! ñàìûé Íîâûé ìàãèê !!!
// [0][2] MinMagicNumber îòêð. îðäåðîâ(èç áëîêà ñðàâíåíèÿ îðäåðîâ)
// [0][3] áëèæàéøàÿ ñâîáîäíàÿ ñòðîêà
// [0][5] ñ÷åò÷èê ñîõðàíåíèé (SaveMassiv)
// Massiv[][1]; A Öåíà
// Massiv[][2]; B Öåíà
// Massiv[][3]; Razmer ÀB
// Massiv[][4]; OrderTicket()
// Massiv[][5]; Time[0] Âðåìÿ ÀB
// Massiv[][6]; OrderType() Òèï îðäåðà 0=B,1=S,2=BL,3=SL,4=BS,5=SS
// Massiv[][7]; OrderMagicNumber()
//--------------------------------------------------------------------
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int init()
{
if(SaveMassiv)
{
FilesOpen(); // ×èòàåì Ôàéë â ìàññèâ -->-Massiv
}
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int deinit()
{
if(SaveMassiv)
{
FilesWrite(); // // Ïèøåì ìàññèâ Massiv --> â Ôàéë
}
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
{
int cnt,ticket,total;
if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit)
{
ClosePosFirstProfit();
DeleteOrders();
MasTekOrder();
SravMas();
}
bool BuyCondition=false,SellCondition=false;// CloseBuyCondition=false , CloseSellCondition=false;
Fun_New_Bar(); // Ïðîâåðÿåì íîâûé áàð
if(New_Bar)
{
MasTekOrder(); // Èùåì è çàíîñèì â Ìàññèâ Mas_Ord_Tek âñå îðäåðà
SravMas(); // Ïîèñê ïðîïàâøèõ îðäåðîâ â Massiv
//|---------- Çàãëóøêè...
int TfFr=Period();// ïåðèîä ãðàôèêà, íà êîòîðîì îïðåäåëÿþòñÿ ôðàêòàëû èëè òåíè (1, 5, 15, 30, 60, 240, 1440, 10080, 43200)
int TFtralSL=Period();
int PervFr=3;
int PropCandlFr=0;
//|---------------------------
hi=0;lo=0;
A=0;B=0;C=0;D=0;E=0;F=0;Up=0;Dn=0;
Ak=0;Bk=0;Ck=0;Dk=0;Ek=0;Fk=0;Upk=0;Dnk=0;
hlFractal(TfFr); // Íàõîäèì hl ôðàêòàëû
if(hk1==lk1 && hk1==PervFr) return(0); // òóäà-ñþäà
if(SigFractal)
{
if((hk1<lk1) && (hk1==PervFr) && (High[1]<High[3] && High[2]<High[3])) // && (hk2>=lk2)) // up
{
A=iHigh(Symbol(),TfFr,PervFr); B=l1;C=h2;D=l2;
Ak=hk1;Bk=lk1;Ck=hk2;Dk=lk2;
}
if((lk1<hk1) && (lk1==PervFr) && (Low[1]>Low[3] && Low[2]>Low[3]))// && (lk2>=hk2)) //
{
A=iLow(Symbol(),TfFr,PervFr);B=h1;C=l2;D=h2;
Ak=lk1;Bk=hk1;Ck=lk2;Dk=hk2;
}
}
AB=(A-B)/_Point;
Razmer=AB;
if(Razmer<0) {Razmer=-Razmer;}
SelSL=0;
BuySL=0;
if(A>B)
{
BuyCondition=true;
SelSL=A;BuySL=0;
if(DelKorStopOrder>0 && B+Razmer*DelKorStopOrder*Point>iLow(Symbol(),0,1))BuyCondition=false;
// if(ObeStor) {BuyCondition=true;SellCondition=true;}
}
if(A<B)
{
SellCondition=true;
BuySL=A;SelSL=0;
if(DelKorStopOrder>0 && B-Razmer*DelKorStopOrder*Point<iHigh(Symbol(),0,1))SellCondition=false;
// if(ObeStor) {BuyCondition=true;SellCondition=true;}
}
//================================================================
// Èùåì âñå îðäåðà è âûñòàâëÿåì ðàçðåøåíèÿ. Ñ÷èòàåì îðäåðà è ëîòû.
//================================================================
if((BuyCondition || SellCondition) && Razmer>ABminRazmer)
{
Kol_B_S=0;
bool DelBS=false,DelSS=false;
LotB=0; LotS=0;
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
{
ticket=OrderTicket();
if(OdnaStor && OrderType()==1) {DelBS=true;} // buy
if(OdnaStor && OrderType()==0) {DelSS=true;} // sell
if(OrderType()==1 || OrderType()==0) {Kol_B_S++;} // buy
if(OdnaStor && BuyCondition && OrderType()==1) {BuyCondition=false;} // buy
if(OdnaStor && SellCondition && OrderType()==0) {SellCondition=false;} // sell
if(OrderType()==OP_BUY) {LotB=LotB+OrderLots();}
if(OrderType()==OP_SELL) {LotS=LotS+OrderLots();}
}
}
}
//================================================================
// Èùåì âñå îðäåðà è óäàëÿåì íåíóæíûå. Òðàëèì ...
//================================================================
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
{
ticket=OrderTicket();
tut=1; //òóò åñòü
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())
{
if(DelSS){CloseOrder(OrderType()); tut=0;}
if(tut && SignalDelOldOtl && SellCondition) {CloseOrder(OrderType());tut=0;}
if(tut && SignalDelOldOtlAll && (BuyCondition || SellCondition)) {CloseOrder(OrderType());tut=0;}
}
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
{
if(DelBS){CloseOrder(OrderType()); tut=0;}
if(tut && SignalDelOldOtl && BuyCondition) {CloseOrder(OrderType());tut=0;}
if(tut && SignalDelOldOtlAll && (BuyCondition || SellCondition)) {CloseOrder(OrderType());tut=0;}
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if(OtmerennyiHod) MasOtmerHod(ticket);
if(tut && (Bars_kol!=0 || Frktl_kol!=0)) TrailingByZ(ticket,TFtralSL,Bars_kol,iIndent,bTrlinloss);
}
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(OtmerennyiHod) MasOtmerHod(ticket);
if(tut && (Bars_kol!=0 || Frktl_kol!=0)) TrailingByZ(ticket,TFtralSL,Bars_kol,iIndent,bTrlinloss);
}
// if(tut==0) {MasTekOrder(); SravMas();}
}
}
//================================================================
// Âûñòàâëÿåì îòëîæêè.
//================================================================
if(Razmer<ABminRazmer) {BuyCondition=false; SellCondition=false;}
// -------- Îïðåäåëÿåì íîâîñòè ... Åñëè åñòü òî íå òîðãóåì.
int Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL); // Ìèí. äèñòàíöèÿ STOPLEVEL
int Min_Freez=MarketInfo(Symbol(),MODE_FREEZELEVEL); // Ìèí. äèñòàíöèÿ FREEZELEVEL
if(Min_Dist>100 || Min_Freez>100) {BuyCondition=false; SellCondition=false;} // Íà íîâîñòÿõ íå òîðãóåì...
total=OrdersTotal();
if(total<MaxOrder && (BuyCondition || SellCondition))
{
SLTP(); // Âûçûâàåì ïîäïðîãðàììó ðàñ÷åòà sl, tp,... îòêðûâàåìûõ îðäåðîâ
if(BuyCondition)//<-- BUY condition
{
ticket=OpenOrder(OP_BUYSTOP); //<-- Open BUYSTOP order
CheckError(ticket,"BUYSTOP"); // return(0);
}
if(SellCondition) //<-- SELL condition
{
ticket=OpenOrder(OP_SELLSTOP); //<-- Open SELLSTOP order
CheckError(ticket,"SELLSTOP"); // return(0);
}
}
BuyCondition=false; SellCondition=false;
MasTekOrder(); SravMas();
//return(0);
}
//================================================================
// Èùåì âñå îòêðûòûå îðäåðà è Ðàáîòåì ñ íèìè... Óäàëÿåì îòëîæêè è òðàëèì TP
// -=-=-=-=-=-=-= Ìàñèâ... ;-) -=-=-=-=-=-=
//================================================================
int h;
total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
tut=1; //òóò åñòü
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
{
ticket=OrderTicket();
for(h=1;h<=30;h++) //
{
if((Massiv[h][4]==ticket)) break; //
}
MA=Massiv[h][1]; // Öåíà A
MB=Massiv[h][2]; // Öåíà B
MRazmer=Massiv[h][3]; // Ðàçìåð ÀB
MTime=Massiv[h][5]; // Âðåìÿ ÀB
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())
{
if(tut && DelKorStopOrder>0 && !OtmerennyiHod && MB-MRazmer*DelKorStopOrder*Point<iHigh(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
if(tut && OtmerennyiHod) MasOtmerHod(ticket);
}
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
{
if(tut && DelKorStopOrder>0 && !OtmerennyiHod && MB+MRazmer*DelKorStopOrder*Point>iLow(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
if(tut && OtmerennyiHod) MasOtmerHod(ticket);
}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if(OtmerennyiHod) MasOtmerHod(ticket);
}
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(OtmerennyiHod) MasOtmerHod(ticket);
}
if(!tut) { MasTekOrder(); SravMas();}
}
}
//================================================================
// Êîìåíòèðóåì...
//================================================================
if(Commentariy)
{
string Spread=MarketInfo(Symbol(),MODE_SPREAD); ExpertComment=MarketInfo(Symbol(),MODE_SPREAD);
string st="Öåëåâîé óáûòîê="+DoubleToStr(-TargetLoss,2)+" "+AccountCurrency()+" Òåêóù";
if(AccountProfit()<0) st=st+"èé óáûòîê=";
else st=st+"àÿ ïðèáûëü=";
st=st+DoubleToStr(AccountProfit(),2)+" "+AccountCurrency()+" Öåëåâàÿ ïðèáûëü="+DoubleToStr(TargetProfit,2)+" "+AccountCurrency();
Comment("",TimeToStr(TimeCurrent(),TIME_SECONDS)," Spread = ",Spread,
"\n ",st,
"\n Êîë-âî îðäåðîâ= ",Mas_Ord_Tek[0][0],",Ïóñòàÿ ñòðîêà= ",Massiv[0][3],
"\n ticketm= ",Massiv[1][4],", Òèï îðäåðà= ",Massiv[1][6],", A= ",Massiv[1][1],", B= ",Massiv[1][2],", Razmer= ",Massiv[1][3],", Time= ",TimeToStr(Massiv[1][5],TIME_DATE|TIME_MINUTES),
"\n ticketm= ",Massiv[2][4],", Òèï îðäåðà= ",Massiv[2][6],", A= ",Massiv[2][1],", B= ",Massiv[2][2],", Razmer= ",Massiv[2][3],", Time= ",TimeToStr(Massiv[2][5],TIME_DATE|TIME_MINUTES),
"\n ticketm= ",Massiv[3][4],", Òèï îðäåðà= ",Massiv[3][6],", A= ",Massiv[3][1],", B= ",Massiv[3][2],", Razmer= ",Massiv[3][3],", Time= ",TimeToStr(Massiv[3][5],TIME_DATE|TIME_MINUTES),
// "\n ticketm= ",Massiv[4][4],", Òèï îðäåðà= ",Massiv[4][6],", A= ",Massiv[4][1],", B= ",Massiv[4][2],", Razmer= ",Massiv[4][3],", Time= ",TimeToStr(Massiv[4][5],TIME_DATE|TIME_MINUTES),
"\n MagicNumber= ",MagicNumber,//" Ñîõðàíåííî= ",Massiv[0][5],
"\n A= ",Ak," ",A,
"\n B= ",Bk," ",B,
"\n AB= ",AB);
}
return(0);
}
//+------------------------------------------------------------------+
// Êîíåö...
// äàëüøå èäóò ïîäïðîãðàììû...
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// Ðàñ÷èòûâàåì SL TP è öåíó îòêðûòèÿ.
void SLTP() // Ðàñ÷èòûâàåì SL TP
{
SStp=0;SSsl=0;BStp=0;BSsl=0;BSotl=0;SSotl=0;
if(KoefProfit>0) {SStp=A-Razmer*KoefProfit*Point;}
SSotl=A-Otstup*0.5*Point-Razmer*OtstupProc*Point;
if(StopLos) SSsl=B+Otstup*Point;
// if(ObeStor) {temp=B;B=A;A=temp;}
if(KoefProfit>0) {BStp=A+Razmer*KoefProfit*Point;}
BSotl=A+Otstup*Point+Razmer*OtstupProc*Point;
if(StopLos) BSsl=B-Otstup/2*Point;
// if(ObeStor) {temp=B;B=A;A=temp;}
Lots=Lot;
if(LotProiz)
{
Lots=(Lot*(Kol_B_S+1)*2); // ïèïåö... ÿ ñàì â øîêå ;-)
if(Lots==0) Lots=Lot;
}
}
//+------------------------------------------------------------------+
void MasOtmerHod(int ticket)
{
double Hod=0;
double OtkatCena=0;
int OtkatBar=0;
int OpBar=0;
double Target;
for(int m=1;m<=30;m++) //
{
if((Massiv[m][4]==ticket)) break; //
}
for(i=0; i<OrdersTotal(); i++)// Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
{
tut=1;
if(OrderSelect(i,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && ticket==OrderTicket() && OrderMagicNumber()==MagicNumber) //Åñëè åñòü ñëåäóþù è íàøà âàë.ïàðà
{
if(OtmerennyiHod && (Massiv[m][6]==0 || Massiv[m][6]==4)) // buy
{
if(DelKorStopOrder>0 && Massiv[m][6]==4 && Massiv[m][2]+Massiv[m][3]*DelKorStopOrder*Point>iLow(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
OpBar=(iBarShift(Symbol(),0,MTime)+1);
OtkatBar=iLowest(Symbol(),0,MODE_LOW,OpBar,1);
OtkatCena=iLow(Symbol(),0,OtkatBar);
if(iLow(Symbol(),0,0)<OtkatCena) OtkatCena=iLow(Symbol(),0,0);
Hod=MRazmer;
Target=OtkatCena+Hod*KoefProfit*Point;
if(tut && (NormalizeDouble(Target,_Digits)!=NormalizeDouble(OrderTakeProfit(),_Digits)))
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Target,0,Yellow))
Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
}
}
if((OtmerennyiHod) && ((Massiv[m][6]==1) || (Massiv[m][6]==5))) //sell
{
if(DelKorStopOrder>0 && Massiv[m][6]==5 && Massiv[m][2]-Massiv[m][3]*DelKorStopOrder*Point<iHigh(Symbol(),0,1)){CloseOrder(OrderType());tut=0;}
OpBar=(iBarShift(Symbol(),0,MTime)+1);
OtkatBar=iHighest(Symbol(),0,MODE_HIGH,OpBar,1);
OtkatCena=iHigh(Symbol(),0,OtkatBar);
if(iHigh(Symbol(),0,0)>OtkatCena) OtkatCena=iHigh(Symbol(),0,0);
Hod=MRazmer;
Target=OtkatCena-Hod*KoefProfit*Point;
if(tut && (NormalizeDouble(Target,_Digits)!=NormalizeDouble(OrderTakeProfit(),_Digits)))
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Target,0,Yellow))
Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),". Îøèáêà: ",GetLastError());
}
}
}
}
return;
}
//+-----------------------------------------------------------------+
//| Èùåì è çàíîñèì â Ìàññèâ "Mas_Ord_Tek" âñå îðäåðà
//+------------------------------------------------------------------+
void MasTekOrder()
{
int Kol=0; // Îáíóëåíèå ñ÷¸ò÷èêà îðäåðîâ
ArrayInitialize(Mas_Ord_Tek,0); // Îáíóëåíèå ìàññèâà
for(i=0; i<OrdersTotal(); i++)// Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
{
if(OrderSelect(i,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
Kol++; // Ñ÷èòàåì îáùåå êîëè÷åñòâî îðäåðîâ
//--- Ôîðìèðîâàíèå íîâîãî ìàññèâà îðäåðîâ --
Mas_Ord_Tek[Kol][1] = NormalizeDouble(OrderOpenPrice(),Digits); // Êóðñ îòêðûòèÿ îðäåðîâ
Mas_Ord_Tek[Kol][2] = NormalizeDouble(OrderStopLoss(), Digits); // Êóðñ SL
Mas_Ord_Tek[Kol][3]= NormalizeDouble(OrderTakeProfit(),Digits); // Êóðñ ÒÐ
Mas_Ord_Tek[Kol][4] = OrderTicket(); // Íîìåð îðäåðà
Mas_Ord_Tek[Kol][5] = OrderLots(); // Êîëè÷åñòâî ëîòîâ
Mas_Ord_Tek[Kol][6] = OrderType(); // Òèï îðäåðà
Mas_Ord_Tek[Kol][7] = OrderMagicNumber();// Ìàãè÷åñêîå ÷èñëî
}
}
Mas_Ord_Tek[0][0]=Kol; // Ñîõðàíÿåì â íóëåâóþ ÿ÷åå÷êó êîë-âî îðäåðîâ.
}
//===================================================================
// Çàïèñûâàì îðäåð â ìàññèâ
//===================================================================
void ZapOrdMas(int ticket)
{
int pusto=Massiv[0][3];
if(pusto==0)
{
for(int f=1;f<=30;f++) // Ïåðåáèðàåì âåñü ìàññèâ â ïîèñêàõ ïóñòûõ ñòðîê
{
if((pusto==0) && (Massiv[f][4]==0)) {pusto=f; break;} // åñëè íåò ticket çíà÷èò ñòðîêà ïóñòà
}
}
for(i=0; i<OrdersTotal(); i++)// Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
{
if(OrderSelect(i,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && ticket==OrderTicket() && OrderMagicNumber()==MagicNumber) //Åñëè åñòü ñëåäóþù è íàøà âàë.ïàðà
{
if((ObeStor) && (Ak>Bk) && (OrderType()==5)) {temp=B;B=A;A=temp;} // buy
if((ObeStor) && (Ak<Bk) && (OrderType()==4)) {temp=B;B=A;A=temp;} // sell
Massiv[pusto][1] = A;// A
Massiv[pusto][2] = B;// B
Massiv[pusto][3]=Razmer;// Razmer
Massiv[pusto][4]=OrderTicket(); // Íîìåð îðäåðà
Massiv[pusto][5]=Time[0];// Âðåìÿ îòêðûòèÿ ñäåëêè
Massiv[pusto][6] = OrderType(); // Òèï îðäåðà
Massiv[pusto][7] = OrderMagicNumber();// Ìàãè÷åñêîå ÷èñëî
Massiv[0][3]=0;
Massiv[0][1]=MagicNumber;
if((ObeStor) && (Ak>Bk) && (OrderType()==5)) {temp=B;B=A;A=temp;} // buy
if((ObeStor) && (Ak<Bk) && (OrderType()==4)) {temp=B;B=A;A=temp;} // sell
}
}
return;
}
//================================================================
// Ïîèñê ïðîïàâøèõ îðäåðîâ
//================================================================
void SravMas()
{
for(int oo=1;oo<=30;oo++) // Âîçüì¸ì íîìåð îðäåðà èç ñòàðîãî ìàññèâà
{
int Sovpadenie=0; // Äëÿ íà÷àëà îáíóëèì ôàêò ïðèçíàêà ñîâïàä.
for(i=1;i<=Mas_Ord_Tek[0][0];i++) // Ïîèùåì ýòîò îðäåðîê â òåêóùåì ìàññèâå
{
if(Mas_Ord_Tek[i][4]==Massiv[oo][4]) // Åñëè ñîâïàë ticket îðäåðà, òî çàïîìíèì, ò.å ïîêà æèâ
// è âûõîäèì èç âíóòðåííåãî öèêëà
{
Sovpadenie=1;
if(Massiv[oo][6]!=Mas_Ord_Tek[i][6]) Massiv[oo][6]=Mas_Ord_Tek[i][6]; //èçìåíÿåì ñòàòóñ îðäåðà
break;
}
}
if(Sovpadenie==1) continue; // Ïåðåõîäèì ê ñëåäóþùåìó ñòàðîìó
if(Massiv[oo][6]<9) Massiv[oo][6]=Massiv[oo][6]+10; // Çàêðûò îðäåð
}
Massiv[0][3]=0; // Ñáðîñ ïóñòîé ÿ÷åéêè äëÿ çàïèñè îðäåðîâ
for(int f=1;f<=30;f++) // Ïåðåáèðàåì âåñü ìàññèâ â ïîèñêàõ ñòàðûõ îðäåðîâ è èõ óäàëåíèÿ
{
if(Massiv[0][3]==0 && Massiv[f][4]==0) Massiv[0][3]=f; // åñëè íåò ticket çíà÷èò ñòðîêà ïóñòà
if(DelHistoryMassiv && Massiv[f][6]>9) // Åñëè îðäåðà óæå íåò
{
for(int g=0;g<=7;g++) // Îáíóëÿåì âñþ ñòðîêó
{
Massiv[f][g]=0; // çàïîëíÿåì 0
if(Massiv[0][3]==0) Massiv[0][3]=f;// Çàïîìèíàåì ïóñòóþ ñòðîêó äëÿ çàïèñè íîâûõ îðäåðîâ
}
}
}
}
//+------------------------------------------------------------------+
//+-----------------------------------------------------TrailingStop-+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void TrailingByZ(int ticket,int TFtralSL,int bars_n,int indent,bool trlinloss)
{
int hTralFr,lTralFr;
int Frktl_bars=5; // êîë-âî áàðîâ âî ôðàêòàëå
int k;
if(Frktl_kol>0)
{
k=0;hTralFr=0;
hf=0;
for(int a=0; a<Frktl_kol; a++)
{
hTralFr=0;
while(hTralFr<1)
{
hf=iCustom(Symbol(),TFtralSL,"Fr",Frktl_bars,0,k);
if(hf>0) hTralFr=k;
k++;
}
}
k=0;lTralFr=0;
lf=0;
for(a=0; a<Frktl_kol; a++)
lTralFr=0;
while(lTralFr<1)
{
lf=iCustom(Symbol(),TFtralSL,"Fr",Frktl_bars,1,k);
if(lf>0) lTralFr=k;
k++;
}
}
double new_extremum=0,new_extremumFR=0,new_extremumBR=0;
// ïðîâåðÿåì ïåðåäàííûå çíà÷åíèÿ
if((indent<0) || (ticket==0) || ((TFtralSL!=1) && (TFtralSL!=5) && (TFtralSL!=15) && (TFtralSL!=30) && (TFtralSL!=60) && (TFtralSL!=240) && (TFtralSL!=1440) && (TFtralSL!=10080) && (TFtralSL!=43200)) || (!OrderSelect(ticket,SELECT_BY_TICKET) && OrderMagicNumber()==MagicNumber))
{
Print("Òðåéëèíã ôóíêöèåé TrailingByShadows() íåâîçìîæåí èç-çà íåêîððåêòíîñòè çíà÷åíèé ïåðåäàííûõ åé àðãóìåíòîâ.");
// return(0);
}
if(OrderType()==OP_BUY)// åñëè äëèííàÿ ïîçèöèÿ (OP_BUY), íàõîäèì ìèíèìóì bars_n ñâå÷åé
{
if(Frktl_kol>0) // new_extremum = ArrayMinimum(Symbol(),tmfrm,lTralFr);
{
int IndMin=ArrayMinimum(Low,lTralFr,1); // èíäåêñ áàðà
new_extremumFR=iLow(Symbol(),TFtralSL,IndMin);
}
if(new_extremumFR>0) new_extremum=new_extremumFR;
if(Bars_kol>0)
{
for(i=1;i<=bars_n;i++)
{
if(i==1) new_extremumBR=iLow(Symbol(),TFtralSL,i);
else
if(new_extremumBR>iLow(Symbol(),TFtralSL,i)) new_extremumBR=iLow(Symbol(),TFtralSL,i);
}
}
if(new_extremumBR>0 && new_extremum<new_extremumBR) new_extremum=new_extremumBR;
if((BuySL>0) && (SLSignal)) new_extremum=BuySL;
//+------------------------------------------------------------------+
//| åñëè òðàëèì è â çîíå óáûòêîâ |
//| åñëè íàéäåííîå çíà÷åíèå "ëó÷øå" òåêóùåãî ñòîïëîññà ïîçèöèè, ïåðåíîñèì
//+------------------------------------------------------------------+
if(trlinloss)
{
// åñëè íàéäåííîå çíà÷åíèå "ëó÷øå" òåêóùåãî ñòîïëîññà ïîçèöèè, ïåðåíîñèì
if((((new_extremum-indent*Point)>OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum-indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if(NormalizeDouble(new_extremum-indent*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
{
if(!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration()))
{
Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Buy Òðàë SL Îøèáêà: ",GetLastError());
}
}
}
//+------------------------------------------------------------------+
//| åñëè íîâûé ñòîïëîññ íå òîëüêî ëó÷øå ïðåäûäóùåãî, íî è êóðñà îòêðûòèÿ ïîçèöèè |
//+------------------------------------------------------------------+
else
{
if(((new_extremum-indent*Point)>OrderStopLoss() || OrderStopLoss()==0) && ((new_extremum-indent*Point)>OrderOpenPrice()) && (new_extremum-indent*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if(NormalizeDouble(new_extremum-indent*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
{
if(!OrderModify(ticket,OrderOpenPrice(),new_extremum-indent*Point,OrderTakeProfit(),OrderExpiration()))
{
Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Buy Òðàë SL Îøèáêà: ",GetLastError());
}
}
}
}
// åñëè êîðîòêàÿ ïîçèöèÿ (OP_SELL), íàõîäèì ìèíèìóì bars_n ñâå÷åé
if(OrderType()==OP_SELL)
{
if(Frktl_kol>0)
{
int IndMax=ArrayMaximum(High,hTralFr,1); // èíäåêñ áàðà
new_extremumFR=iHigh(Symbol(),TFtralSL,IndMax);
}
if(new_extremumFR>0) new_extremum=new_extremumFR;
if(Bars_kol>0)
{
for(i=1;i<=bars_n;i++)
{
if(i==1) new_extremumBR=iHigh(Symbol(),TFtralSL,i);
else
if(new_extremumBR<iHigh(Symbol(),TFtralSL,i)) new_extremumBR=iHigh(Symbol(),TFtralSL,i);
}
}
if(new_extremumBR>0 && new_extremum==0) new_extremum=new_extremumBR;
if(new_extremumBR>0 && new_extremumFR>new_extremumBR) new_extremum=new_extremumBR;
if((SelSL>0) && (SLSignal)) new_extremum=SelSL;
//+------------------------------------------------------------------+
//| åñëè òðàëèì è â çîíå óáûòêîâ |
//+------------------------------------------------------------------+
if(trlinloss)
{
// åñëè íàéäåííîå çíà÷åíèå "ëó÷øå" òåêóùåãî ñòîïëîññà ïîçèöèè, ïåðåíîñèì
if((((new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && (new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if(NormalizeDouble(new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
{
if(!OrderModify(ticket,OrderOpenPrice(),new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
{
Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Sell Òðàë SL Îøèáêà: ",GetLastError());
}
}
}
//+------------------------------------------------------------------+
//| åñëè íîâûé ñòîïëîññ íå òîëüêî ëó÷øå ïðåäûäóùåãî, íî è êóðñà îòêðûòèÿ ïîçèöèè |
//+------------------------------------------------------------------+
else
{
// åñëè íîâûé ñòîïëîññ íå òîëüêî ëó÷øå ïðåäûäóùåãî, íî è êóðñà îòêðûòèÿ ïîçèöèè
if((((new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderStopLoss()) || (OrderStopLoss()==0)) && ((new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point)<OrderOpenPrice()) && (new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
if(NormalizeDouble(new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,_Digits)!=NormalizeDouble(OrderStopLoss(),_Digits))
{
if(!OrderModify(ticket,OrderOpenPrice(),new_extremum+(indent+MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
{
Print("Íå óäàëîñü ìîäèôèöèðîâàòü îðäåð ¹",OrderTicket(),".Sell Òðàë SL Îøèáêà: ",GetLastError());
}
}
}
}
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå: Çàêðûòèå îäíîé ïðåäâàðèòåëüíî âûáðàííîé ïîçèöèè |
//+----------------------------------------------------------------------------+
void ClosePosBySelect()
{
bool fc;
color clClose;
double ll,pa,pb,pp;
int err,it;
if((OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderMagicNumber()==MagicNumber)
{
for(it=1; it<=NumberOfTry; it++)
{
if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while(!IsTradeAllowed()) Sleep(5000);
RefreshRates();
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
if(OrderType()==OP_BUY)
{
pp=pb; clClose=clCloseBuy;
} else {
pp=pa; clClose=clCloseSell;
}
ll=OrderLots();
fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
if(fc)
{
if(UseSound) PlaySound(SoundSuccess); break;
} else {
err=GetLastError();
if(UseSound) PlaySound(SoundError);
if(err==146) while(IsTradeContextBusy()) Sleep(1000*11);
Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
ErrorDescription(err),", try ",it);
Print(OrderTicket()," Ask=",pa," Bid=",pb," pp=",pp);
Print("sy=",OrderSymbol()," ll=",ll," sl=",OrderStopLoss(),
" tp=",OrderTakeProfit()," mn=",OrderMagicNumber());
Sleep(1000*5);
}
}
}
else Print("Íåêîððåêòíàÿ òîðãîâàÿ îïåðàöèÿ. Close ",GetNameOP(OrderType()));
}
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
string GetNameOP(int op)
{
switch(op)
{
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("BuyLimit");
case OP_SELLLIMIT: return("SellLimit");
case OP_BUYSTOP : return("BuyStop");
case OP_SELLSTOP : return("SellStop");
default : return("Unknown Operation");
}
}
//+----------------------------------------------------------------------------+
//| Îïèñàíèå : Çàêðûòèå ïîçèöèé ïî ðûíî÷íîé öåíå ñíà÷àëà ïðèáûëüíûõ |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) |
//| |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit(string sy="",int op=-1)
{
int t;
t=OrdersTotal();
if(sy=="0") sy=Symbol();
// Ñíà÷àëà çàêðûâàåì ïðèáûëüíûå ïîçèöèè
for(i=t-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
{
if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(MagicNumber<0 || OrderMagicNumber()==MagicNumber)
{
if(OrderProfit()+OrderSwap()>0) ClosePosBySelect();
}
}
}
}
}
// Ïîòîì âñå îñòàëüíûå
t=OrdersTotal();
for(i=t-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
{
if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(MagicNumber<0 || OrderMagicNumber()==MagicNumber) ClosePosBySelect();
}
}
}
}
}
//| Îïèñàíèå : Óäàëåíèå îðäåðîâ |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáîé îðäåð) |
//| |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="",int op=-1)
{
bool fd;
int err,it,ot,tot;
// mn=MagicNumber;
tot=OrdersTotal();
if(sy=="0") sy=Symbol();
for(i=tot-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber)
{
ot=OrderType();
if(ot>1 && ot<6)
{
if((OrderSymbol()==sy || sy=="") && (op<0 || ot==op))
{
if(MagicNumber<0 || OrderMagicNumber()==MagicNumber)
{
for(it=1; it<=NumberOfTry; it++)
{
if(!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while(!IsTradeAllowed()) Sleep(5000);
fd=OrderDelete(OrderTicket(),clDelete);
if(fd)
{
if(UseSound) PlaySound(SoundSuccess); break;
} else {
err=GetLastError();
if(UseSound) PlaySound(SoundError);
Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
Sleep(1000*5);
}
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void Fun_New_Bar() // Ô-èÿ îáíàðóæåíèÿ ..íîâîãî áàðà
{
if(BBars==iBars(Symbol(),SigTfFr)) New_Bar=false;
if(BBars!=iBars(Symbol(),SigTfFr)) {BBars=iBars(Symbol(),SigTfFr);New_Bar=true;}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
// Îòêðûâàåì îòëîæåííûé îðäåð
//=-=-=-=-
int OpenOrder(int type)
{
// MasTekOrder(); // Èùåì è çàíîñèì â Ìàññèâ Mas_Ord_Tek âñå îðäåðà
// SravMas();
int MaxOrdersetka = 1; //êîë-âî îðäåðîâ ñåòêè
int delta = 25; //ðàññòîÿíèå îò òåêóùåé öåíû
int err=0;int ticket=0;int c=0;
if(type==OP_BUYSTOP)
{
BSotl= NormalizeDouble(BSotl-delta*Point,Digits);
for(i=1; i<=MaxOrdersetka; i++)
{
BSotl= NormalizeDouble(BSotl+delta*Point,Digits);
for(c=0;c<NumberOfTries;c++)
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,BSotl,Slippage,BSsl,BStp,ExpertComment,MagicNumber,0,Green);
err=GetLastError();
if(err==0)
{
ZapOrdMas(ticket);
break;
}
else
{
if(err==4 || err==137 || err==146 || err==136) //Busy errors
{
Sleep(60);
continue;
}
else //normal error
{
break;
}
}
}
}
}
if(type==OP_SELLSTOP)
{
SSotl= NormalizeDouble(SSotl+delta*Point,Digits);
for(i=1; i<=MaxOrdersetka; i++)
{
SSotl=NormalizeDouble(SSotl-delta*Point,Digits);
for(c=0;c<NumberOfTries;c++)
{
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,SSotl,Slippage,SSsl,SStp,ExpertComment,MagicNumber,0,Red);
err=GetLastError();
if(err==0)
{
ZapOrdMas(ticket);
break;
}
else
{
if(err==4 || err==137 || err==146 || err==136) //Busy errors
{
Sleep(60);
continue;
}
else //normal error
{
break;
}
}
}
}
}
return(ticket);
}
//+------------------------------------------------------------------+
// Çàêðûâàåì îòëîæåííûé îðäåð
bool CloseOrder(int type)
{
if(type==OP_BUYSTOP)
return(OrderDelete(OrderTicket()));
if(type==OP_SELLSTOP)
return(OrderDelete(OrderTicket()));
return (0);
}
//+------------------------------------------------------------------+
void CheckError(int ticket,string Type)
{
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print(Type+" Îðäåð îòêðûò : ",OrderOpenPrice());
}
else Print("Error opening "+Type+" order : ",ErrorDescription(GetLastError()));
}
//--------------------------------------------------------------------------
void hlFractal(int TfFr)
{
//+--------------Âû÷èñëÿåì h1-h3
int BarsFr=5;
int k;
int kstart=1;
hk1=0;hk2=0;hk3=0;hk4=0;hf=0;lf=0;k=kstart;
while(hk1<1) //...h1
{
hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
if(hf>0) {hk1=k;h1=hf;}
k++;
}
k=k+1;
while(hk2<1) //...h2
{
hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
if(hf>0) {hk2=k;h2=hf;}
k++;
}
k=k+1;
while(hk3<1) //...h3
{
hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
if(hf>0) {hk3=k;h3=hf;}
k++;
}
k=k+1;
while(hk4<1) //...h4
{
hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
if(hf>0) {hk4=k;h4=hf;}
k++;
}
//+--------------Âû÷èñëÿåì l1-l3
lk1=0;lk2=0;lk3=0;lk4=0;
k=kstart;
while(lk1<1) //...l1
{
lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
if(lf>0) {lk1=k;l1=lf;}
k++;
}
k=k+1;
while(lk2<1) //...l2
{
lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
if(lf>0) {lk2=k;l2=lf;}
k++;
}
k=k+1;
while(lk3<1) //...l3
{
lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
if(lf>0) {lk3=k;l3=lf;}
k++;
}
k=k+1;
while(lk4<1) //...l4
{
lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
if(lf>0) {lk4=k;l4=lf;}
k++;
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//+- ×èòàåì è ïèøåì â ôàéë -=- -----------------------------------+
//+------------------------------------------------------------------+
void FilesWrite() // Ïèøåì Massiv --> â Ôàéë (ðåçåðâíîå êîïèðîâàíèå)
{
Massiv[0][5]=Massiv[0][5]+1;
int h=FileOpen("Massiv.bin",FILE_BIN|FILE_WRITE);
FileWriteInteger(h,ArraySize(Massiv),LONG_VALUE);
FileWriteArray(h,Massiv,0,ArraySize(Massiv));
FileClose(h);
}
//+------------------------------------------------------------------+
void FilesOpen() // ×èòàåì Ôàéë â Massiv -->-- (ðåçåðâíîå êîïèðîâàíèå)
{
int h=FileOpen("Massiv.bin",FILE_BIN|FILE_READ);
if(h<1)
{
Print("Ôàéë Massiv.bin íå îáíàðóæåí, ïîñëåäíÿÿ îøèáêà ",GetLastError());
// return(false);
}
int s=FileReadInteger(h,LONG_VALUE);
ArrayResize(Massiv,s);
FileReadArray(h,Massiv,0,s);
FileClose(h);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---