Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 608
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Первая проблема Lots/Prikup - Dplus это необходимо нормализовать почитайте про это внимательно, если переменные типа double то вы с удивлением заметите что 4/2 выдаёт не ожидаемое 2 а 1.9999999999 видимо вы с этой проблемой ещё не сталкивались
Таким образом если у вас if((OrderMagicNumber() == Magic)&&(OrderLots() <= Lots/Prikup - Dplus)) будет ложным, а я с большой долей вероятности могу сказать что оно ложно, то даже если у вас cnt_OO больше 1 вы гарантированно придёт на блок после Метка 1. Так что все работает у вас без ошибок проблема в логике обработки данных.
Вторая проблема вы гарантированно обрабатываете исключительно последний в списке ордер зачем тогда было городить цикл for?
Если вы это делаете исключительно для тестера то выбрав последний из списка ордер вы действительно получите нужный ордер и то не всегда. На реальном рынке да ещё если запущено несколько советников вы гарантированно получите совсем не то что ожидаете а цикл у вас гарантированно после первого прохода прерывается по команде break
Первая проблема Lots/Prikup - Dplus это необходимо нормализовать почитайте про это внимательно, если переменные типа double то вы с удивлением заметите что 4/2 выдаёт не ожидаемое 2 а 1.9999999999 видимо вы с этой проблемой ещё не сталкивались
Таким образом если у вас if((OrderMagicNumber() == Magic)&&(OrderLots() <= Lots/Prikup - Dplus)) будет ложным, а я с большой долей вероятности могу сказать что оно ложно, то даже если у вас cnt_OO больше 1 вы гарантированно придёт на блок после Метка 1. Так что все работает у вас без ошибок проблема в логике обработки данных.
Вторая проблема вы гарантированно обрабатываете исключительно последний в списке ордер зачем тогда было городить цикл for?
Если вы это делаете исключительно для тестера то выбрав последний из списка ордер вы действительно получите нужный ордер и то не всегда. На реальном рынке да ещё если запущено несколько советников вы гарантированно получите совсем не то что ожидаете а цикл у вас гарантированно после первого прохода прерывается по команде
Первая проблема Lots/Prikup - Dplus это необходимо нормализовать почитайте про это внимательно, если переменные типа double то вы с удивлением заметите что 4/2 выдаёт не ожидаемое 2 а 1.9999999999 видимо вы с этой проблемой ещё не сталкивались
Таким образом если у вас if((OrderMagicNumber() == Magic)&&(OrderLots() <= Lots/Prikup - Dplus)) будет ложным, а я с большой долей вероятности могу сказать что оно ложно, то даже если у вас cnt_OO больше 1 вы гарантированно придёт на блок после Метка 1. Так что все работает у вас без ошибок проблема в логике обработки данных.
Вторая проблема вы гарантированно обрабатываете исключительно последний в списке ордер зачем тогда было городить цикл for?
Если вы это делаете исключительно для тестера то выбрав последний из списка ордер вы действительно получите нужный ордер и то не всегда. На реальном рынке да ещё если запущено несколько советников вы гарантированно получите совсем не то что ожидаете а цикл у вас гарантированно после первого прохода прерывается по команде break
насчет нормализации - спасибо, я не заметил что ее нет. Глаз просто замылился.
насчет цикла for : в архиве присутствуют разные ордера с разными мэйджиками и от разных пар. Я перебираю с конца пока не найду необходимый. Происходит это в тот момент, когда советник не начал работу и в списке не появятся новые нужные мне ордера. Цикл прерывается не по первому проходу, а тогда когда будет найден нужный мне ордер.
Насчет функций Onlinit и OnDeinit надо разобраться как следует. Необходимость их очевидна.
В данной реализации цикл не получается. Я прогнал ваш код в различных вариантах всегда один проход.
И теперь понятно где вы ошиблись!
Максимально всё прокомментировал! Пробуйте!
В данной реализации цикл не получается. Я прогнал ваш код в различных вариантах всегда один проход.
И теперь понятно где вы ошиблись!
Максимально всё прокомментировал! Пробуйте!
Спасибо, я понял. Здесь происходит обход ошибки связанной с отсутствием нормализации. При более тщательной проработке алгоритма восстановления Условие &&(OrderLots() <= Lots/Prikup - Dplus) оказалось не нужно.
Спасибо всем за добрые советы
вот результат тестирования. На реале примерно тоже, даже лучше. Заранее предупреждаю - это не мартингейл. Это еще хуже чем вам кажется :=). Просадка 1.3% прибыль 507$
Если получится, и не жалко поделится результатом - напишите решение задачи
Не получилось (я использовал библиотеку php openssl). Решил задачу по-другому.
Не получилось (я использовал библиотеку php openssl). Решил задачу по-другому.
То есть, у вас по итогу получилось зашифровать в МТ, а расшифровать в .php ? Какой способ использовали?
То есть, у вас по итогу получилось зашифровать в МТ, а расшифровать в .php ? Какой способ использовали?
Нет, я же пишу не получилось. Забил я на это дело. Для моей задачи достаточно хэша было. Я отправлял и получал хэш и обратно еще другой хэш в качестве подтверждения.
Так и не получилось расшифровать в PHP. Было бы неплохо если б кто-то смог этот вопрос серьезно осветить. Может быть разработчики или вроде того.
Нет, я же пишу не получилось. Забил я на это дело. Для моей задачи достаточно хэша было. Я отправлял и получал хэш и обратно еще другой хэш в качестве подтверждения.
Так и не получилось расшифровать в PHP. Было бы неплохо если б кто-то смог этот вопрос серьезно осветить. Может быть разработчики или вроде того.
Напишите свою функцию шифрования на пыхе, и перенесите её на mq. Так точно не расшифруют, и будет работать на 100% при любом раскладе.
Если получится, и не жалко поделится результатом - напишите решение задачи
гуглить "PKCS#7 padding format"