Помогите найти ошибку.

 
Смысл того, что делает советник очень простой, открываем каждые 25 (27 или любое другое число) пунктов ордера на SELL и BUY.
Так вот работает только на парах с 2-мя цифрами после запятой, а с 4-мя цифрами не работает!!! :-(

В чем может быть дело?

вот текст советника
extern double Step = 10; extern double TakeProfit = 25; int start() { double ticket = 0; int ttl = OrdersTotal(); int cnt = 0; for( cnt=0; cnt < ttl; cnt++ ){ if( OrderSelect( cnt, SELECT_BY_POS ) == true) { if (Bid == OrderOpenPrice() ) return( 0 ); } } double z = MathMod ( Bid, Point * Step); if (z == 0) { ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, Bid + TakeProfit * Point, "My order #", 16384, 0, Green); ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, Bid - TakeProfit * Point, "My order #", 16384, 0, Green); } //-------------------------------------------------------------------+ return(0); } //+------------------------------------------------------------------+
 
AndreyCH:
Смысл того, что делает советник очень простой, открываем каждые 25 (27 или любое другое число) пунктов ордера на SELL и BUY.
Так вот работает только на парах с 2-мя цифрами после запятой, а с 4-мя цифрами не работает!!! :-(
В чем может быть дело?
Может быть так:
extern double Step = 10; extern double TakeProfit = 25; int start() { double ticket; int ttl = OrdersTotal(); if(ttl == 0) { ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, Bid + TakeProfit * Point, "My order #", 16384, 0, Green); ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, Bid - TakeProfit * Point, "My order #", 16384, 0, Green); return(0); } for(int cnt=0; cnt < ttl; cnt++ ) if(OrderSelect(cnt, SELECT_BY_POS) == true) if(Bid == OrderOpenPrice()) continue; else if(MathMod(MathAbs(Bid - OrderOpenPrice()), Point * Step) == 0) { ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, Bid + TakeProfit * Point, "My order #", 16384, 0, Green); ticket = OrderSend(Symbol(), OP_SELL, 1, Bid, 3, 0, Bid - TakeProfit * Point, "My order #", 16384, 0, Green); } //---- return(0); } //+------------------------------------------------------------------+
Причина обращения: