Статья: Как сократить код торгового эксперта, попутно упростив себе жизнь и уменьшив число возможных ошибок
Прокомментируйте пожалуйста этот кусочек, это должно работать?
double closePrice = iif( orderDirection() > 0, Bid, Ask ); bool modified = OrderModify( OrderTicket(), OrderOpenPrice(), closePrice - orderDirection() * Point * TrailingStop, OrderTakeProfit(), OrderExpiration() ); int error = GetLastError(); if( !modified && error != ERR_NO_RESULT ) { Print( "Failed to modify order " + OrderTicket() + ", error code: " + error ); }Вроде обсуждалось на форуме , что факт модификации так отследить нельзя.
Если на форуме нет желающих ответить, прошу прокоментировать
этот код разработчика MQL.
Извиняюсь за непонятливость, а в чем собственно вопрос?
Вроде все согласно документации, как написано так и будет работать.
timbo:
Извиняюсь за непонятливость, а в чем собственно вопрос?
Вопрос вот в чем. Когда мы открываем ордер - смотрим тикет, если
больше нуля , значит ордер открылся. Если производим модификацию,
как определить, что модификация состоялась? Понятно, что можно
сравнить модифицируемый параметр с сохраненным предыдущим.
А вот идентификация факта модификации посредстсвом булевой
функции - это что-то непонятное.
Извиняюсь за непонятливость, а в чем собственно вопрос?
Вроде все согласно документации, как написано так и будет работать.
А что непонятного-то? Не понимаю... Какие могут быть альтернативы
- либо модифицировал, либо нет... Все.
|
timbo:
А что непонятного-то? Не понимаю... Какие могут быть альтернативы - либо модифицировал, либо нет... Все.
ОК.
ОК.
А что непонятного-то? Не понимаю... Какие могут быть альтернативы - либо модифицировал, либо нет... Все.
|
FION писал (а):
Вроде обсуждалось на форуме , что факт модификации так отследить нельзя.
Ткните, плизз, где это обсуждалось. Мне, типа, интересно...
Вроде обсуждалось на форуме , что факт модификации так отследить нельзя.
FION писал (а):
А вот идентификация факта модификации посредстсвом булевой функции - это что-то непонятное.
Не согласен. Как раз всё понятно. Да или нет. И никаких гвоздей.
..
А вот идентификация факта модификации посредстсвом булевой функции - это что-то непонятное.
KimIV:
'Движение стопа'
FION писал (а):
Вроде обсуждалось на форуме , что факт модификации так отследить нельзя.
Ткните, плизз, где это обсуждалось. Мне, типа, интересно... Вроде обсуждалось на форуме , что факт модификации так отследить нельзя.
FION писал (а):
'Движение стопа'
'Движение стопа'
FION, не знаю, поняли Вы уже или нет, но скажу на всякий случай. Вы ошибочно смешали в кучу две разные вещи:
- Исполнение функции OrderModify()
- Модификация ордера
Факт исполнения функции OrderModify() проверяется возвращаемым ею значением логического типа. True - функция исполнилась, False - функция не исполнилась.
Факт модификации ордера проверяется сравнением значений функций:
- OrderPriceOpen()
- OrderStopLoss()
- OrderTakeProfit()
- OrderExpiration()
после модификации ордера со значениями этих же функций до модификации ордера. Если какое-то значение изменилось, значит ордер был модифицирован.
В кусочке кода, который Вы привели в своём первом посте этой темы, автор кода отслеживает факт исполнения функции OrderModify(), а не факт модификации ордера.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Описанная концепция, на мой взгляд, обладает следующими серьезными преимуществами:
сокращение исходного кода, без потери функциональности, и как следствие, сокращение временных затрат на разработку и отладку торговых систем;
уменьшение числа потенциальных ошибок;
увеличение вероятности обнаружения существующих ошибок;
упрощение дальнейшей модификации торгового эксперта (изменения автоматически распространяются как на длинные, так и на короткие сигналы и позиции).
Автор: Roman Kramar