Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Fibo_Open_Day_Safe_v_1_00
//+------------------------------------------------------------------+
//| Fibo Open Day Safe.mq4 |
//| Copyright © 2009, Ñòåöåíêî Äìèòðèé Äìèòðèåâè÷ |
//| http:// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Ñòåöåíêî Äìèòðèé Äìèòðèåâè÷"
#property link "http://"
extern double Lots = 0.01; // Âíåøíÿÿ ïåðåìåííàÿ
extern int MagicNumber = 777;
int Count=0;
bool IsNewDay = false;
//////// ------------ /////////
int SystemState = 0; //
// 0 - Idle
// 1 - OpenOrder
// 2 - SafeProfit
// 3 - StopLoss
double FB1, FB2, FB3, FS1, FS2, FS3;// Óðîâíè ôèáîíà÷÷è
int CurrentDay=0; // Äàòà òåêóùåãî äíÿ
double openPrice; // öåíà îòêðûòèÿ äíÿ
int CurrentOrderId=0; // Òèêåò îòêðûòîãî îðäåðà
int OrdFin[3];
extern int border=3;
extern bool ReopenOrders=true;
extern int FB1SafeLoss = 10, FB1SafeProfitTrailLevel = 10, FB1SafeProfit = 1;// SafeLoss - íà÷àëüíûé ÑòîïËîññ äëÿ îðäåðà,
extern int FB2SafeLoss = 10, FB2SafeProfitTrailLevel = 10, FB2SafeProfit = 1;// SafeProfitTrailLevel - óðîâíü ïðè êîòîðîì îðäåð òðåéëèòñÿ
extern int FS1SafeLoss = 10, FS1SafeProfitTrailLevel = 10, FS1SafeProfit = 1;// SafeProfit - êîëè÷åñòâî ïóíêòîâ ìèíèìàëüíîãî âûèãðûøà âìåñòî ëîñÿ
extern int FS2SafeLoss = 10, FS2SafeProfitTrailLevel = 10, FS2SafeProfit = 1;
int FB1id, FB2id, FS1id, FS2id;
//////// ------------ /////////
datetime expDate;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
CurrentDay=TimeDay(TimeCurrent());
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int InitializeFiboLevels()
{
SystemState = 0;//ðåæèì îæèäàíèÿ
openPrice = Ask-Point;
FB1 = openPrice + 0.0034;
FB2 = openPrice + 0.0089;
FB3 = openPrice + 0.0144;
FS1 = openPrice - 0.0034;
FS2 = openPrice - 0.0089;
FS3 = openPrice - 0.0144;
OrdFin[0]=0;
OrdFin[1]=0;
OrdFin[2]=0;
OrdFin[3]=0;
expDate = TimeCurrent() + 86000;
return(0);
}
int SetStopOrders()
{
FB1id = OrderSend(Symbol(), OP_BUYSTOP, Lots, FB1, 0.01, FB1-FB1SafeLoss*Point, FB2, "FB1", MagicNumber, expDate, MediumBlue);
FS1id = OrderSend(Symbol(), OP_SELLSTOP, Lots, FS1, 0.01, FS1+FS1SafeLoss*Point, FS2, "FS1", MagicNumber, expDate, IndianRed);
FB2id = OrderSend(Symbol(), OP_BUYSTOP, Lots, FB2, 0.01, FB2-FB2SafeLoss*Point, FB3, "FB2", MagicNumber, expDate, MediumBlue);
FS2id = OrderSend(Symbol(), OP_SELLSTOP, Lots, FS2, 0.01, FS2+FS2SafeLoss*Point, FS3, "FS2", MagicNumber, expDate, IndianRed);
return(0);
}
int CheckOpenOrder()
{
//Åñëè îòëîæåíûé ñòàë íà ïðîäàæó èëè íà ïîêóïêó
OrderSelect(FB1id, SELECT_BY_TICKET, MODE_TRADES);
if((OrderType()==OP_BUY) && (OrderCloseTime()==0))return(FB1id);
OrderSelect(FB2id, SELECT_BY_TICKET, MODE_TRADES);
if((OrderType()==OP_BUY) && (OrderCloseTime()==0))return(FB2id);
OrderSelect(FS1id, SELECT_BY_TICKET, MODE_TRADES);
if((OrderType()==OP_SELL) && (OrderCloseTime()==0))return(FS1id);
OrderSelect(FS2id, SELECT_BY_TICKET, MODE_TRADES);
if((OrderType()==OP_SELL) && (OrderCloseTime()==0))return(FS2id);
return(0);
}
int start()
{
/////// Öûêë Ñèñòåìû ///////
if(TimeDay(TimeCurrent())!=CurrentDay)//Èíèöèàëèçàöèÿ îðäåðîâ â íà÷àëå äíÿ
{
InitializeFiboLevels();
SetStopOrders();
CurrentDay = TimeDay(TimeCurrent());
return(0);
}
if(SystemState==0)//Åñëè ñèñòåìà â ðåæèìå îæèäàíèÿ æäåì îòêðûòèÿ îðäåðà
{
CurrentOrderId = CheckOpenOrder();
if(CurrentOrderId!=0)SystemState=1;//Ñîñòîÿíèå ñèñòåìû èçìåíèëîñü íà îòêðûòû îðäåð
}
if(SystemState==1)//Åñëè ñèñòåìà â ðåæèìå îòêðûòèÿ îðäåðà - ñëåäèò çà óñòàíîâêîé îðäåðà â áåçóáûòîê
{
OrderSelect(CurrentOrderId, SELECT_BY_TICKET);
if(OrderCloseTime()==0)//Åñëè îòêðûòûé îðäåð íå çàêðûò
{
bool isSuccess;
int delta = (Ask - OrderOpenPrice())/Point; //ðàñòîÿíèå ìåæäó öåíîé è îòêðûòèåì îðäåðà
if((OrderComment()=="FB1")&&(delta>FB1SafeProfitTrailLevel))//åñëè îðäåð íà ïîêóïêó 1
{
isSuccess=OrderModify(CurrentOrderId, OrderOpenPrice(), OrderOpenPrice()+FB1SafeProfit*Point, OrderTakeProfit(), OrderExpiration(), DarkGreen);
if(isSuccess)SystemState=2; else Alert("Something wrong with order modify");
return(0);
}
if((OrderComment()=="FB2")&&(delta>FB2SafeProfitTrailLevel))//åñëè îðäåð íà ïîêóïêó 2
{
isSuccess=OrderModify(CurrentOrderId, OrderOpenPrice(), OrderOpenPrice()+FB2SafeProfit*Point, OrderTakeProfit(), OrderExpiration(), DarkGreen);
if(isSuccess)SystemState=2; else Alert("Something wrong with order modify");
return(0);
}
delta = (OrderOpenPrice()-Bid)/Point;
if((OrderComment()=="FS1")&&(delta>FS1SafeProfitTrailLevel))//åñëè îðäåð íà ïðîäàæó 1
{
isSuccess=OrderModify(CurrentOrderId, OrderOpenPrice(), OrderOpenPrice()-FS1SafeProfit*Point, OrderTakeProfit(), OrderExpiration(), DarkGreen);
if(isSuccess)SystemState=2; else Alert("Something wrong with order modify");
return(0);
}
if((OrderComment()=="FS2")&&(delta>FS2SafeProfitTrailLevel))//åñëè îðäåð íà ïðîäàæó 2
{
isSuccess=OrderModify(CurrentOrderId, OrderOpenPrice(), OrderOpenPrice()-FS2SafeProfit*Point, OrderTakeProfit(), OrderExpiration(), DarkGreen);
if(isSuccess)SystemState=2; else Alert("Something wrong with order modify");
return(0);
}
}else//Åñëè îðäåð çàêðûò ìåíÿåì ñîñòîÿíèå ñèñòåìû
{
if(OrderClosePrice()==OrderStopLoss())SystemState=3;//Ïåðåâîäèì ñèñòåìó â ðåæèì Ñòîïëîññà ÷òîá îíà îòêðûëà íîâûé îðäåð êîãäà áóäåò ïîäõîäÿùèé ìîìåíò
if(OrderClosePrice()==OrderTakeProfit())
{
if(CurrentOrderId == FB1id)OrdFin[0]=1;
if(CurrentOrderId == FB2id)OrdFin[1]=1;
if(CurrentOrderId == FS1id)OrdFin[2]=1;
if(CurrentOrderId == FS2id)OrdFin[3]=1;
SystemState=0;//Ïåðâûé ïðîôèò âçÿëè ïåðåâîäèì ñèñòåìó â ñîñòîÿíèå îæèäàíèÿ ñëóäóþùåãî îðäåðà
}
return(0);
}
}
if(SystemState==2)//Ñèñòåìà â ðåæèìå îðäåðà áåçóáûòêà è æäåò ëèáî ñòîïËîññà ëèáî ïðîôèòà
{
OrderSelect(CurrentOrderId, SELECT_BY_TICKET);
if(OrderClosePrice()==OrderStopLoss()){SystemState=3; return(0);}//Ïåðåâîäèì ñèñòåìó â ðåæèì Ñòîïëîññà ÷òîá îíà îòêðûëà íîâûé îðäåð êîãäà áóäåò ïîäõîäÿùèé ìîìåíò
if(OrderClosePrice()==OrderTakeProfit()){SystemState=0; return(0);}//Ïåðâûé ïðîôèò âçÿëè ïåðåâîäèì ñèñòåìó â ñîñòîÿíèå îæèäàíèÿ ñëóäóþùåãî îðäåðà
}
if(SystemState==3)//Åñëè Ñèñòåìà â ðåæèìå îñòàíîâêè îðäåðà ïî ñòîïëîññó
{
if(ReopenOrders==false)
{
SystemState = 0;//æäåì ñëåäóþùåãî îðäåðà
return(0);
}
OrderSelect(CurrentOrderId, SELECT_BY_TICKET);
if((OrderType()==OP_BUY) && (OrderCloseTime()>0))
{
Alert("ReOpenOrder BUY");
delta = (OrderOpenPrice()-Ask)/Point;
if((OrderComment()=="FB1[sl]")&&(delta>border))//åñëè îðäåð íà ïîêóïêó 1
{
if(OrdFin[0]==0)FB1id=OrderSend(Symbol(), OP_BUYSTOP, Lots, FB1, 0.01, FB1-FB1SafeLoss*Point, FB2, "FB1", MagicNumber, expDate, MediumBlue);
SystemState=0;
return(0);
}
if((OrderComment()=="FB2[sl]")&&(delta>border))//åñëè îðäåð íà ïîêóïêó 2
{
if(OrdFin[1]==0)FB2id = OrderSend(Symbol(), OP_BUYSTOP, Lots, FB2, 0.01, FB2-FB2SafeLoss*Point, FB3, "FB2", MagicNumber, expDate, MediumBlue);
SystemState=0;
return(0);
}
}
if((OrderType()==OP_SELL) && (OrderCloseTime()>0))
{
delta = (Bid-OrderOpenPrice())/Point;
if((OrderComment()=="FS1[sl]")&&(delta>border))//åñëè îðäåð íà ïîêóïêó 1
{
if(OrdFin[2]==0)FS1id = OrderSend(Symbol(), OP_SELLSTOP, Lots, FS1, 0.01, FS1+FS1SafeLoss*Point, FS2, "FS1", MagicNumber, expDate, IndianRed);
SystemState=0;
return(0);
}
if((OrderComment()=="FS2[sl]")&&(delta>border))//åñëè îðäåð íà ïîêóïêó 2
{
if(OrdFin[3]==0)FS2id = OrderSend(Symbol(), OP_SELLSTOP, Lots, FS2, 0.01, FS2+FS2SafeLoss*Point, FS3, "FS2", MagicNumber, expDate, IndianRed);
SystemState=0;
return(0);
}
}
}
//----
return(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
---