Установил 207-й билд и обнаружил, что тестер теперь ругается на вызовы OrderModify(), которые раньше молча возвращали ERR_NO_RESULT. Теперь весь лог замусорен такими вот сообщениями:
Во-первых: это очень неудобно; во-вторых: совершенно бессмысленно, т.к. ERR_NO_RESULT не является ошибкой, согласно документации.
Установил 207-й билд и обнаружил, что тестер теперь ругается на вызовы OrderModify(), которые раньше молча возвращали ERR_NO_RESULT. Теперь весь лог замусорен такими вот сообщениями:
Во-первых: это очень неудобно; во-вторых: совершенно бессмысленно, т.к. ERR_NO_RESULT не является ошибкой, согласно документации.
Это не ошибка в логике. Такая ситуация часто будет возникать даже в случае простейшего трейлинг-стопа. Более того, я не прошу пропускать такие приказы на сервер. Я прошу как и раньше возвращать ERR_NO_RESULT, не пропуская такие ордера, но не выводить ничего в лог, т.к. это не критическая ошибка.
Текущая ситуация такова, что потребуется доработка всех существующих экспертов при переходе на 207-й билд. Т.е. нарушена обратная совместимость.
Это не ошибка в логике. Такая ситуация часто будет возникать даже в случае простейшего трейлинг-стопа. Более того, я не прошу пропускать такие приказы на сервер. Я прошу как и раньше возвращать ERR_NO_RESULT, не пропуская такие ордера, но не выводить ничего в лог, т.к. это не критическая ошибка.
Текущая ситуация такова, что потребуется доработка всех существующих экспертов при переходе на 207-й билд. Т.е. нарушена обратная совместимость.
Не паникуй!!! Все в поряде! А такую проверку хотя бы для быстроты кода добавь, чтоб не обрабатывал чего не надо!
cloud666!!!!! я очень рад!!! я рад, что ты думаешь, что это добавит быстроты моему коду!!!
А если серьезно, молодой человек, не флудите без толку, если не
понимаете, о чем идет речь. Такая проверка испокон веков осуществлялась
самим терминалом и будет осуществляться им всегда, чтобы по
мере возможности не грузить торговый сервер. Зачем мне добавлять
в свой код то, что уже делается самим терминалом? Может мне еще
что-нибудь нужно добавить из функциональности терминала? Думаете
станет в разы быстрее работать?
Вы вызываете OrderModify без изменения параметров (SL, TP) ордера, что является прямой ошибкой в логике (никто не разрешит передавать на сервер бесполезные заявки) и мы специально указываем на это. Контролируйте неизменность параметров ордера самостоятельно.
Мне кажется, ответ был дан руководителем фирмы-разработчика. Вы собираетесь с этим спорить и, пардон, "качать" права? В чужой монастырь со своим уставом не ходят, тем более, что техническое обоснование такого действия было указано - снятие бесполезной нагрузки с торгового сервера.
Об этом больше спорят, чем сделать:
if (OrderStopLoss() != newStopLoss) || (OrderTakeProfit() != newTakeProfit) { // modify order }
Не паникуй!!! Все в поряде! А такую проверку хотя бы для быстроты кода добавь, чтоб не обрабатывал чего не надо!
cloud666!!!!! я очень рад!!! я рад, что ты думаешь, что это добавит быстроты моему коду!!!
А если серьезно, молодой человек, не флудите без толку, если
не понимаете, о чем идет речь. Такая проверка испокон веков осуществлялась
самим терминалом и будет осуществляться им всегда, чтобы по
мере возможности не грузить торговый сервер. Зачем мне добавлять
в свой код то, что уже делается самим терминалом? Может мне еще
что-нибудь нужно добавить из функциональности терминала? Думаете
станет в разы быстрее работать?
Вот такой код ускорит его работу:
if(OrdersTotal()==1) { OrderSelect(0,SELECT_BY_POS,MODE_TRADES); slu=Bid-OrderOpenPrice(); b=Bid; sld=OrderOpenPrice()-Ask; a=Ask; if(OrderType()==0) { if(((slu)>0.001) && (OrderStopLoss()<(b-TrailingStop)) && (OrderOpenPrice()<(b-TrailingStop)) && (OrderProfit()>MathAbs(OrderSwap()))) { OrderModify(OrderTicket(), 0, b-TrailingStop, 0, 0, 0);return(0); } } if(OrderType()==1) { if(((sld)>0.001) && (OrderStopLoss()>(a+TrailingStop)) && (OrderOpenPrice()>(a+TrailingStop))) { OrderModify(OrderTicket(), 0, a+TrailingStop, 0, 0, 0);return(0); } } }
Мне кажется, ответ был дан руководителем фирмы-разработчика. Вы собираетесь с этим спорить и, пардон, "качать" права? В чужой монастырь со своим уставом не ходят, тем более, что техническое обоснование такого действия было указано - снятие бесполезной нагрузки с торгового сервера.
Об этом больше спорят, чем сделать:
if (OrderStopLoss() != newStopLoss) || (OrderTakeProfit() != newTakeProfit) { // modify order }
Очень смешно. Особенно если учесть, что даже в таком простом примере вы сделали уже две ошибки. Позволю себе напомнить вам, что сравнение чисел с плавающей точкой так делают только очень далекие от программирования люди. Если ваши эксперты используют такой код, то вам тоже придется их править.
Да, я не буду спорить, что можно добавить корректное сравнение. И я сразу отметил это, просто никто не читает сообщения до конца. Я же не зря сказал, что теперь придется править всех советников из-за такого поведения 207-го билда.
Также еще раз отмечу, что нет бесполезной нагрузки на сервер, т.к. терминал и до 207-го билда всегда отслеживал такие ситуации и не посылал ордера без изменений на сервер. О чем неоднократно упоминалось разработчиками на этом форуме.
Более того, о каком "качании" прав может идти речь? Я заметил изменение в поведении тестера и отметил это на форуме. Получил ответ, выразил свое мнение и все. Или любой ответ на пост представителей разработчика считается "качанием" прав?
Особенно если учесть, что даже в таком простом примере вы сделали уже две ошибки.
chv, не обращайте внимания на эти слова. Я, как программист, сразу понял, что Вы хотели сказать и чем помочь. А если bstone этого не понял, так это его проблемы. Я сначала хотел выложить свою универсальную функция модификации ордера со всеми необходимыми проверками, но передумал. Она bstone не нужна.
Вы как программист сразу поняли, а сотни других людей могли
не понять и начать использовать этот ошибочный код в своих экспертах.
Универсальная функция модификации ордера мне действительно не нужна, спасибо. И если бы вы читали мои посты, то поняли бы это раньше. Я же не спрашивал, как избавиться от этой ошибки - я поставил вопрос в плане обратной совместимости. Почему раньше такое поведение экспертов было нормой, а теперь резко стало ошибкой?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Установил 207-й билд и обнаружил, что тестер теперь ругается на вызовы OrderModify(), которые раньше молча возвращали ERR_NO_RESULT. Теперь весь лог замусорен такими вот сообщениями:
Во-первых: это очень неудобно; во-вторых: совершенно бессмысленно, т.к. ERR_NO_RESULT не является ошибкой, согласно документации.