Он сделок не открывает. Никогда.
Он сделок не открывает. Никогда.
if(TimeHour(TimeCurrent()<TimeIn || TimeHour(TimeCurrent()>=TimeOut) return;Так лучше ?
Так лучше ?
Я так подозреваю, что вот так (скобок не хватает):
if(TimeHour(TimeCurrent())<TimeIn || TimeHour(TimeCurrent())>=TimeOut) return;Чем лучше?
В общем. Насколько я понял, это о надписи в справочнике, что значение не меняется с момента запуска программы. Думаю, там не то имели в виду, скорей всего имелось в виду с момента взятию управления программой, в нашем случае при запуске OnTick()
Соорудил такую конструкцию и пару часов потестил на минутке:
Print("Ч ",Hour()); Print("Ч ",TimeHour(TimeCurrent())); Print("М ",Minute()); Print("М ",TimeMinute(TimeCurrent())); Print("С ",Seconds()); Print("С ",TimeSeconds(TimeCurrent()));
В логе можно заметить, что значения одинаковы.
А также в логе можно заметить опровержение первого комментария, даже на минутке нашлась подходящая свеча, был открыт ордер и переведен в БУ.
Стратегию пока не тестировал и, по сути, ничего от нее не ожидаю, но хотелось бы отметить добрым словом стиль написания программы - просто и понятно, без излишних нагромождений. Поскольку Mql только недавно начал изучать, то нашел некоторые полезные мелочи в коде программы.
Стратегию пока не тестировал и, по сути, ничего от нее не ожидаю, но хотелось бы отметить добрым словом стиль написания программы - просто и понятно, без излишних нагромождений. Поскольку Mql только недавно начал изучать, то нашел некоторые полезные мелочи в коде программы.
Спасибо!
А какие мелочи, например?
Просто это одна из первых программ, много пересмотрено :)
1) Отдельно вынесенный громоздкий блок обработки ошибок;
2) Четко выделенный блок "ничегонеделания" в onTick: во многих программах его пихают в блок принятия решения (в if-и на покупку/продажу);
3) Простой модификатор заказа (перенесения в БУ) - опять же, часто это простое действие расписывают на 100500 строк, не понятно зачем;
4) Отсутствуют структуры из множества вложенных if-ов.
5) Блок принятия решений (выставления ордеров) вынесен из onTick в отдельные функции.
В общем, ничего особенного, но эстетично, с намеком на ООПшность - хороший базовый скелет программы.
Как-то так:)
1) Отдельно вынесенный громоздкий блок обработки ошибок;
2) Четко выделенный блок "ничегонеделания" в onTick: во многих программах его пихают в блок принятия решения (в if-и на покупку/продажу);
3) Простой модификатор заказа (перенесения в БУ) - опять же, часто это простое действие расписывают на 100500 строк, не понятно зачем;
4) Отсутствуют структуры из множества вложенных if-ов.
5) Блок принятия решений (выставления ордеров) вынесен из onTick в отдельные функции.
В общем, ничего особенного, но эстетично, с намеком на ООПшность - хороший базовый скелет программы.
Как-то так:)
1) О, он сейчас намного больше :) + добавлен блок, который пытается исправлять некритичные ошибки.
4) Без этого бывает не обойтись...
А в остальном да, код должен быть понятным, и прежде всего себе :) В OnTick (OnTimer и тп) структура программы, все остальное по блокам.
И побольше комментариев :) После написания первой относительно большой программы вернулся к ней через месяц-два, что-то добавить, и сижу вспоминаю, что тут к чему, хотя тогда думал "что тут комментировать, и так понятно". Убил день, чтобы все вспомнить и прокомментировать, зато теперь быстро все нахожу и вношу изменения :)

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Free Candle:
Эксперт по стратегии "Свободная свеча".
Описание стратегии можно легко найти в интернете. Если вкратце, то на графике М15 наносим ЕМА 9 и, когда появляется свеча, которая не касается ЕМА ни телом, ни тенями, открываем сделку в ее сторону. Стоп Лосс устанавливаем за свечу, тейкпрофит до 2-х Стоп Лоссов. При достижении определенного профита, переводим в безубыток. Рекомендованы к работе все основные валютные пары EURUSD, USDJPY, USDCHF, GBPUSD и основные кроссы EURGBP, EURJPY,GBPJPY.
Настраиваемые параметры
Автор: Oleksii Chepurnyi