Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
zigzahod_v1_0_fix10-Performance-edition-PUBL
//+----------------------------------------------------------------------------+
//| ZigZaHod v1.0 fix8-Performance-edition.mq4 |
//| Copyright © 2015, Atomar |
//| https://www.mql5.com/ru/users/atomar |
//| Copyright © 2015, ForTorg ZEVs |
//| https://www.mql5.com/ru/users/fortorg |
//+----------------------------------------------------------------------------+
#property copyright "Copyright © 2015, Atomar https://www.mql5.com/ru/users/atomar"
#property link "https://www.mql5.com/ru/users/atomar"
#property copyright "Copyright © 2015, ForTorg ZEVs https://www.mql5.com/ru/users/fortorg"
#property link "https://www.mql5.com/ru/users/fortorg"
#property copyright "Copyright © 2015, Atomar www.mql5.com/ru/users/atomar"
#property link "https://www.mql5.com/ru/users/atomar"
int BarsFr = 5;
int PervFr = 3;
int PropCandlFr = 0;
extern bool SigFractal = true; //Ðàçðåøåíèå ñèãíàëüíîé ôóíêöèè âûäàâàòü
//ñèãíàë íà îòêðûòèå íîâûõ îðäåðîâ???
extern int ABminRazmer = 100; //Ìèíèìàëüíûé ðàçìåð AB â ïóíêòàõ
extern int ABmaxSize = 1000; //Ìàêñèèìàëüíûé ðàçìåð AB â ïóíêòàõ
extern int Otstup = 15; //Îòñòóï îòëîæåííûõ (ñïðåä) â ïóíêòàõ
extern double OtstupProc = 0.1; //Îòñòóï îòëîæåííûõ îò íèæíåé è âåðõíåé
//ãðàíèö AB (0.1 == 10 %)
extern int MaxOrder = 10; //max êîë-âî îðäåðîâ (íå áîëüøå 30,
//îãðàíè÷åíèíî ðàçìåðîì ìàññèâà)
int MaxOrdersetka = 1; //Êîëè÷åñòâî îðäåðîâ ñåòêè
int delta = 25; //Ðàññòîÿíèå îò òåêóùåé öåíû
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;//Óäàëÿåò ÂÑÅ ñòàðûå îòëîæêè ïðè
//ñèãíàëå?????????
bool DelBS = false;
bool DelSS = false;
extern bool StopLos=false; //Âûñòàâëÿåò SL çà Â
//------------------------------------------------------------------------------
int OpBar = 0;
int OtkatBar = 0;
double Hod = 0;
double OtkatCena = 0;
double MA,MB,MRazmer,MTime;
//----
int TfFr,hi,lo;
double h1,h2,h3,h4,l1,l2,l3,l4;
int hk1,hk2,hk3,hk4,lk1,lk2,lk3,lk4,kstart;
double hf,lf;
bool NewOrder=true;
double A,B,C,D,Eh,El,AB,E,F,Up,Dn;
int k=1,i=0,Ak,Bk=0,Ck,Dk,Ek,Fk,Upk,Dnk;
int SigTfFr=0;
//------------------------------------------------------------------------------
extern string Trailing_Stop = "Trailing Stop";
extern bool bTrlinloss = false; //Ñëåäóåò ëè òðàëèòü íà ó÷àñòêå ëîññîâ
//(ìåæäó êóðñîì ñòîïëîññà è îòêðûòèÿ)
extern bool SLSignal = false; //Âûñòàâëÿåò SL íà óðîâíå íîâîãî ñèãíàëà
//ïðîòèâîïîëîæíîãî íàïðàâëåíèÿ (åñëè
//"îäíà ñòîðîíà" òî íå ðàáîòàåò)
extern int iTmfrm = 240; //Ïåðèîä ãðàôèêà, íà êîòîðîì
//îïðåäåëÿþòñÿ ôðàêòàëû èëè òåíè (1, 5,
//15, 30, 60, 240, 1440, 10080, 43200)
extern int iIndent = 50; //Îòñòóï â ïóíêòàõ îò òåíè áàðà, íà
//êîòîðîì ðàçìåùàåòñÿ ñòîïëîññ
extern int Frktl_bars = 5; //Êîëè÷åñòâî áàðîâ âî ôðàêòàëå
extern int Frktl_kol = 0; //Êîëè÷åñòâî ôðàêòàëîâ ïî êîòîðûì
//òðàëèòü
extern int Bars_kol = 19; //Êîëè÷åñòâî áàðîâ, ïî òåíÿì êîòîðûõ
//ñëåäóåò òðàëèòü
//------------------------------------------------------------------------------
extern bool isCloseAllByTargetProfit=FALSE;
extern double TargetLoss = 999999; //Öåëåâîé óáûòîê
extern double TargetProfit = 999999; //Öåëåâàÿ ïðèáûëü
extern bool isCloseAllByTargetPoints= FALSE;
extern int AllOrdrsSumLossInPoints = 2000;
extern int AllOrdrsSumPrftInPoints = 2000;
extern bool isProcessingUserOrdrs=FALSE;
extern int MagicNumber=515000;
//------------------------------------------------------------------------------
//bool UseSound = False; //Èñïîëüçîâàòü çâóêîâîé ñèãíàë
//string SoundSuccess = "ok.wav"; //Çâóê óñïåõà
//string SoundError = "timeout.wav"; //Çâóê îøèáêè
//------------------------------------------------------------------------------
//Äâå ðàçäåëÿåìûå ìåæäó äâóìÿ ôóíêöèÿìè òðàëà
int hTralFr;
int lTralFr;
//------------------------------------------------------------------------------
int iTicket;
double Razmer;
//Äâå ðàçäåëÿåìûå ìåæäó ôóíêöèåé òðàëà TrailingByZ è ñèãíàëüíîé
double SelSL;
double BuySL;
//
string ExpertComment = "test";
int NumberOfTries = 5;
double BStp=0,SStp=0,BSsl=0,SSsl=0,BSotl=0,SSotl=0;
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]; //Îñíîâíîé ìàññèâ
//1-é èíäåêñ - "òèêåò" îðäåðà â ýòîì
//ìàññèâå
//[0][1] MagicNumber !!! ñàìûé Íîâûé ìàãèê !!!
//[0][2] MinMagicNumber îòêð. îðäåðîâ(èç áëîêà ñðàâíåíèÿ îðäåðîâ)
//[0][3] áëèæàéøàÿ ñâîáîäíàÿ ñòðîêà
//[0][5] ñ÷åò÷èê ñîõðàíåíèé
//Massiv[][1]; //Öåíà A
//Massiv[][2]; //Öåíà B
//Massiv[][3]; //Ðàçìåð ÀB
//Massiv[][5]; //Âðåìÿ ÀB
//Massiv[][6]; //òàéìôðåéì TfFr
//------------------------------------------------------------------------------
//extern bool Commentariy = true;
//extern bool DelHistoryMassiv = true;
bool DelHistoryMassiv=true;
extern bool SaveMassiv=false;
//------------------------------------------------------------------------------
extern int sleepMilliSecToDelOrdrs=5000;
int NumberOfTry=5; //Êîëè÷åñòâî ïîïûòîê
double LotB;
double LotS;
extern double Lot=0.01;
int Kol_B_S; //Êîëè÷åñòâî îðäåðîâ
extern bool LotProiz=false;//;-)
double Lots;
extern int Slippage = 10;
bool BuyCondition = false;
bool SellCondition = false;
int Magic;
int MN;
bool PauseNews=false;
string Spread;
//------------------------------------------------------------------------------
color clCloseBuy = Blue; //Öâåò çíà÷êà çàêðûòèÿ ïîêóïêè
color clCloseSell = Red; //Öâåò çíà÷êà çàêðûòèÿ ïðîäàæè
color clDelete = Yellow; //Öâåò çíà÷êà óäàëåíèÿ îðäåðà
static bool isNeedToDeinit=FALSE;
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
int init()
{
isNeedToDeinit=FALSE;
if(isCloseAllByTargetProfit && isProcessingUserOrdrs)
{
Print("The isProcessingUserOrdrs should be TRUE when isCloseAllByTargetProfit is TRUE.");
isNeedToDeinit=TRUE;
}
if(!isProcessingUserOrdrs && (0>=MagicNumber))
{
Print("The MagicNumber should be greater then zero when isProcessingUserOrdrs is FALSE.");
isNeedToDeinit=TRUE;
}
if(isCloseAllByTargetPoints && (0>AllOrdrsSumLossInPoints))
{
Print("The AllOrdrsSumLossInPoints should be not less then zero.");
isNeedToDeinit=TRUE;
}
if(isCloseAllByTargetPoints && (0>AllOrdrsSumPrftInPoints))
{
Print("The AllOrdrsSumPrftInPoints should be not less then zero.");
isNeedToDeinit=TRUE;
}
if(isNeedToDeinit)
{
Print("Expert is not working cause to abnormal settings, printed above!");
deinit();
return (0);
}
if(SaveMassiv)
FilesOpen();
return (0);
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
int deinit()
{
if(SaveMassiv)
FilesWrite();
return (0);
}
//------------------------------------------------------------------------------
//ÑÈÃÍÀËÜÍÀß ÔÓÍÊÖÈß
//------------------------------------------------------------------------------
int Crossed()
{
int Min_Dist;
int Min_Freez;
Min_Dist=MarketInfo(Symbol(),MODE_STOPLEVEL);
Min_Freez=MarketInfo(Symbol(),MODE_FREEZELEVEL);
//--------------------------------------------------------------------------
//Íå òîðãîâàòü íà íîâîñòÿõ!!!
//--------------------------------------------------------------------------
if(PauseNews== true &&(Min_Dist>100|| Min_Freez>100))
NewOrder = false;
//--------------------------------------------------------------------------
hi = 0;
lo = 0;
A = 0.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;
TfFr=0;
kstart=PropCandlFr;
//Íàéòè ïî 4-ðå íèæíèõ è âåðõíèõ ôðàêòàëà (çíà÷åíèÿ è ñäâèãè)
hlFractal();
//Åñëè íà îäíîé è òîé æå ñâå÷å äâà ôðàêòàëà - íåò ñèãíàëà
if(hk1==lk1 && hk1==PervFr)
return (0);
//
if(SigFractal)
{
//Åñëè ôðàêòàë òîëüêî-òîëüêî ïîÿâèëñÿ è äî ñèõ ïîð íå áûë ïðîáèò...
//...òî çàïîìíèòü ñòðóêòóðó ABCD èç 4-õ ïîñëåäíèõ ôðàêòàëîâ
if((hk1<lk1) && (hk1==PervFr) && (High[1]<High[3] && High[2]<High[3]))
{
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]))
{
A = iLow (Symbol (), TfFr, PervFr);
B = h1;
C = l2;
D = h2;
Ak = lk1;
Bk = hk1;
Ck = lk2;
Dk = hk2;
}
}
//Âûÿñíèòü âûñîòó íîâåéøåãî êîëåíà AB â ñòðóêòóðå ABCD
AB=(A-B)/Point;
Razmer=AB;
if(0.0>Razmer)
Razmer=-Razmer;
//Åñëè ðàçìåð íåäîñòàòî÷íûé, òî íåò ñèãíàëà
if(Razmer<ABminRazmer)
return (0);
if(Razmer>ABmaxSize)
return (0);
SelSL = 0.0;
BuySL = 0.0;
//Åñëè ïîñëåäíèé ôðàêòàë ñâåðõó è...
if(A>B)
{
//...åñëè óñòàíîâëåíà ïðîâåðêà íà ãëóáèíó êîððåêöèè, ïîñëå ôðàêòàëà, òî...
//...ïðîâåðèòü íå îòêîððåêòèðîâàëàñü ëè öåíà ñëèøêîì ãëóáîêî. Åñëè "äà" - íåò ñèãíàëà
if((DelKorStopOrder>0) &&
((B+Razmer*DelKorStopOrder*Point)>iLow(Symbol(),0,1)))
return (0);
NewOrder=true;
SelSL = A;
BuySL = 0.0;
if(ObeStor)
return (5);
//BUY
return (1);
}
if(A<B)
{
if((DelKorStopOrder>0) &&
((B-Razmer*DelKorStopOrder*Point)<iHigh(Symbol(),0,1)))
return (0);
NewOrder=true;
BuySL = A;
SelSL = 0.0;
if(ObeStor)
return (5);
//SELL
return (2);
}
return (0);
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
int start()
{
if(isNeedToDeinit) return (0);
int temp;
int cnt;
int ticket;
int total;
static int BBars=0;
static bool New_Bar=true;
//--------------------------------------------------------------------------
//Ïðîâåðèòü ïîÿâëåíèå íîâîé ñâå÷è
//--------------------------------------------------------------------------
if(BBars==iBars(Symbol(),SigTfFr))
New_Bar=false;
else//if (BBars != iBars (Symbol (), SigTfFr))
{
BBars=iBars(Symbol(),SigTfFr);
New_Bar=true;
}
//--------------------------------------------------------------------------
//Íà êàæäîé çàâåðøèâøåéñÿ ñâå÷å ïðîâåðèòü íàëè÷èå è òèï ñèãíàëà. Ñèãíàë
//ìîæåò âîçíèêàòü ÒÎËÜÊÎ íà òîëüêî ÷òî çàâåðøèâøåéñÿ ñâå÷å
//--------------------------------------------------------------------------
BuyCondition=false;
SellCondition=false;
if(New_Bar)
{
//Íå îòêîððåêòèðîâàëàñü ëè öåíà ïî îòíîøåíèþ ê ïîñëåäíåìó èçâåñòíîìó
//êîëåíó ïîñëåäíåé èçâåñòíîé ñòðóêòóðû ABCD ñëèøêîì ãëóáîêî? Åñëè íå
//ñëèøêîì, òî åñòü ñèãíàë (èëè äàæå ñðàçó â îáå ñòîðîíû). Òåïåðü ìîæíî
//ïðèñòóïèòü â ò. ÷. ê âû÷èñëåíèþ ñòîïà è òåéê-ïðîôèòà
temp = Crossed ();
if(1 == temp)
BuyCondition=true;
if(2==temp)
SellCondition=true;
if(5==temp)
{
SellCondition= true;
BuyCondition = true;
}
}
//==========================================================================
//Íàéòè âñå îòêðûòûå îðäåðà è ðàáîòàòü ñ íèìè... Óäàëèòü îòëîæêè è òðàëèòü
//==========================================================================
Kol_B_S=0;
DelBS = false;
DelSS = false;
LotB = 0;
LotS = 0;
total= OrdersTotal();
for(cnt=0; cnt<total; cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
ticket=OrderTicket();
iTicket=ticket;
//buy
if((OdnaStor) && (OrderType()==1))
DelBS=true;
//sell
if((OdnaStor) && (OrderType()==0))
DelSS=true;
//ÏÎÄÑ×¨Ò ÊÎËÈ×ÅÑÒÂÀ ÎÒÊÐÛÒÛÕ ÏÎÇÈÖÈÉ
if((OrderType()==1) || (OrderType()==0))
Kol_B_S++;
if((OdnaStor) && (BuyCondition) && (OrderType()==1))
BuyCondition=false;
if((OdnaStor) && (SellCondition) && (OrderType()==0))
SellCondition=false;
if(OrderType()==OP_BUY)
LotB=LotB+OrderLots();
if(OrderType()==OP_SELL)
LotS=LotS+OrderLots();
}
}
//==========================================================================
//Íàéòè âñå îòêðûòûå îðäåðà è êàæäûé îáðàáîòàòü. Óäàëÿòü îòëîæêè, òðàëèòü TP
//==========================================================================
//MasTekOrder ();
total=OrdersTotal();
for(cnt=0; cnt<total; cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
ticket=OrderTicket();
iTicket=ticket;
for(int 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 (OP_SELLSTOP == OrderType () && OrderSymbol () == Symbol ())
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())
{
temp=0;
if(DelSS)
temp=1;
if(SignalDelOldOtl && SellCondition)
temp=1;
if(SignalDelOldOtlAll && (BuyCondition || SellCondition))
temp=1;
if((0<DelKorStopOrder) && !OtmerennyiHod &&
((MB-MRazmer*DelKorStopOrder*Point)<iHigh(Symbol(),0,1)))
temp=1;
//if ((DelBStopOrder) && MB<iHigh(Symbol(),0,1))
// temp = 1;
if(1==temp)
CloseOrder(OrderType());
if(OtmerennyiHod && (1!=temp))
MasOtmerHod(ticket);
}
//Ïðîâåðèòü ïðèîðèòåòû ìåæäó '==' è '&&'!!!
// if (OP_BUYSTOP == OrderType () && OrderSymbol () == Symbol ())
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
//if (OP_BUYSTOP == OrderType () && OrderSymbol () == Symbol() &&
// Magic == StrToInteger (StringSubstr (DoubleToStr (OrderMagicNumber (), 0), 0, 3)))
{
temp=0;
if(DelBS)
temp=1;
if(SignalDelOldOtl && BuyCondition)
temp=1;
if(SignalDelOldOtlAll && (BuyCondition || SellCondition))
temp=1;
if((0<DelKorStopOrder) && !OtmerennyiHod &&
((MB+MRazmer*DelKorStopOrder*Point)>iLow(Symbol(),0,1)))
temp=1;
//if (DelBStopOrder && MB>iLow(Symbol(),0,1))
// tmp1 = 1;
if(1==temp)
CloseOrder(OrderType());
if(OtmerennyiHod && (1!=temp))
MasOtmerHod(ticket);
}
//******************************************************************
//ÒÐÀË
//******************************************************************
//Ïðîâåðèòü ïðèîðèòåòû ìåæäó '==' è '&&'!!!
// if (OP_SELL == OrderType () && OrderSymbol () == Symbol ())
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if(OtmerennyiHod)
MasOtmerHod(ticket);
TrailingByZ(iTicket,iTmfrm,Bars_kol,iIndent,bTrlinloss);
}
//Ïðîâåðèòü ïðèîðèòåòû ìåæäó '==' è '&&'!!!
// if (OP_BUY == OrderType () && OrderSymbol () == Symbol ())
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(OtmerennyiHod)
MasOtmerHod(ticket);
TrailingByZ(iTicket,iTmfrm,Bars_kol,iIndent,bTrlinloss);
}
}
}
//==========================================================================
//Âûñòàâèòü îòëîæêè
//==========================================================================
total=OrdersTotal();
SLTP();//Ðàñ÷åò sl è tp îòêðûâàåìûõ îðäåðîâ
Lots=Lot;
if(LotProiz)
{
Lots=(Lot *(Kol_B_S+1) *2);//ïèïåö... ÿ ñàì â øîêå ;-)
if(0== Lots) Lots = Lot;
}
if(total<MaxOrder)
{
if(BuyCondition)
ticket=OpenOrder(OP_BUYSTOP);
if(SellCondition)
ticket=OpenOrder(OP_SELLSTOP);
}
BuyCondition=false;
SellCondition=false;
//Óäàëèòü ïî äåíüãàì
if(isCloseAllByTargetProfit)
//Ïðèáûëü-óáûòêè îïðåäåëÿþòñÿ ïî âñåì îðäåðàì, à íå òîëüêî ïî îðäåðàì
//ýêñïåðòà, ÷òî åñòü... ÊÎÑßÊ!!!
if((AccountProfit()<-TargetLoss) ||
(AccountProfit()>TargetProfit))
{
if(isProcessingUserOrdrs)
{
ClosePosFirstProfit();
DeleteOrders();
}
else
{
ClosePosFirstProfit("0",-1,MagicNumber);
DeleteOrders("0",-1,MagicNumber);
}
}
//Óäàëèòü ïî ïóíêòàì
//ÇÀÃÎÒÎÂÊÀ
int sum;
if(isCloseAllByTargetPoints)
{
sum=0;
//
//Êðàéíå íåýôôåêòèâíûé àëãîðèòì îïðåäåëåíèÿ ñóììàðíîãî êîëè÷åñòâà
//íàêîïëåííûõ ïóíêòîâ óáûòêà èëè ïðèáûëè
//
for(cnt=0; cnt<total; cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol())
{
if(!isProcessingUserOrdrs &&
(OrderMagicNumber()==MagicNumber))
{
if(OP_SELL==OrderType())
sum=(OrderOpenPrice()-Ask)/Point;
if(OP_BUY==OrderType())
sum=(Bid-OrderOpenPrice())/Point;
}
else if(isProcessingUserOrdrs)
{
if(OP_SELL==OrderType())
sum=(OrderOpenPrice()-Ask)/Point;
if(OP_BUY==OrderType())
sum=(Bid-OrderOpenPrice())/Point;
}
}
}
}
if((-AllOrdrsSumLossInPoints>=sum) ||
(AllOrdrsSumPrftInPoints<=sum))
{
if(isProcessingUserOrdrs)
{
ClosePosFirstProfit();
DeleteOrders();
}
else
{
ClosePosFirstProfit("0",-1,MagicNumber);
DeleteOrders("0",-1,MagicNumber);
}
}
}
return (0);
}
//+----------------------------------------------------------------------------+
// Ðàñ÷åò SL, TP è Open Price
//+----------------------------------------------------------------------------+
void SLTP()
{
double temp;
SStp = 0;
SSsl = 0;
BStp = 0;
BSsl = 0;
BSotl = 0;
SSotl = 0;
if(0<KoefProfit)
{
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(0<KoefProfit)
{
BStp=A+Razmer*KoefProfit*Point;
}
BSotl=A+Otstup*Point+Razmer*OtstupProc*Point;
if(StopLos)
//Äåëèòü íóæíî íà '/ 2.0' èëè '* 0.5'
BSsl=B-Otstup/2*Point;
if(ObeStor)
{
temp=B;
B = A;
A = temp;
}
}
//+----------------------------------------------------------------------------+
//To open orders with fixin into array
//+----------------------------------------------------------------------------+
int OpenOrder(
int type
)
{
//Èùåì è çàíîñèì â Ìàññèâ Mas_Ord_Tek âñå òåêóùèå îðäåðà
MasTekOrder();
SravMas();
int err=0;
int ticket=0;
int c=0;
double stplvl;
double frzlvl;
stplvl = MarketInfo (Symbol (), MODE_STOPLEVEL) * Point;
frzlvl = MarketInfo (Symbol (), MODE_FREEZELEVEL) * Point;
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++)
{
if(((Ask+stplvl)<=BSotl) && ((Ask+frzlvl)<=BSotl))
{
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,
BSotl,//price
Slippage,
BSsl,//stop
BStp,//profit
ExpertComment,MagicNumber,0,Green);
err=GetLastError();
if(0==err)
{
ZapOrdMas(ticket);
break;
}
else
{
//Busy errors
if(err==4 || err==137 || err==146 || err==136)
{
Sleep(60);
continue;
}
else//normal error
//ZapOrdMas (ticket);
break;
}
}
}//The end of 'for Number Of Tries'
}//The end of 'for Max Orders in the Net / Setka'
}
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++)
{
if(((Bid-stplvl)>=SSotl) && ((Bid-frzlvl)>=SSotl))
{
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,
SSotl,//price
Slippage,
SSsl,//stop
SStp,//profit
ExpertComment,MagicNumber,0,Red);
err=GetLastError();
if(0==err)
{
//Write this order and it's chars to aray
ZapOrdMas(ticket);
break;
}
else
{
//Busy errors
if(err==4 || err==137 || err==146 || err==136)
{
Sleep(60);
continue;
}
else//normal error
break;
}
}
}//The end of 'for Number Of Tries'
}//The end of 'for Max Orders in the Net / Setka'
}
return (ticket);
}
//+------------------------------------------------------------------+
//To close pending orders
//+------------------------------------------------------------------+
bool CloseOrder(
int type
)
{
if(type==OP_BUYSTOP)
return (OrderDelete (OrderTicket ()));
if(type==OP_SELLSTOP)
return (OrderDelete (OrderTicket ()));
return (0);
}
//+----------------------------------------------------------------------------+
//Çàïèñàòü èç Massiv â Ôàéë (ðåçåðâíîå êîïèðîâàíèå)
//+----------------------------------------------------------------------------+
void FilesWrite()
{
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);
}
//+----------------------------------------------------------------------------+
//Ïðî÷èòàòü èç ôàéëà â Massiv (ðåçåðâíîå êîïèðîâàíèå)
//+----------------------------------------------------------------------------+
void FilesOpen()
{
int h=FileOpen("Massiv.bin",FILE_BIN|FILE_READ);
if(h<1)
Print("Ôàéë Massiv.bin íå îáíàðóæåí, ïîñëåäíÿÿ îøèáêà ",GetLastError());
int s=FileReadInteger(h,LONG_VALUE);
ArrayResize(Massiv,s);
FileReadArray(h,Massiv,0,s);
FileClose(h);
}
//+----------------------------------------------------------------------------+
//Íàéòè è çàíåñòè â Ìàññèâ "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) && (OrderSymbol()==Symbol()))
{
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 SravMas()
{
int oo;
int f;
int g;
for(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(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(g=0; g<=7; g++)//Îáíóëÿåì âñþ ñòðîêó
{
Massiv[f][g]=0;//çàïîëíÿåì 0-ìè
if(Massiv[0][3]== 0)
Massiv[0][3]=f;//Çàïîìèíàåì ïóñòóþ ñòðîêó äëÿ çàïèñè íîâûõ îðäåðîâ
}
}
}
}
//==============================================================================
//Çàïîìíèòü îðäåðà â ìàññèâ
//==============================================================================
void ZapOrdMas(
int ticket
)
{
double temp;
int pusto;
int f;
MasTekOrder();//Èùåì è çàíîñèì â Ìàññèâ Mas_Ord_Tek âñå îðäåðà
SravMas();
pusto= Massiv[0][3];
if(0 == pusto)
{
//Ïåðåáèðàåì âåñü ìàññèâ â ïîèñêàõ ïóñòûõ ñòðîê
for(f=1; f<=30; f++)
{
//åñëè íåò ticket çíà÷èò ñòðîêà ïóñòà
if((0==pusto) && (0==Massiv[f][4]))
{
pusto=f;
break;
}
}
}
for(i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS) &&
(OrderSymbol()==Symbol()) &&
(ticket==OrderTicket()))
{
if(ObeStor && (Ak>Bk) && (OrderType()==OP_BUYSTOP))
{
temp=B;
B = A;
A = temp;
}
if(ObeStor && (Ak<Bk) && (OrderType()==OP_SELLSTOP))
{
temp=B;
B=A; A=temp;
}
Massiv[pusto][1] = A;
Massiv[pusto][2] = B;
Massiv[pusto][3] = 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()==OP_BUYSTOP))
{
temp=B;
B = A;
A = temp;
}
//SELLSTOP
if(ObeStor && (Ak<Bk) && (OrderType()==OP_SELLSTOP))
{
temp=B;
B = A;
A = temp;
}
if(SaveMassiv)
{
FilesWrite();
}
}
}
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
void MasOtmerHod(
int ticket
)
{
int m;
int isDel;
double Target;
double stplvl;
double frzlvl;
bool x;
stplvl = MarketInfo (Symbol (), MODE_STOPLEVEL) * Point;
frzlvl = MarketInfo (Symbol (), MODE_FREEZELEVEL) * Point;
for(m=1; m<=30; m++)
{
if((Massiv[m][4]==ticket))
break;
}
for(i=0; i<OrdersTotal(); i++)//Àíàëèç ïî âñåì îðäåðàì òåðìèíàëà
{
if(OrderSelect(i,SELECT_BY_POS) &&
(OrderSymbol () == Symbol ()) &&
(OrderTicket () == ticket))
{
isDel=0;
//
//BUY
//
if(
OtmerennyiHod &&
((Massiv[m][6]==0) || (Massiv[m][6]==4)))
{
if((0<DelKorStopOrder) &&
(Massiv[m][6]==4) &&
((Massiv[m][2]+Massiv[m][3] *DelKorStopOrder*Point)
>iLow(Symbol(),0,1)))
if(CloseOrder(OrderType()))
isDel=1;
OpBar=iBarShift(Symbol(),0,MTime)+1;
OtkatBar=iLowest(Symbol(),0,MODE_LOW,OpBar,1);
OtkatCena=iLow(Symbol(),0,OtkatBar);
Hod=MRazmer;
Target=NormalizeDouble(OtkatCena+Hod*KoefProfit*Point,Digits);
if(0==isDel)
if(Target!=OrderTakeProfit())
if(((Bid+stplvl)<=Target) && ((Bid+frzlvl)<=Target))
x = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Target,0,Yellow);
}
isDel=0;
//
//SELL
//
if(
OtmerennyiHod &&
((Massiv[m][6]==1) || (Massiv[m][6]==5)))
{
if((0<DelKorStopOrder) &&
(Massiv[m][6]==5) &&
((Massiv[m][2]-Massiv[m][3] *DelKorStopOrder*Point)
<iHigh(Symbol(),0,1)))
if(CloseOrder(OrderType()))
isDel=1;
OpBar=iBarShift(Symbol(),0,MTime)+1;
OtkatBar=iHighest(Symbol(),0,MODE_HIGH,OpBar,1);
OtkatCena=iHigh(Symbol(),0,OtkatBar);
Hod=MRazmer;
Target=NormalizeDouble(OtkatCena-Hod*KoefProfit*Point,Digits);
if(0==isDel)
if(Target!=OrderTakeProfit())
if(((Ask-stplvl)>=Target) && ((Ask-frzlvl)>=Target))
x = OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),Target,0,Yellow);
}
}
}
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
void hlFractal()
{
//HIGH FRACTALS
hk1 = 0;
hk2 = 0;
k=kstart;
while(1>hk1)
{
hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
if(0<hf)
{
hk1= k;
h1 = hf;
}
k++;
//Anti endless cycle trigger
if(1023<k) break;
}
k=k+1;
while(1>hk2)
{
hf=iCustom(Symbol(),TfFr,"Fr",BarsFr,0,k);
if(0<hf)
{
hk2= k;
h2 = hf;
}
k++;
//Anti endless cycle trigger
if(1023<k) break;
}
//LOW FRACTALS
lk1 = 0;
lk2 = 0;
k=kstart;
while(1>lk1)
{
lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
if(0<lf)
{
lk1= k;
l1 = lf;
}
k++;
//Anti endless cycle trigger
if(1023<k) break;
}
k=k+1;
while(1>lk2)
{
lf=iCustom(Symbol(),TfFr,"Fr",BarsFr,1,k);
if(lf>0)
{
lk2= k;
l2 = lf;
}
k++;
//Anti endless cycle trigger
if(1023<k) break;
}
}
//******************************************************************************
//Ñïèñîê âûçûâàåìûõ ôóíêöèé:
//- èñïîëüçóåò ÂÍÅØÍÈÉ èíäèêàòîð Fr
//Ñïèñîê âûçûâàþùèõ ôóíêöèé:
//- TrailingByZ
//Ýòè ðàçäåëÿåìûå ìåæäó äâóìÿ ôóíêöèÿìè òðàëà
//- hTralFr
//- lTralFr
//******************************************************************************
void TralFractal()
{
int a;
int Tmfrm;
k=0;
hTralFr=0;
hf=0;
Tmfrm = iTmfrm;
for(a = 0; a < Frktl_kol; a++)
{
hTralFr=0;
while(1>hTralFr)
{
hf=iCustom(Symbol(),Tmfrm,"Fr",Frktl_bars,0,k);
if(0<hf)
hTralFr=k;
k++;
}
}
k=0;
lTralFr=0;
lf=0;
for(a=0; a<Frktl_kol; a++)
{
lTralFr=0;
while(1>lTralFr)
{
lf=iCustom(Symbol(),Tmfrm,"Fr",Frktl_bars,1,k);
if(0<lf)
lTralFr=k;
k++;
}
}
}
//******************************************************************************
//Ñïèñîê ãëîáàëüíûõ ïåðåìåííûõ, ê êîòîðûì îáðàùàåòñÿ ôóíêöèÿ:
//- ÍÀÄÎ ÇÀÏÎËÍÈÒÜ ÑÏÈÑÎÊ!!!
//Ñïèñîê âûçûâàåìûõ ôóíêöèé:
//- TralFractal, êîòîðàÿ:
// èñïîëüçóåò ÂÍÅØÍÈÉ èíäèêàòîð Fr!
//Ýòè - ðàçäåëÿåìûå ìåæäó äâóìÿ ôóíêöèÿìè òðàëà
//- hTralFr,
//- lTralFr
//Ýòè - ðàçäåëÿåìûå ìåæäó òåêóùåé ôóíêöèåé òðàëà è ñèãíàëüíîé
//- SelSL,
//- BuySL
//******************************************************************************
int TrailingByZ(
int ticket,
int tmfrm,
int bars_n,
int indent,
bool trlinloss
)
{
TralFractal();
//int i;
double new_extremum;
//ïðîâåðÿåì ïåðåäàííûå çíà÷åíèÿ
if(0==ticket)
return (0);
if(!OrderSelect(ticket,SELECT_BY_TICKET))
return (0);
if(0>indent)
return (0);
if(
(tmfrm!=1) && (tmfrm!=5) && (tmfrm!=15) &&
(tmfrm!=30) && (tmfrm!=60) && (tmfrm!=240) &&
(tmfrm!=1440) && (tmfrm!=10080) && (tmfrm!=43200)
)
return (0);
int IndMin;
int IndMax;
double stplvl;
double tmp0sl;
double tmp0;
bool x;
stplvl = MarketInfo (Symbol (), MODE_STOPLEVEL) * Point;
tmp0sl = OrderStopLoss ();
//Åñëè äëèííàÿ ïîçèöèÿ (OP_BUY) - íàéòè ìèíèìóì ñðåäè bars_n ñâå÷åé
if(OP_BUY==OrderType())
{
if(0<Frktl_kol)
{
IndMin=ArrayMinimum(Low,lTralFr,1);
//******************************************************************************
//Îòñþäà è äàëåå ÒÐÈÆÄÛ îäíà è òà æå ôîðìóëà ïðè ÇÀÏÓÒÀÍÍÛÕ îáñòîÿòåëüñòâàõ
//
new_extremum=iLow(Symbol(),tmfrm,IndMin);
}
if(0<Bars_kol)
for(i=1; i<=bars_n; i++)
{
if(1==i)
new_extremum=iLow(Symbol(),tmfrm,i);
else if(new_extremum>iLow(Symbol(),tmfrm,i))
new_extremum=iLow(Symbol(),tmfrm,i);
//
//******************************************************************************
}
if((0.0<BuySL) && SLSignal)
new_extremum=BuySL;
tmp0=NormalizeDouble(new_extremum-indent*Point,Digits);
if(trlinloss ||
(!trlinloss && (tmp0>OrderOpenPrice())))
if(((tmp0>tmp0sl) || (0.0==tmp0sl)) &&
(tmp0<Bid-stplvl))
x = OrderModify(ticket,OrderOpenPrice(),tmp0,OrderTakeProfit(),OrderExpiration());
}
//Åñëè êîðîòêàÿ ïîçèöèÿ (OP_SELL) - íàéòè ìèíèìóì ñðåäè bars_n ñâå÷åé
if(OP_SELL==OrderType())
{
if(0<Frktl_kol)
{
IndMax=ArrayMaximum(High,hTralFr,1);//èíäåêñ áàðà
//******************************************************************************
//Îòñþäà è äàëåå ÒÐÈÆÄÛ îäíà è òà æå ôîðìóëà ïðè ÇÀÏÓÒÀÍÍÛÕ îáñòîÿòåëüñòâàõ
//
new_extremum=iHigh(Symbol(),tmfrm,IndMax);
}
if(0<Bars_kol)
for(i=1; i<=bars_n; i++)
{
if(1==i)
new_extremum=iHigh(Symbol(),tmfrm,i);
else if(new_extremum<iHigh(Symbol(),tmfrm,i))
new_extremum=iHigh(Symbol(),tmfrm,i);
//
//******************************************************************************
}
if((0.0<SelSL) && SLSignal)
new_extremum=SelSL;
tmp0 = MarketInfo (Symbol (), MODE_SPREAD);
tmp0 = indent + tmp0;
tmp0 = NormalizeDouble (new_extremum + tmp0 * Point, Digits);
if(trlinloss ||
(!trlinloss && (tmp0<OrderOpenPrice())))
if(((tmp0<tmp0sl) || (0.0==tmp0sl)) &&
(tmp0>Ask+stplvl))
x = OrderModify(ticket,OrderOpenPrice(),tmp0,OrderTakeProfit(),OrderExpiration());
}
return (0);
}
//+----------------------------------------------------------------------------+
//| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Âåðñèÿ : 19.02.2008 |
//| Îïèñàíèå: Çàêðûòèå îäíîé ïðåäâàðèòåëüíî âûáðàííîé ïîçèöèè |
//+----------------------------------------------------------------------------+
void ClosePosBySelect()
{
bool fc;
color clClose;
double ll;
double pa;
double pb;
double pp;
int err;
int it;
if((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
{
for(it=1; it<=NumberOfTry; it++)
{
if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
break;
while(!IsTradeAllowed())
Sleep(sleepMilliSecToDelOrdrs);
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(err==146)
while(IsTradeContextBusy())
Sleep(sleepMilliSecToDelOrdrs+sleepMilliSecToDelOrdrs);
Sleep(sleepMilliSecToDelOrdrs);
}
}
}
}
//| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| 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 - ëþáàÿ ïîçèöèÿ) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
void ClosePosFirstProfit(
string sy = "0",
int op = -1,
int mn = -1
)
{
k=OrdersTotal();
if(sy == "0")
sy = Symbol ();
//Ñíà÷àëà çàêðûâàåì ïðèáûëüíûå ïîçèöèè
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(((OrderSymbol()==sy) || (sy=="")) &&
((op<0) || (OrderType()==op)))
{
if((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
{
if((mn<0) || (OrderMagicNumber()==mn))
{
if((OrderProfit()+OrderSwap())>0.0)
ClosePosBySelect();
}
}
}
}
}
//Ïîòîì âñå îñòàëüíûå
k=OrdersTotal();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(((OrderSymbol()==sy) || sy=="") &&
((op<0) || (OrderType()==op)))
{
if((OrderType()==OP_BUY) || (OrderType()==OP_SELL))
{
if((mn<0) || (OrderMagicNumber()==mn))
ClosePosBySelect();
}
}
}
}
}
//+----------------------------------------------------------------------------+
//| Óäàëèòü îðäåðà |
//+----------------------------------------------------------------------------+
//| Ïàðàìåòðû: |
//| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, |
//| NULL - òåêóùèé ñèìâîë) |
//| op - îïåðàöèÿ (-1 - ëþáîé îðäåð) |
//| mn - MagicNumber (-1 - ëþáîé ìàãèê) |
//+----------------------------------------------------------------------------+
void DeleteOrders(
string sy = "0",
int op = -1,
int mn = -1
)
{
bool fd;
int it;
int ot;
k=OrdersTotal();
if(sy == "0")
sy = Symbol ();
for(i = k - 1; i >= 0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
ot=OrderType();
if((OP_SELL!=ot) && (OP_BUY!=ot))
{
if(((OrderSymbol () == sy) || (sy == "")) &&
((op < 0) || (ot == op)))
{
if((mn<0) || (OrderMagicNumber()==mn))
{
for(it=1; it<=NumberOfTry; it++)
{
if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
break;
// while (!IsTradeAllowed ())
Sleep(sleepMilliSecToDelOrdrs);
fd=OrderDelete(OrderTicket(),clDelete);
if(fd)
// {
// if (UseSound) PlaySound (SoundSuccess); break;
break;
// } else {
// err=GetLastError();
// if (UseSound) PlaySound (SoundError);
// Print ("Error (", err, ") delete order ",
// GetNameOP (ot), ": ", ErrorDescription (err),
// ", try ", it);
// Sleep (1000 * 5);
// }
}
}
}
}
}
}
}
//+------------------------------------------------------------------+
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
---