/*[[ Name := Òîðãîâëÿ íà ïðîðûâ Author := 1 Link := Lots := 1.00 Stop Loss := 20 Take Profit := 35 Trailing Stop := 0 ]]*/ #define MAGIC 20050830 extern double Lots = 0.1; extern int StopLoss = 20; extern int TakeProfit = 35; extern int risk = 20;// risk - ïðîöåíò èñïîëüçóåìîãî êàïèòàëà. Åñëè = 0 òî íå èñïîëüçóåòñÿ extern int HL = 85;// HL - ðàçíèöà ìåæäó ýêñòðåìàëüíûìè öåíàìè, extern int N = 9;// N - ïåðèîä extern int Zapas = 5; // Zapas - çàïàñ â âûñòàâëåíèè îòëîæåííîãî îðäåðà //,,,ho(0),i(0),, bool initialize=True, fl=False; double lotsi, ho, lo; int b, s, i, iTmp=0; void start() { if (risk==0) lotsi=Lots; else lotsi=MathCeil(AccountBalance()*risk/10000)/10; // Ïðîöåäóðà èíèöèàëèçàöèè (äëÿ óäàëåíèÿ ñëó÷àéíî îñòàâøåãîñÿ îòëîæåííîãî îðäåðà) if (initialize) { // íåîáõîäèìà èíèöèàëèçàöèÿ? Comment ("Ïðîöåññ èíèöèàëèçàöèè - ..."); if (OrdersTotal()==0) { // Åñëè íåò îðäåðîâ - "íå âðåìÿ ñåé÷àñ èíèöàëèçèðîâàòü, âîò êîí÷èòñÿ âîéíà..." initialize = False; fl=False; Comment ("Ïðîöåññ èíèöèàëèçàöèè - çàêîí÷åí óñïåøíî (íå÷åãî óäàëÿòü"); return; } iTmp=0; // Îáíóëÿåì ñ÷åò÷èê îòëîæåííûõ îðäåðîâ for (i=0; i<OrdersTotal(); i++) { // Ñ÷èòàåì êîë-âî îæèäàþùèõ îðäåðîâ if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) iTmp++; } } } Comment ("Ïðîöåññ èíèöèàëèçàöèè - âñåãî îòëîæåííûõ îðäåðîâ ", iTmp); if (iTmp==0 || iTmp==2) { // Åñëè îòëîæåííûõ îðäåðîâ íåò (èëè äâà) initialize=0; // áîëüøå íå ïûòàåìñÿ èíèöèàëèðîâàòüñÿ - ïóñòü òåïåðü ðàáîòàåò ñîâåòíèê fl=0; Comment ("Ïðîöåññ èíèöèàëèçàöèè - çàêîí÷åí óñïåøíî (îòëîæåííûõ îðäåðîâ - ",iTmp,")"); return; // è âûõîäèì } for (i=0; i<OrdersTotal(); i++) { //óäàëÿåì îñòàâøåéñÿ îòëîæåííûé îðäåð if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP) { OrderDelete(OrderTicket()); Comment ("Ïðîöåññ èíèöèàëèçàöèè - ïûòàþñü óäàëèòü îðäåð ",OrderTicket()); } } } } return; // âûõîäèì (äîëáàííûé 10 ñåê. òàéìàóò âñå ðàâíî íå äàñò óäàëèòü åùå îäèí îðäåð) } // Åñëè âûñòàâëåí ïðèêàç íà ïîêóïêó, òî òóò æå âûñòàâëÿòü ïðèêàç íà ïðîäàæó if (fl==1) { fl=0; OrderSend(Symbol(),OP_SELLSTOP,lotsi,lo-Zapas*Point,3,lo+StopLoss*Point,lo-TakeProfit*Point,"",MAGIC,0,Red); } //Îáíóëÿåì êîë-âî îæèäàþùèõ ïðèêàçîâ b=0; s=0; if (OrdersTotal()!=0) { for (i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_BUYSTOP) b++; //Ñ÷èòàåì êîë-âî ïðèêàçîâ íà ïîêóïêó if (OrderType()==OP_SELLSTOP) s++; // Ñ÷èòàåì êîë-âî ïðèêàçîâ íà ïðîäàæó if (s+b==2) return; // Åñëè âñåãî 2, òî âûõîäèì. } } } } // Åñëè îñòàëñÿ îäèí îæèäàþùèé ïðèêàç íà ïîêóïêó/ïðîäàæó - óäàëÿåì åãî. if (OrdersTotal()!=0 && b+s==1) { for (i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) { if (OrderType()==OP_SELLSTOP || OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket()); } } } return; } // Åñëè íåò íè ãîòîâûõ, íè îæèäàþùèõ ïðèêàçîâ, òî íàõîäèì ìèíèìóì è ìàêñèìóì çà ïîñëåäíèå n áàðîâ if (OrdersTotal()==0 && b+s==0) { ho=High[1]; lo=Low[1]; for (i=N; i>=1; i--) { if (High[i]>ho) ho=High[i]; if (Low[i]<lo) lo=Low[i]; } } if (OrdersTotal()==0 && b+s==0 && ho-lo<HL*Point) { fl=1; OrderSend(Symbol(),OP_BUYSTOP,lotsi,ho+Zapas*Point,3,ho-StopLoss*Point,ho+TakeProfit*Point,"",MAGIC,0,Blue); } }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
Other Features: