//+------------------------------------------------------------------+ //| 20/200 expert v2.mq4 | //| 1H EUR/USD | //| Smirnov Pavel | //| www.autoforex.ru | //+------------------------------------------------------------------+ #property copyright "Smirnov Pavel" #property link "www.autoforex.ru" extern int TakeProfit = 20; // Óðîâåíü òåéêïðîôèò â ïóíêòàõ extern int StopLoss = 200; // óðîâåíü ñòîïëîññ â ïóíêòàõ extern int TradeTime=18; extern int t1=7; extern int t2=2; extern int delta=7; extern double lot = 0.1; extern int Orders=1; extern int MaxOpenTime=10000; int ticket,total,cnt; bool cantrade=true; double closeprice; double tmp; int OpenLong(double volume=0.1) { int slippage=10; string comment="20/200 expert v2 (Long)"; color arrow_color=Red; int magic=0; ticket=OrderSend(Symbol(),OP_BUY,volume,Ask,slippage,Ask-StopLoss*Point, Ask+TakeProfit*Point,comment,magic,0,arrow_color); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { return(0); } else { Print("OpenLong(),OrderSelect() - âûäàë îøèáêó : ",GetLastError()); return(-1); } } else { Print("Error opening Buy order : ",GetLastError()); return(-1); } } int OpenShort(double volume=0.1) { int slippage=10; string comment="20/200 expert v2 (Short)"; color arrow_color=Red; int magic=0; ticket=OrderSend(Symbol(),OP_SELL,volume,Bid,slippage,Bid+StopLoss*Point, Bid-TakeProfit*Point,comment,magic,0,arrow_color); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) { return(0); } else { Print("OpenShort(),OrderSelect() - âûäàë îøèáêó : ",GetLastError()); return(-1); } } else { Print("Error opening Sell order : ",GetLastError()); return(-1); } } int init() { return(0); } int deinit() { return(0); } int start() { if((TimeHour(TimeCurrent())>TradeTime)) cantrade=true; // ïðîâåðÿåì åñòü ëè îòêðûòûå îðäåðà ... total=OrdersTotal(); if(total<Orders) { // ... åñëè íåò íè îäíîãî îòêðûòîãî îðäåðà, òî èäåì äàëüøå // ïðîâåðÿåì íàñòàëî ëè âðåìÿ äëÿ òîðãîâëè if((TimeHour(TimeCurrent())==TradeTime)&&(cantrade)) { // ... åñëè íàñòàëî âðåìÿ, òî if ((Open[t1]-Open[t2])>delta*Point) //Åñëè öåíà èçìåíèëàñü íà âåëè÷èíó delta { //óñëîâèå âûïîëíåíî çíà÷èò âõîäèì â êîðîòêóþ ïîçèöèþ: // ïðîâåðÿåì åñòü ëè ñâîáîäíûå äåíüãè äëÿ îòêðûòèÿ êîðîòêîé ïîçèöèè if(AccountFreeMarginCheck(Symbol(),OP_SELL,lot)<=0 || GetLastError()==134) { Print("Not enough money"); return(0); } OpenShort(lot); cantrade=false; //çàïðåùàåì òîðãîâàòü ïîâòîðíî äî ñëåäóþùåãî áàðà return(0); } if ((Open[t2]-Open[t1])>delta*Point) //Åñëè öåíà èçìåíèëàñü íà âåëè÷èíó delta { // óñëîâèå âûïîëíåíî çíà÷èò âõîäèì â äëèííóþ ïîçèöèþ // ïðîâåðÿåì åñòü ëè ñâîáîäíûå äåíüãè íà ñ÷åòó if(AccountFreeMarginCheck(Symbol(),OP_BUY,lot)<=0 || GetLastError()==134) { Print("Not enough money"); return(0); } OpenLong(lot); cantrade=false; return(0); } } } // áëîê ïðîâåðêè âðåìåíè æèçíè ñäåëêè, åñëè Í=0, òî íå ïðîâîäèì ïðîâåðêó. if(MaxOpenTime>0) { for(cnt=0;cnt<total;cnt++) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { tmp = (TimeCurrent()-OrderOpenTime())/3600.0; if ((NormalizeDouble(tmp,8)-MaxOpenTime)>=0) { RefreshRates(); if (OrderType()==OP_BUY) closeprice=Bid; else closeprice=Ask; if (OrderClose(OrderTicket(),OrderLots(),closeprice,10,Green)) { Print("Ïðèíóäèòåëüíîå çàêðûòèå ñäåëêè - ¹",OrderTicket()); OrderPrint(); } else Print("OrderSelect() â áëîêå ïðîâåðêè âðåìåíè æèçíè ñäåëêè âåðíóë îøèáêó - ",GetLastError()); } } else Print("OrderSelect() â áëîêå ïðîâåðêè âðåìåíè æèçíè ñäåëêè âåðíóë îøèáêó - ",GetLastError()); } } return(0); }
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
Other Features: