#property copyright "AD" #property link "" double Lots = 1; // Åñòü ëè îòêðûòûå ñîâåòíèêîì îðäåðà? Åñëè åñòü, òî: èëè çàêðûâàåì, èëè çàïðåùàåì îòêðûâàòü íîâûé bool CheckOrders(int Type) { int ticket,i; bool Result; Result=True; if(OrdersTotal()!=0) { for(i=0;i<OrdersTotal();i++) { ticket=OrderSelect(i,SELECT_BY_POS); if(OrderMagicNumber()==553) { if(OrderType()==Type) { if(Type==OP_BUY) { if(OrderClose(OrderTicket(),OrderLots(),Bid,10)==False) Result=False; } if(Type==OP_SELL) { if(OrderClose(OrderTicket(),OrderLots(),Ask,20)==False) Result=False; } } else Result=False; } } } return(Result); } int start() { double MA, MAPrev; int ticket; MA = iMA("GBPUSD",15,1,0,MODE_EMA,PRICE_TYPICAL,0); MAPrev = iMA("GBPUSD",15,1,0,MODE_EMA,PRICE_TYPICAL,1); // Îòêðûòèå ââåðõ if(Open[0]<MA-Point && Ask<MA) if(CheckOrders(OP_SELL)==True && MAPrev<MA) { Lots=NormalizeDouble(AccountFreeMargin()/10000, 1); if(Lots>5) Lots=5; ticket=OrderSend("GBPUSD",OP_BUY,Lots,Ask,10,0,0,NULL,553); if(ticket<0) Print("Íå óäàëîñü îòêðûòü îðäåð BUY. Îøèáêà N", GetLastError()); } // Îòêðûòèå âíèç if(Open[0]>MA+Point && Bid>MA) if(CheckOrders(OP_BUY)==True && MAPrev>MA) { Lots=NormalizeDouble(AccountFreeMargin()/10000, 1); if(Lots>5) Lots=5; ticket=OrderSend("GBPUSD",OP_SELL,Lots,Bid,10,0,0,NULL,553); if(ticket<0) Print("Íå óäàëîñü îòêðûòü îðäåð SELL. Îøèáêà N", GetLastError()); } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open prices of each bar
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It automatically opens orders when conditions are reached
Other Features: