Дело не в том, что в тестере советник не получает новый Ask, а в том, что тестирование останавливается до завершения выполнения функции start(), прежде чем дать новый тик тестер ждет полного завершения выполнения функции start().
Дело не в том, что в тестере советник не получает новый Ask, а в том, что тестирование останавливается до завершения выполнения функции start(), прежде чем дать новый тик тестер ждет полного завершения выполнения функции start().
Я это понимаю. Т.е. ни какого варианта получить новый Ask в цикле нет?
Что-то типа такого:
// генерация сигнала if (надо выставлять бай) { GlobalVariableSet("BuySignal", 1); } if (надо выставлять селл) { GlobalVariableSet("SellSignal", 1); } //... double buySignal = GlobalVariableGet("BuySignal"); if(buySignal == 1) { RefreshRates(); if((pr-Ask)>StopLevel*Point) { if(SetOrder(Symbol(), OP_BUYSTOP, lot, pr, sl, tp, com, exp)==true) GlobalVariableSet("BuySignal", 0); } if(Ask>=pr) { if(SetOrder(Symbol(), OP_BUY, lot, Ask, sl, tp, com, exp)==true) GlobalVariableSet("BuySignal", 0); } }
Спасибо. Я думал над подобным вариантом. Если ни чего другого не останется, то придётся сделать именно так.
Уважаемые разработчики, можно узнать Ваше мнение?
Тьфу, конечно же не через GlobalVariable это меня не в ту степь понесло. В Вашем случае сигналы нужно хранить в глобальных переменных самого эксперта.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Столкнулся со следующей проблемой.
После выполнения некоторых условий алгоритма, советник должен выставить отложенный ордер БайСтоп (если позволяет расстояние до цены установки) или войти по рынку на Бай (если рассчётная цена установки достигнута/превышена).
Для этого использую конструкцию:
pr - расчетная цена.
while(true) использую потому, что на следующем тике условие для выставления/открытия ордера может уже не выполняться, но ордер должен быть выставлен/открыт обязательно.
В тестере всё идёт хорошо до тех пор, пока в результате гэпа цена Ask не оказывается между pr и (pr-StopLevel), т.е. слишком близко для быставления БайСтоп, но слишком далеко для открытия Бай.
В этом месте советник зависает, т.к. RefreshRates() в тестере не работает.
Что в данном случае можно сделать, чтобы в тестере получить новую Ask не выходя из цикла?
Заранее благодарю за ответ.