Orders Execution
0
Views
0
Downloads
0
Favorites
MartinHandRand
//+------------------------------------------------------------------+
//| expMartin_v2_1.mq4 |
//| Dmitriy Epshteyn |
//| setkafx@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Dmitriy Epshteyn"
#property link "setkafx@mail.ru"
#property version "1.00"
#property strict
extern bool Trade_Stop_After_TP=false; // îñòàíîâèòü òîðãîâëþ, åñëè ïîñëåäíèé îðäåð çàêðûëñÿ â ïðîôèòå
extern bool Run_Alltime=true; // Íà÷èíàòü ðàáîòó çàíîâî ïîñëå ïîñëåäíåãî ïðèêàçà
extern double Lots=0.1; //ñòàðòîâûé ëîò
extern double Factor=2.0; //ìíîæèòåëü ëîòà
extern int Limit =1; //îãðàíè÷åíèå êîëè÷åñòâà óìíîæåíèé ëîòà
extern int SL =100; //óðîâåíü îãðàíè÷åíèÿ óáûòêîâ
extern int TP =100; //óðîâåíü ôèêñàöèè ïðèáûëè
extern int Slip=0;// ïðîñêàëüçûâàíèå
extern int Magic=1000; //èíäèâèäóàëüíûé íîìåð ýêñïåðòà (áóäåò ìåíÿòüñÿ îò ÷èñëà Magic äî Magic+50)
extern string A1="Ïîñëåäîâàòåëüíîñòü buy è sell";
extern int Type1 =0; //1 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type2 =0; //2 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type3 =1; //3 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type4 =1; //4 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type5 =0; //5 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type6 =1; //6 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type7 =0; //7 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type8 =1; //8 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type9 =0; //9 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type10 =0; //10 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type11 =1; //11 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type12 =1; //12 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type13 =0; //13 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type14 =0; //14 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type15 =0; //15 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type16 =0; //16 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type17 =0; //17 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type18 =0; //18 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type19 =0; //19 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type20 =0; //20 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type21 =0; //21 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type22 =0; //22 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type23 =0; //23 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type24 =0; //24 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type25 =0; //25 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type26 =0; //26 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type27 =0; //27 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type28 =0; //28 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type29 =0; //29 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type30 =0; //30 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type31 =0; //31 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type32 =0; //32 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type33 =0; //33 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type34 =0; //34 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type35 =0; //35 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type36 =0; //36 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type37 =0; //37 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type38 =0; //38 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type39 =0; //39 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type40 =0; //40 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type41 =0; //41 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type42 =0; //42 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type43 =0; //43 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type44 =0; //44 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type45 =0; //45 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type46 =0; //46 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type47 =0; //47 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type48 =0; //48 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type49 =0; //49 òèï îðäåðà, 0-BUY, 1-SELL
extern int Type50 =0; //50 òèï îðäåðà, 0-BUY, 1-SELL
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double sl=NormalizeDouble(SL*Point,Digits);
double tp=NormalizeDouble(TP*Point,Digits);
int b=0,s=0,n=0,magic_current=0,total=OrdersTotal();
for(int i1=total-1; i1>=0; i1--)
if(OrderSelect(i1,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()>=Magic && OrderMagicNumber()<=Magic+50)
{
if(OrderType()==OP_BUY)
{
b++;n++;magic_current=OrderMagicNumber();
if((Bid<=OrderOpenPrice()-sl) || Bid>=OrderOpenPrice()+tp) {int cl=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,0);}
}
if(OrderType()==OP_SELL)
{
s++;n++;magic_current=OrderMagicNumber();
if((Ask>=OrderOpenPrice()+sl) || Ask<=OrderOpenPrice()-tp) {int cl=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,0);}
}
}
//--------------èñòîðèÿ îðäåðîâ--------------
int accTotal1=OrdersHistoryTotal();
int loss=0; // êîë-âî îðäåðîâ, çàêðûòûõ â ïîäðÿä ñ óáûòêîì
for(int h_1=accTotal1-1;h_1>=0;h_1--)
if(OrderSelect(h_1,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()>=Magic && OrderMagicNumber()<=Magic+50)
{
if(OrderProfit()<0) {loss++; }
if(OrderProfit()>0) {break;}
}
static datetime time;
if(time==0) {time=TimeCurrent();}
double h_Lot=0; // ëîò ïîñëåäíåãî îðäåðà
double last_profit=0; // ïðîôèò ïîñëåäíåãî çàêðûòîãî îðäåðà
for(int h_2=accTotal1-1;h_2>=0;h_2--)
if(OrderSelect(h_2,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()>=Magic && OrderMagicNumber()<=Magic+50)
{
if(OrderCloseTime()>time) {h_Lot=OrderLots(); last_profit=OrderProfit()+OrderSwap()+OrderCommission(); break;}
}
int last_magic=0; // ìåäæèê ïîñëåäíåãî çàêðûòîãî îðäåðà
int orders = 0;
for(int h_3=accTotal1-1;h_3>=0;h_3--)
if(OrderSelect(h_3,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()>=Magic && OrderMagicNumber()<=Magic+50)
{
if(OrderCloseTime()>=time) {last_magic=OrderMagicNumber(); break;}
if(OrderCloseTime()<time) {break;}
}
//-----------------Ëîò-------------------------
double lots_step=MarketInfo(Symbol(),MODE_LOTSTEP);
int lots_digits = 0;
//----
if(lots_step==0.01)
{lots_digits=2;}
//----
if(lots_step==0.1)
{lots_digits=1;}
//----
if(lots_step==1.0)
{lots_digits=0;}
//-
double Lot=0;
if(last_profit==0) {Lot=Lots;} // ìíîæèì ëîò â ëþáîì ñëó÷àå
if((last_profit>0) || (last_profit<0 && loss>Limit)) {Lot=Lots;} // åñëè ïîñëåäíèé îðäåð â ïðîôèòå ëèáî åñëè âïîäðÿä óáûòî÷íûõ îðäåðîâ çàêðûòî áîëüøå äîïóñòèìîãî, âîçâðàùàåìñÿ ê íà÷àëüíîìó ëîòó
if(last_profit<0 && loss<=Limit) {Lot=NormalizeDouble(MathCeil((h_Lot*Factor)/lots_step)*lots_step,lots_digits);} // ìíîæèì ëîò, åñëè ïîñëåäíèé îðäåð óáûòî÷íûé
double lots_test=Lot;
lots_test=NormalizeDouble(MathCeil((lots_test*Factor)/lots_step)*lots_step,lots_digits);
if(lots_test<Lot) {Lot=Lots;}
double One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
if(AccountFreeMargin()<One_Lot*Lot) {Comment("Not enough money to open a lot=",DoubleToStr(Lot,2)); return;} // íå õâàòàåò äåíåã äëÿ îòêðûòèÿ ëîòà
//------ ðàáîòà ñ ìåäæèêàìè--------
int magic=0;
int sig=0; // åñëè áóäåò ðàâåí 0, òî ïîêóïêà, åñëè áóäåò ðàâåí 1, òî ïðîäàæà
if(last_magic==0&&Type1==0) {sig=0;magic=Magic+1;} // íå áûëî îðäåðà ïîñëå äîáàâëåíèÿ íà ãðàôèê,ïîøåë ïåðâûé öèêë
if(last_magic==0&&Type1==1) {sig=1;magic=Magic+1;} // íå áûëî îðäåðà ïîñëå äîáàâëåíèÿ íà ãðàôèê,ïîøåë ïåðâûé öèêë
if(last_magic==Magic+1&&Type2==0) {sig=0;magic=Magic+2;} // ïðèêàç 2
if(last_magic==Magic+1&&Type2==1) {sig=1;magic=Magic+2;} // ïðèêàç 2
if(last_magic==Magic+2&&Type3==0) {sig=0;magic=Magic+3;} // ïðèêàç 3
if(last_magic==Magic+2&&Type3==1) {sig=1;magic=Magic+3;} // ïðèêàç 3
if(last_magic==Magic+3&&Type4==0) {sig=0;magic=Magic+4;} // ïðèêàç 4
if(last_magic==Magic+3&&Type4==1) {sig=1;magic=Magic+4;} // ïðèêàç 4
if(last_magic==Magic+4&&Type5==0) {sig=0;magic=Magic+5;} // ïðèêàç 5
if(last_magic==Magic+4&&Type5==1) {sig=1;magic=Magic+5;} // ïðèêàç 5
if(last_magic==Magic+5&&Type6==0) {sig=0;magic=Magic+6;} // ïðèêàç 6
if(last_magic==Magic+5&&Type6==1) {sig=1;magic=Magic+6;} // ïðèêàç 6
if(last_magic==Magic+6&&Type7==0) {sig=0;magic=Magic+7;} // ïðèêàç 7
if(last_magic==Magic+6&&Type7==1) {sig=1;magic=Magic+7;} // ïðèêàç 7
if(last_magic==Magic+7&&Type8==0) {sig=0;magic=Magic+8;} // ïðèêàç 8
if(last_magic==Magic+7&&Type8==1) {sig=1;magic=Magic+8;} // ïðèêàç 8
if(last_magic==Magic+8&&Type9==0) {sig=0;magic=Magic+9;} // ïðèêàç 9
if(last_magic==Magic+8&&Type9==1) {sig=1;magic=Magic+9;} // ïðèêàç 9
if(last_magic==Magic+9&&Type10==0) {sig=0;magic=Magic+10;} // ïðèêàç 10
if(last_magic==Magic+9&&Type10==1) {sig=1;magic=Magic+10;} // ïðèêàç 10
if(last_magic==Magic+10&&Type11==0) {sig=0;magic=Magic+11;} // ïðèêàç 11
if(last_magic==Magic+10&&Type11==1) {sig=1;magic=Magic+11;} // ïðèêàç 11
if(last_magic==Magic+11&&Type12==0) {sig=0;magic=Magic+12;} // ïðèêàç 12
if(last_magic==Magic+11&&Type12==1) {sig=1;magic=Magic+12;} // ïðèêàç 12
if(last_magic==Magic+12&&Type13==0) {sig=0;magic=Magic+13;} // ïðèêàç 13
if(last_magic==Magic+12&&Type13==1) {sig=1;magic=Magic+13;} // ïðèêàç 13
if(last_magic==Magic+13&&Type14==0) {sig=0;magic=Magic+14;} // ïðèêàç 14
if(last_magic==Magic+13&&Type14==1) {sig=1;magic=Magic+14;} // ïðèêàç 14
if(last_magic==Magic+14&&Type15==0) {sig=0;magic=Magic+15;} // ïðèêàç 15
if(last_magic==Magic+14&&Type15==1) {sig=1;magic=Magic+15;} // ïðèêàç 15
if(last_magic==Magic+15&&Type16==0) {sig=0;magic=Magic+16;} // ïðèêàç 16
if(last_magic==Magic+15&&Type16==1) {sig=1;magic=Magic+16;} // ïðèêàç 16
if(last_magic==Magic+16&&Type17==0) {sig=0;magic=Magic+17;} // ïðèêàç 17
if(last_magic==Magic+16&&Type17==1) {sig=1;magic=Magic+17;} // ïðèêàç 17
if(last_magic==Magic+17&&Type18==0) {sig=0;magic=Magic+18;} // ïðèêàç 18
if(last_magic==Magic+17&&Type18==1) {sig=1;magic=Magic+18;} // ïðèêàç 18
if(last_magic==Magic+18&&Type19==0) {sig=0;magic=Magic+19;} // ïðèêàç 19
if(last_magic==Magic+18&&Type19==1) {sig=1;magic=Magic+19;} // ïðèêàç 19
if(last_magic==Magic+19&&Type20==0) {sig=0;magic=Magic+20;} // ïðèêàç 20
if(last_magic==Magic+19&&Type20==1) {sig=1;magic=Magic+20;} // ïðèêàç 20
if(last_magic==Magic+20&&Type21==0) {sig=0;magic=Magic+21;} // ïðèêàç 21
if(last_magic==Magic+20&&Type21==1) {sig=1;magic=Magic+21;} // ïðèêàç 21
if(last_magic==Magic+21&&Type22==0) {sig=0;magic=Magic+22;} // ïðèêàç 22
if(last_magic==Magic+21&&Type22==1) {sig=1;magic=Magic+22;} // ïðèêàç 22
if(last_magic==Magic+22&&Type23==0) {sig=0;magic=Magic+23;} // ïðèêàç 23
if(last_magic==Magic+22&&Type23==1) {sig=1;magic=Magic+23;} // ïðèêàç 23
if(last_magic==Magic+23&&Type24==0) {sig=0;magic=Magic+24;} // ïðèêàç 24
if(last_magic==Magic+23&&Type24==1) {sig=1;magic=Magic+24;} // ïðèêàç 24
if(last_magic==Magic+24&&Type25==0) {sig=0;magic=Magic+25;} // ïðèêàç 25
if(last_magic==Magic+24&&Type25==1) {sig=1;magic=Magic+25;} // ïðèêàç 25
if(last_magic==Magic+25&&Type26==0) {sig=0;magic=Magic+26;} // ïðèêàç 26
if(last_magic==Magic+25&&Type26==1) {sig=1;magic=Magic+26;} // ïðèêàç 26
if(last_magic==Magic+26&&Type27==0) {sig=0;magic=Magic+27;} // ïðèêàç 27
if(last_magic==Magic+26&&Type27==1) {sig=1;magic=Magic+27;} // ïðèêàç 27
if(last_magic==Magic+27&&Type28==0) {sig=0;magic=Magic+28;} // ïðèêàç 28
if(last_magic==Magic+27&&Type28==1) {sig=1;magic=Magic+28;} // ïðèêàç 28
if(last_magic==Magic+28&&Type29==0) {sig=0;magic=Magic+29;} // ïðèêàç 29
if(last_magic==Magic+28&&Type29==1) {sig=1;magic=Magic+29;} // ïðèêàç 29
if(last_magic==Magic+29&&Type30==0) {sig=0;magic=Magic+30;} // ïðèêàç 30
if(last_magic==Magic+29&&Type30==1) {sig=1;magic=Magic+30;} // ïðèêàç 30
if(last_magic==Magic+30&&Type31==0) {sig=0;magic=Magic+31;} // ïðèêàç 31
if(last_magic==Magic+30&&Type31==1) {sig=1;magic=Magic+31;} // ïðèêàç 31
if(last_magic==Magic+31&&Type32==0) {sig=0;magic=Magic+32;} // ïðèêàç 32
if(last_magic==Magic+31&&Type32==1) {sig=1;magic=Magic+32;} // ïðèêàç 32
if(last_magic==Magic+32&&Type33==0) {sig=0;magic=Magic+33;} // ïðèêàç 33
if(last_magic==Magic+32&&Type33==1) {sig=1;magic=Magic+33;} // ïðèêàç 33
if(last_magic==Magic+33&&Type34==0) {sig=0;magic=Magic+34;} // ïðèêàç 34
if(last_magic==Magic+33&&Type34==1) {sig=1;magic=Magic+34;} // ïðèêàç 34
if(last_magic==Magic+34&&Type35==0) {sig=0;magic=Magic+35;} // ïðèêàç 35
if(last_magic==Magic+34&&Type35==1) {sig=1;magic=Magic+35;} // ïðèêàç 35
if(last_magic==Magic+35&&Type36==0) {sig=0;magic=Magic+36;} // ïðèêàç 36
if(last_magic==Magic+35&&Type36==1) {sig=1;magic=Magic+36;} // ïðèêàç 36
if(last_magic==Magic+36&&Type37==0) {sig=0;magic=Magic+37;} // ïðèêàç 37
if(last_magic==Magic+36&&Type37==1) {sig=1;magic=Magic+37;} // ïðèêàç 37
if(last_magic==Magic+37&&Type38==0) {sig=0;magic=Magic+38;} // ïðèêàç 38
if(last_magic==Magic+37&&Type38==1) {sig=1;magic=Magic+38;} // ïðèêàç 38
if(last_magic==Magic+38&&Type39==0) {sig=0;magic=Magic+39;} // ïðèêàç 39
if(last_magic==Magic+38&&Type39==1) {sig=1;magic=Magic+39;} // ïðèêàç 39
if(last_magic==Magic+39&&Type40==0) {sig=0;magic=Magic+40;} // ïðèêàç 40
if(last_magic==Magic+39&&Type40==1) {sig=1;magic=Magic+40;} // ïðèêàç 40
if(last_magic==Magic+40&&Type41==0) {sig=0;magic=Magic+41;} // ïðèêàç 41
if(last_magic==Magic+40&&Type41==1) {sig=1;magic=Magic+41;} // ïðèêàç 41
if(last_magic==Magic+41&&Type42==0) {sig=0;magic=Magic+42;} // ïðèêàç 42
if(last_magic==Magic+41&&Type42==1) {sig=1;magic=Magic+42;} // ïðèêàç 42
if(last_magic==Magic+42&&Type43==0) {sig=0;magic=Magic+43;} // ïðèêàç 43
if(last_magic==Magic+42&&Type43==1) {sig=1;magic=Magic+43;} // ïðèêàç 43
if(last_magic==Magic+43&&Type44==0) {sig=0;magic=Magic+44;} // ïðèêàç 44
if(last_magic==Magic+43&&Type44==1) {sig=1;magic=Magic+44;} // ïðèêàç 44
if(last_magic==Magic+44&&Type45==0) {sig=0;magic=Magic+45;} // ïðèêàç 45
if(last_magic==Magic+44&&Type45==1) {sig=1;magic=Magic+45;} // ïðèêàç 45
if(last_magic==Magic+45&&Type46==0) {sig=0;magic=Magic+46;} // ïðèêàç 46
if(last_magic==Magic+45&&Type46==1) {sig=1;magic=Magic+46;} // ïðèêàç 46
if(last_magic==Magic+46&&Type47==0) {sig=0;magic=Magic+47;} // ïðèêàç 47
if(last_magic==Magic+46&&Type47==1) {sig=1;magic=Magic+47;} // ïðèêàç 47
if(last_magic==Magic+47&&Type48==0) {sig=0;magic=Magic+48;} // ïðèêàç 48
if(last_magic==Magic+47&&Type48==1) {sig=1;magic=Magic+48;} // ïðèêàç 48
if(last_magic==Magic+48&&Type49==0) {sig=0;magic=Magic+49;} // ïðèêàç 49
if(last_magic==Magic+48&&Type49==1) {sig=1;magic=Magic+49;} // ïðèêàç 49
if(last_magic==Magic+49&&Type50==0) {sig=0;magic=Magic+50;} // ïðèêàç 50
if(last_magic==Magic+49&&Type50==1) {sig=1;magic=Magic+50;} // ïðèêàç 50
if(last_magic==Magic+50&&Type1==0&&Run_Alltime==true) {sig=0;magic=Magic+1;} // ïðèêàç 1 ñ íà÷àëà
if(last_magic==Magic+50&&Type1==1&&Run_Alltime==true) {sig=1;magic=Magic+1;} // ïðèêàç 1 ñ íà÷àëà
bool open_order=true;
if(last_profit>0 && Trade_Stop_After_TP==true) {open_order=false;}
if(n==0&&sig==0&&open_order==true) {int open = OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,0,0,NULL,magic,0,0);}
if(n==0&&sig==1&&open_order==true) {int open = OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,0,0,NULL,magic,0,0);}
int magic_com=0;
if(n>0) {magic_com=magic_current-Magic;}
Comment("Íîìåð òåêóùåãî ïðèêàçà = ",DoubleToStr(magic_com,0));
}
//+------------------------------------------------------------------+
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
---