Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Agent_Session_Breakout_00xxx7_lokk
//+------------------------------------------------------------------+
//| Agent_Session Breakout_00xxx7_lokk.mq4 |
//| Voloshin Yuri |
//| http://voloshin-fxcci.blogspot.com/ |
//+------------------------------------------------------------------+
#property copyright " Voloshin Yuri "
#property link " http://voloshin-fxcci.blogspot.com/ "
#include <stdlib.mqh>
#include <WinUser32.mqh>
extern int Magic = 317317;
extern int SL = 250;
extern int TP = 15;
extern double lots = 0.03;
extern bool tr_stops = false; // Ïåðåäâèãàåì ñòîï-ëîñ
extern bool profittral = false; // Ïåðåäâèãàåì òîëüêî ïðè ïðîôèòå îðäåðà
extern int tr_zona = 7; // Çîíà êîëè÷åñòâà ñâå÷åé äëÿ òðàëà
extern bool lokk_Pos = true;
extern int lokk_zone = 125;
extern int lokk_level = 100;
extern int enlarge_lot = 2;
extern string block_01 = " ÀÇÈÀÒÑÊÀß ñåññèÿ ";
extern int J_time = 729; // Âðåìÿ äëÿ àíàëèçà ñåññèè ÷àñîâ è ìèíóò
extern int J_zone = 12; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà ãðàíèö
extern string block_02 = " ÅÂÐÎÏÅÉÑÊÀß ñåññèÿ ";
extern int E_time = 1429; // Âðåìÿ äëÿ àíàëèçà ñåññèè ÷àñîâ è ìèíóò
extern int E_zone = 8; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà ãðàíèö
extern string block_03 = " ÀÌÅÐÈÊÀÍÑÊÀß ñåññèÿ ";
extern int A_time = 2329; // Âðåìÿ äëÿ àíàëèçà ñåññèè ÷àñîâ è ìèíóò
extern int A_zone = 14; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà ãðàíèö
extern string block_04 = " Àçèàòñêî - Åâðîïåéñêèé áîêñ ";
extern int Je_time = 1029; // Âðåìÿ äëÿ àíàëèçà ñåññèè ÷àñîâ è ìèíóò
extern int Je_zone = 6; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà ãðàíèö
extern string block_05 = " Åâðîïåéñêî - Àìåðèêàíñêèé áîêñ ";
extern int Ea_time = 1629; // Âðåìÿ äëÿ àíàëèçà ñåññèè ÷àñîâ è ìèíóò
extern int Ea_zone = 4; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà ãðàíèö
extern string block_06 = " Àìåðèêàíñêî - Àçèàòñêèé áîêñ ";
extern int Aj_time = 129; // Âðåìÿ äëÿ àíàëèçà ñåññèè ÷àñîâ è ìèíóò
extern int Aj_zone = 4; // Êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà ãðàíèö
//------- Ãëîáàëüíûå ïåðåìåííûå ñîâåòíèêà -------------------------------------+
double St_b, St_s, Tk_b, Tk_s, Pr_b, Pr_s, ExpTime;
string koment;
int init() {
return(0);
}
int deinit() {
return(0);
}
// ========================================================
// =================== ÍÀ×ÈÍÀÅÌ ÐÀÁÎÒÓ ====================
// ========================================================
int start() {
RefreshRates();
int Cur_time = (Hour()*100) + Minute(); // Òåêóùåå âðåìÿ ÷àñû ïîòîì ìíóòû áåç ðàçäåëèòåëÿ
Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== îïðåäåëÿåò òî÷êè ÂÕÎÄÀ ==== ",
"\n"," ======================",
"\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
"\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
"\n"," ======================",
"\n"," ñâÿçü ñ ñåðâåðîì = ", IsConnected(), " ÂÐÅÌß ñåðâåðà ", Cur_time,
"\n"," ñ÷åò çàðåãèñòðèðîâàí â êîìïàíèè ", AccountCompany(),
"\n"," ======================");
Sleep(500);
if (Cur_time == J_time) {
Pr_b = NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,J_zone,0)], Digits);
Pr_s = NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,J_zone,0)], Digits);
ExpTime = iTime(NULL,0,0)+86400;
koment = " àçèàòñêàÿ ñåññèÿ ";
Print("**** ÑÐÀÁÎÒÀËÀ àçèàòñêàÿ ñåññèÿ ****");
order(Pr_b, Pr_s, ExpTime, koment);
}
if (Cur_time == E_time) {
Pr_b = NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,E_zone,0)], Digits);
Pr_s = NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,E_zone,0)], Digits);
ExpTime = iTime(NULL,0,0)+86400;
koment = " åâðîïåéñêàÿ ñåññèÿ ";
Print("**** ÑÐÀÁÎÒÀËÀ åâðîïåéñêàÿ ñåññèÿ ****");
order(Pr_b, Pr_s, ExpTime, koment);
}
if (Cur_time == A_time) {
Pr_b = NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,A_zone,0)], Digits);
Pr_s = NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,A_zone,0)], Digits);
ExpTime = iTime(NULL,0,0)+86400;
koment = " àìåðèêàíñêàÿ ñåññèÿ ";
Print("**** ÑÐÀÁÎÒÀËÀ àìåðèêàíñêàÿ ñåññèÿ ****");
order(Pr_b, Pr_s, ExpTime, koment);
}
if (Cur_time == Je_time) {
Pr_b = NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,Je_zone,0)], Digits);
Pr_s = NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,Je_zone,0)], Digits);
ExpTime = iTime(NULL,0,0)+86400;
koment = " àçèÿ/åâðîïà áîêñ ";
Print("**** ÑÐÀÁÎÒÀË àçèÿ/åâðîïà áîêñ ****");
order(Pr_b, Pr_s, ExpTime, koment);
}
if (Cur_time == Ea_time) {
Pr_b = NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,Ea_zone,0)], Digits);
Pr_s = NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,Ea_zone,0)], Digits);
ExpTime = iTime(NULL,0,0)+86400;
koment = " åâðîïà/àìåðèêà áîêñ ";
Print("**** ÑÐÀÁÎÒÀË åâðîïà/àìåðèêà áîêñ ****");
order(Pr_b, Pr_s, ExpTime, koment);
}
if (Cur_time == Aj_time) {
Pr_b = NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,Aj_zone,0)], Digits);
Pr_s = NormalizeDouble(Low[iLowest(NULL,0,MODE_LOW,Aj_zone,0)], Digits);
ExpTime = iTime(NULL,0,0)+86400;
koment = " àìåðèêà/àçèÿ áîêñ ";
Print("**** ÑÐÀÁÎÒÀË àìåðèêà/àçèÿ áîêñ ****");
order(Pr_b, Pr_s, ExpTime, koment);
}
for (int i=0; i<=OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) {
if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
if (tr_stops && OrderType()<2) TrailingPositions(); // Óñëîâèå äëÿ òðàëà îðäåðà
if (lokk_Pos && OrderType()<2) LokkPositions(); // Óñëîâèå äëÿ ëîêèðîâàíèÿ îðäåðà
}}}
return(0);
}
// ========================================================
// ============ ÔÓÍÊÖÈß ÏÎÄÃÎÒÎÂÊÈ Ê ÐÀÁÎÒÅ ===============
// ========================================================
void order(double Pr_b, double Pr_s, double ExpTime, string koment) {
RefreshRates();
if(AccountFreeMargin()<(1000*lots)) Alert("We have no money. Free Margin = ", AccountFreeMargin());
PlaySound("tick.wav");
int luft = MarketInfo(Symbol(),MODE_STOPLEVEL) + 3;
int spro_b = 0;
int spro_s = 0;
bool tic_b = false;
bool tic_s = false;
while(!tic_b){
if (Pr_b <= Ask) Pr_b = NormalizeDouble(Ask + luft*Point, Digits);
St_b = NormalizeDouble(Pr_b - SL*Point, Digits);
Tk_b = NormalizeDouble(Pr_b + TP*Point, Digits);
if(IsTradeAllowed()) tic_b = OrderSend(Symbol(), OP_BUYSTOP, lots, Pr_b, 2, St_b, Tk_b, koment, Magic, ExpTime, Green);
if(!tic_b) Print("ïîïûòêà == ", spro_b, " /Îøèáêà #",GetLastError());
spro_b = spro_b +1;
if(spro_b > 9) break;
PlaySound("expert.wav");
Sleep(500);
}
while(!tic_s){
if (Pr_s >= Bid) Pr_s = NormalizeDouble(Bid - luft*Point, Digits);
St_s = NormalizeDouble(Pr_s + SL*Point, Digits);
Tk_s = NormalizeDouble(Pr_s - TP*Point, Digits);
if(IsTradeAllowed()) tic_s = OrderSend(Symbol(), OP_SELLSTOP, lots, Pr_s, 2, St_s, Tk_s, koment, Magic, ExpTime, Red);
if(!tic_s) Print("ïîïûòêà == ", spro_s, " /Îøèáêà #",GetLastError());
spro_s = spro_s +1;
if(spro_s > 9) break;
PlaySound("expert.wav");
Sleep(500);
}
if(!tic_b || !tic_s) Alert(" ÍÅ óñòàíîâëåí îðäåð == Îøèáêà # ",GetLastError());
if (tic_b && tic_s) {
PlaySound("ok.wav");
Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== ïðîãðàììíàÿ çàäåðæêà âû÷èñëåíèé ====",
"\n"," ======================",
"\n"," óñòàíîâëåí îðäåð íà ïîêóïêó ñ òèêåòîì = ", tic_b, " ïîïûòîê óñòàíîâêè = ", spro_b,
"\n"," óñòàíîâëåí îðäåð íà ïðîäàæó ñ òèêåòîì = ", tic_s, " ïîïûòîê óñòàíîâêè = ", spro_s,
"\n"," ======================");
Print("óñòàíîâëåí îðäåð íà ïîêóïêó ñ òèêåòîì = ", tic_b, " ïîïûòîê = ", spro_b);
Print("óñòàíîâëåí îðäåð íà ïðîäàæó ñ òèêåòîì = ", tic_s, " ïîïûòîê = ", spro_s);
Sleep(60000);
}
return(0);
}
// ========================================================
// ============ ÐÀÁÎÒÀ Ñ ÐÛÍÎ×ÍÛÌÈ ÎÐÄÅÐÀÌÈ ===============
// ========================================================
void TrailingPositions() {
RefreshRates();
bool fm = false;
if (!tr_stops) return(0);
if (profittral) {
if (OrderProfit() < 0) return(0);
}
Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== âûïîëíÿåò ÑÎÏÐÎÂÎÆÄÅÍÈÅ îðäåðîâ ==== ",
"\n"," ======================",
"\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
"\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
"\n"," ======================",
"\n"," áóäåì ÒÐÀËÈÒÜ îðäåð = ", OrderTicket(), " (", OrderComment(), ") ", OrderProfit(),
"\n"," ======================");
Sleep(500);
if (OrderType()==OP_BUY) {
double Pr_sb = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, tr_zona, 1)], Digits);
double StLb = NormalizeDouble(Pr_sb - (4*Point), Digits);
if(IsTradeAllowed())fm = OrderModify(OrderTicket(), OrderOpenPrice(), StLb, OrderTakeProfit(), 0, Green);
if (!fm) Print("Îøèáêà ìîäèôèêàöèè îðäåðà #",GetLastError());
if (fm) PlaySound("wait.wav");
return(0);
}
if (OrderType()==OP_SELL) {
double Pr_ss = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, tr_zona, 1)], Digits);
double StLs = NormalizeDouble(Pr_ss + (4*Point), Digits);
if(IsTradeAllowed())fm = OrderModify(OrderTicket(), OrderOpenPrice(), StLs, OrderTakeProfit(), 0, Red);
if (!fm) Print("Îøèáêà ìîäèôèêàöèè îðäåðà #",GetLastError());
if (fm) PlaySound("wait.wav");
return(0);
} }
// ========================================================
// ============ ÔÓÍÊÖÈß ËÎÊÈÐÎÂÀÍÈß ÎÐÄÅÐÎÂ ===============
// ========================================================
void LokkPositions() {
RefreshRates();
Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== â çîíå ËÎÊÈÐÎÂÀÍÈß îðäåðîâ ==== ");
bool tic_lb = false;
bool tic_ls = false;
bool fm_lb = false;
bool fm_ls = false;
if (!lokk_Pos) return(0);
if (OrderProfit() > 0) return(0);
//Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== ïðîâåðÿåò ÓÁÛÒÎ×ÍÛÅ îðäåðà ==== ",
// "\n"," ======================",
// "\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
// "\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
// "\n"," ======================",
// "\n"," âîçìîæíî ËÎÊÈÐÎÂÀÒÜ îðäåð = ", OrderTicket(), " ", OrderType(), " ", OrderProfit(),
// "\n"," ======================");
//Sleep(500);
int MagicLokk = OrderTicket();
double SL_Lokk = OrderStopLoss();
for (int i=0; i<=OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) {
if (OrderMagicNumber()==MagicLokk) {
//Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== ïðîâåðÿåò ËÎÊÈÐÎÂÀÍÈÅ îðäåðîâ ==== ",
// "\n"," ======================",
// "\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
// "\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
// "\n"," ======================",
// "\n"," îðäåð = ", MagicLokk, " óæå ëîêèðîâàí îðäåðîì = ", OrderTicket(),
// "\n"," ======================");
// Sleep(500);
return(0);
} } }
//Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== ïðîâåðÿåò ËÎÊÈÐÎÂÀÍÈÅ îðäåðîâ ==== ",
// "\n"," ======================",
// "\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
// "\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
// "\n"," ======================",
// "\n"," îðäåð = ", MagicLokk, " åùå ÍÅ ëîêèðîâàí ",
// "\n"," ======================");
//Sleep(500);
if(OrderSelect(MagicLokk, SELECT_BY_TICKET)==true) {
//Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== óñëîâèå ËÎÊÈÐÎÂÀÍÈß îðäåðîâ ==== ",
// "\n"," ======================",
// "\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
// "\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
// "\n"," ======================",
// "\n"," îðäåð = ", MagicLokk,
// "\n"," ======================");
//Sleep(500);
//Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== â çîíå ËÎÊÈÐÎÂÀÍÈß îðäåðîâ ==== ");
if (OrderType()==OP_BUY) {
if (((OrderOpenPrice() - Ask)/Point)>lokk_zone) {
double Price_lokkb = NormalizeDouble(OrderOpenPrice() - lokk_level*Point, Digits);
double lot_lokkb = NormalizeDouble(lots*enlarge_lot, 2);
double TP_lokkb = NormalizeDouble (OrderOpenPrice() - ((lokk_level/(enlarge_lot+1)*enlarge_lot)*Point), Digits);
if(IsTradeAllowed()) tic_lb = OrderSend(Symbol(), OP_BUYSTOP, lot_lokkb, Price_lokkb, 2, SL_Lokk, TP_lokkb, " ëîêèðîâêà ïîçèöèè ", MagicLokk, 0, Yellow);
if(!tic_lb) Alert("ïîïûòêà ëîêèðîâêè 1 == Îøèáêà #",GetLastError());
PlaySound("expert.wav");
Sleep(500);
if(IsTradeAllowed()) fm_lb = OrderModify(MagicLokk, OrderOpenPrice(), OrderStopLoss(), TP_lokkb, 0, Yellow);
if(!tic_lb) Alert("ïîïûòêà ëîêèðîâêè 2 == Îøèáêà #",GetLastError());
PlaySound("expert.wav");
Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== ÂÛÏÎËÍÈË ËÎÊÈÐÎÂÀÍÈÅ îðäåðîâ ==== ",
"\n"," ======================",
"\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
"\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
"\n"," èäåíòèôèêàòîð ÌÀÃÈÊ ËÎÊÀ = ", MagicLokk,
"\n"," ======================",
"\n"," ÈÇÌÅÍÅÍ îðäåð = ", OrderTicket(), OrderType(), " íîâûé TP = ", TP_lokkb,
"\n"," ÓÑÒÀÍÎÂËÅÍ ëîê íà óðîâíå = ", Price_lokkb, " TP = ", TP_lokkb,
"\n"," ======================");
Sleep(500);
return(0);
} }
if (OrderType()==OP_SELL) {
if (((Bid - OrderOpenPrice())/Point)>lokk_zone) {
double Price_lokks = NormalizeDouble(OrderOpenPrice() + lokk_level*Point, Digits);
double lot_lokks = NormalizeDouble(lots*enlarge_lot, 2);
double TP_lokks = NormalizeDouble (OrderOpenPrice() + ((lokk_level/(enlarge_lot+1)*enlarge_lot)*Point), Digits);
if(IsTradeAllowed()) tic_ls = OrderSend(Symbol(), OP_SELLSTOP, lot_lokks, Price_lokks, 2, SL_Lokk, TP_lokks, " ëîêèðîâêà ïîçèöèè ", MagicLokk, 0, Yellow);
if(!tic_ls) Alert("ïîïûòêà ëîêèðîâêè 1 == Îøèáêà #",GetLastError());
PlaySound("expert.wav");
Sleep(500);
if(IsTradeAllowed()) fm_ls = OrderModify(MagicLokk, OrderOpenPrice(), OrderStopLoss(), TP_lokks, 0, Yellow);
if(!tic_ls) Alert("ïîïûòêà ëîêèðîâêè 2 == Îøèáêà #",GetLastError());
PlaySound("expert.wav");
Comment("\n"," ==== ñîâåòíèê ÐÀÁÎÒÀÅÒ ==== ÂÛÏÎËÍÈË ËÎÊÈÐÎÂÀÍÈÅ îðäåðîâ ==== ",
"\n"," ======================",
"\n"," òàéìôðåéì = ", Period(), " èíñòðóìåíò ", Symbol(),
"\n"," èäåíòèôèêàòîð ÌÀÃÈÊ = ", Magic,
"\n"," èäåíòèôèêàòîð ÌÀÃÈÊ ËÎÊÀ = ", MagicLokk,
"\n"," ======================",
"\n"," ÈÇÌÅÍÅÍ îðäåð = ", OrderTicket(), OrderType(), " íîâûé TP = ", TP_lokks,
"\n"," ÓÑÒÀÍÎÂËÅÍ ëîê íà óðîâíå = ", Price_lokks, " TP = ", TP_lokks,
"\n"," ======================");
Sleep(500);
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
---