Форум » Синтаксис языка » Открытие ордеров.??? » Ответить

Открытие ордеров.???

voldemar227: Вопрос состоит в следующем : для обнаружения ордеров я использую цикл типа: int total=OrdersTotal(); int b=0,s=0, n=0, bl=0,sl=0, bs=0,ss=0,b2=0,s2=0; for (int i=total; i>=0; i--) {if(OrderSelect(i, SELECT_BY_POS)) {if(OrderSymbol()==Symbol() ) {n++; //----------------------------------------------------------------------------------------------------- if (OrderType()==OP_BUY && OrderMagicNumber()==magic1){b++ ;} }}} и если нет ордеров заданного типа , то есть if ( b==0&&(дополнительное условие)) советник открывает ордер, Вопрос : если b становится равным 1 то советник уже ордер не откроет. Как сделать что бы при каждом появлении условия открывался всего один ордер ????????

Ответов - 24, стр: 1 2 3 All

voldemar227: Сделал все в цыкле как вы рекомендовали !!! Теперь проблема в том что на тестере не идут котировки ... Как исправить ????

SK: Нужно анализировать режим работы: http://docs.mql4.com/ru/check Если на демо или реале - оставить цикл. Если тест в режиме визуализации - цикл убрать.

voldemar227: А как отключить цикл если весь советник внутри данного цикла ???


Scriptong: voldemar227 пишет: А как отключить цикл если весь советник внутри данного цикла ??? У каждого цикла должно быть условие его окончания. В данном случае этим условием выступает действие пользователя - удалить скрипт (функция IsStopped() в коде). Если же имеете в виду "цикл убрать", то просто убрать конструкцию while с фигурными скобками, вызов IsStopped и Sleep, переделать скрипт в советник. Функция start будет запускаться в тестере от каждого тика. Поэтому зацикленность там не нужна. Если же нужно, чтобы такой советник работал и в реале, и в тесте, то анализировать режим запуска при помощи функций IsOptimization, IsTesting, IsVisualMode, и работать в цикле, если советник запущен онлайн, или не работать в цикле, если советник запущен в тестере.



полная версия страницы