//+------------------------------------------------------------------+ //| Robot_MACD_12.26.9 | //| Tokman Yuriy | //| yuriytokman@gmail.com | //+------------------------------------------------------------------+ //âíåøíèå ïåðåìåííûå extern double TakeProfit = 300; extern double Lots = 0.1; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double MacdCurrent, MacdPrevious, SignalCurrent,SignalPrevious; int cnt, ticket, total; MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); total=OrdersTotal(); if(total<1)//ïðîâåðêà êîëè÷åñòâà îðäåðîâ { // ïðîâåðêà ñâîáîäíûõ ñðåäñòâ if(AccountFreeMargin()<(1000*Lots))//êîëè÷åñòâî ñâîáîäíûõ ñðåäñòâ { Print("Íåäîñòàòî÷íî ñðåäñòâ = ", AccountFreeMargin()); return(0); } // îòêðûòèå äëèííîé ïîçèöèè if(MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MacdCurrent<0 && SignalCurrent<0 ) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"-",0,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("îòêðûòà ïîçèöèÿ BUY : ",OrderOpenPrice()); } else Print("Îøèáêà ïðè îòêðûòèè BUY ïîçèöèè : ",GetLastError()); return(0); } // îòêðûòèå êîðîòêîé ïîçèöèè if(MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>0 && SignalCurrent>0) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"-",0,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("îòêðûòà ïîçèöèÿ SELL : ",OrderOpenPrice()); } else Print("Îøèáêà ïðè îòêðûòèè SELL ïîçèöèè : ",GetLastError()); return(0); } return(0); } // óñëîâèÿ çàêðûòèÿ îðäåðîâ for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // íàëè÷èå îòêðûòûõ îðäåðîâ OrderSymbol()==Symbol()) // ñîâïàäàþò ëè ôèíàíñîâûå èíñòðóìåíòû { if(OrderType()==OP_BUY) // îòêðûòà äëèííàÿ ïîçèöèÿ { // óñëîâèå çàêðûòèÿ if(MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); return(0); } } else // îòêðûòà êîðîòêàÿ ïîçèöèÿ { // óñëîâèå çàêðûòèÿ if( MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); return(0); } } } } return(0); }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
MACD Histogram
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
It Closes Orders by itself
Other Features: