Первое что бросается глаза это то что Ордер не селектирован (если конечно это весь код)
// где o номер позиции ордера if(OrderSelect(o,SELECT_BY_POS,MODE_TRADES)==false) return(0); if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==0) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow); } // либо без магика if(OrderSelect(o,SELECT_BY_POS,MODE_TRADES)==false) return(0); if(OrderSymbol()==Symbol()) { if(OrderType()==0) OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow); }
Но это не значит, что есть только такая конструкция все зависит от задачи в комплексе.Описание про селектирование есть в хелпе.
Теперь самое главное :
if (Bid<MODE_LOWER)MODE_UPPER и MODE_LOWER это константы со значениями 1 и 2 соответственно, следовательно, сравнивать их вообще с bid не правильно.
И вообще я вам рекомендую если есть возможность закрывать позиции не программным путем а выставлять стоп флаг заранее, то надо это делать. Поскольку в плане безопасности это намного безопаснее(если даже не считать перебоев питания и связи).
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
я старался, но не получается.
подскажите как правильно???
double iFractal;
iFractal= iFractals(NULL,240,MODE_LOWER,0) ;
if(OrderType() == OP_BUY)
{
if (Bid<MODE_LOWER)
OrderClose(OrderTicket(), OrderLots(), Bid, 3,Red);
break;
}