Обсуждение статьи "Знакомство с MQL5: написание простого советника и индикатора" - страница 4

 

Этот ExpertAdvisor не работает на MT5 build 712, по крайней мере, у меня.

Выдается сообщение об ошибке "Cant't copy indicator buffer".

Также индикатор не компилируется без предупреждений,

"Возможна потеря данных из-за преобразования типов" в строке 53,

"возможно использование неинициализированной переменной 'day_n'" на строке 54

"возможно использование неинициализированной переменной 'h_day'" в строке 62

"psosible use on uninitialized varaiable 'l_day'" в строке 63


Можете ли вы исправить эти проблемы, пожалуйста?

В остальном это хороший пример для нас, имеющих опыт работы с другим программным обеспечением, кроме MT5.

 
Если я хочу разместить 5 отложенных ордеров sell stop и 5 buy stop с разрывом между ними 10 пунктов. Как мне это сделать?
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

Это отличная статья для новичков и людей, пришедших из mql4, с примером хорошей торговой стратегии.

Есть небольшие недочеты в коде (не всегда реализована проверка ошибок), но советник работает очень хорошо, если использовать его на минутном таймфрейме, как рекомендует автор. Предупреждения при компиляции индикатора являются лишь предупреждениями и не препятствуют использованию индикатора и советника.

Спасибо.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes
  • www.mql5.com
Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes - Documentation on MQL5
 

Это не простой способ объяснить mql5 людям. (как будто у новичков вообще есть шанс понять это!) Это как с книгами по программированию, 90% людей не имеют понятия, как начать. Они открывают книгу, например, о программировании на Си, и первый "Простой пример" занимает целую страницу, написанную мелким шрифтом. За всю свою жизнь я прочитал только одну хорошую книгу по программированию, которая могла бы научить программированию любого. Причина в том, что их пишут, возможно, отличные программисты, но, к сожалению, очень плохие учителя. Программирование может быть очень простым, и я докажу вам это, сделав простой учебник по языку программирования MQL4, когда у меня будет немного больше времени, чем сейчас. Для всех - даже для абсолютных новичков. Самая большая ошибка - учить людей деталям языка, в основном они должны работать с ctrl+C и ctrl+v и использовать google для команд и самое главное - держать все ОЧЕНЬ ПРОСТО. Я знаю 10+ языков программирования (программирую с 7 лет) и меня до сих пор пугает то, как объясняется этот "Легкий пример" на 11кб (!!!). Я хотел бы знать, есть ли хоть один настоящий начинающий программист, который изучил MQL5 на этом примере ;D. Я сомневаюсь, а если и есть, то таких людей можно пересчитать по пальцам одной руки.

Fast Dive into MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
You have decided to study MQL5 trading strategies' programming language, but you know nothing about it? We have tried to examine MQL5 and MetaTrader 5 terminal from the newcomers' point of view and have written this short introductory article. In this article, you can find a brief idea of the possibilities of the language, as well as some tips on working with MetaEditor 5 and the terminal.
 
angreeee:

Это не простой способ объяснить mql5 людям. (как будто у новичков вообще есть шанс понять это!) Это как с книгами по программированию, 90% людей не имеют понятия, как начать. Они открывают книгу, например, о программировании на Си, и первый "Простой пример" занимает целую страницу, написанную мелким шрифтом. За всю свою жизнь я прочитал только одну хорошую книгу по программированию, которая могла бы научить программированию любого. Причина в том, что их пишут, возможно, отличные программисты, но, к сожалению, очень плохие учителя. Программирование может быть очень простым, и я докажу вам это, сделав простой учебник по языку программирования MQL4, когда у меня будет немного больше времени, чем сейчас. Для всех - даже для абсолютных новичков. Самая большая ошибка - учить людей деталям языка, в основном они должны работать с ctrl+C и ctrl+v и использовать google для команд и самое главное - держать все ОЧЕНЬ ПРОСТО. Я знаю 10+ языков программирования (программирую с 7 лет) и меня до сих пор пугает то, как объясняется этот "Легкий пример" на 11кб (!!!). Я хотел бы знать, есть ли хоть один настоящий начинающий программист, который изучил MQL5 на этом примере ;D. Сомневаюсь, а если и есть, то таких людей можно пересчитать по пальцам одной руки.

Вы правы в том, что программисты не являются хорошими учителями в целом.

Но я не согласен с тем, что mql5 так сложно выучить, в основном для программиста, который экспериментировал с 10+ языками.

 
Действительно, это отличная статья для новичков в программировании на mql5, таких как я. angevoyageur говорит об этом правильно.
 

На практике, насколько я помню, удается изменить один из уровней (SL или TP) позиции, оставляя другие уровни без изменения, даже в тех случаях, когда уровень, значение которого остается без изменения, находится ближе к текущей цене, чем указано в параметре SYMBOL_TRADE_STOPS_LEVEL. При создании программ я не рекомендую изменять параметры (уровни) позиций таким образом, чтобы новые параметры (уровни) позиции не удовлетворяли требованиям, которые предъявляются при проверке правильности данных позиции, так как такая ситуация является недокументированной и в будущем можно получить другой результат.

[Удален]  
Я скопировал советник и попытался протестировать его в Strategytester. Но он не совершает никаких сделок. Я новичок в MQL5 и программировании, так что, возможно, я просто совершил глупую ошибку. Советник скомпилировался без ошибок. Мне бы очень хотелось получить эту стратегию! Есть идеи, почему она не работает в Strategytester?
 

Всем привет!

 У меня все работает отлично только при

   request.type_filling=ORDER_FILLING_IOC;

   request.type_time    = ORDER_TIME_DAY

Аналогичная ситауция c https://www.mql5.com/ru/forum/1156/page9#comment_2359257

 

 Особенность моего брокера FxPro? 

Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
  • www.mql5.com
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих". - Страница 9 - Категория: статьи и техническая библиотека по автоматическому трейдингу
 

Я новичок в программировании на mql5.


Пытался научиться на этом примере, но немного запутался с циклом в конце построения индикатора. Где именно он присвоил значение переменной day_n?


Потому что цикл будет проверять day_n<day_t. Как программа может узнать значение day_n?


for(i=prev_calculated;i<rates_total;i++)
     {
      day_t=time[i]/PeriodSeconds(ATRtimeframe);
      if(day_n<day_t)
        {
         day_n=day_t;
         h_day=high[i];
         l_day=low[i];
        }
        else
        {
         if(high[i]>h_day) h_day=high[i];
         if(low[i]<l_day) l_day=low[i];
        }
      bu[i]=l_day+atr[1];
      bd[i]=h_day-atr[1];
     }


И как оно вообще вычисляется? Предположим, что rate_total = 10, и еще нет ни одного рассчитанного бара. Значит, prev_calculated = 0


day_t=time[0] (СЕГОДНЯ! так как отсчет ведется в обратном направлении)/PeriodSeconds... так как отсчет начинается с 1970 года, предположим, что отсчет начинается с 10 дней назад. так что должно получиться 10, верно?

Поэтому day_t=10. Теперь проверяется, не превышает ли dayt > dayn. Я не знаю dayn, но знаю, что dayt=10. Я собираюсь предположить, что dayn равен нулю, поскольку нет никакого значения.

Тогда dayn тоже станет 10. Хорошо.

Второй бросок цикла. prev_calculated + 1= 1.

DayT=time[1] (yesterday)/period... помните, он начинает отсчет с 10 дней назад... но теперь только до вчерашнего дня. это должно дать значение 9, верно?

Но теперь dayN < dayT - ложь. Тогда он начинает выполнять выражения else. Хорошо. Я понял.


Затем он вычисляет все bu[] и bd[]. Хорошо. Цикл завершится, когда prev < total rate станет ложным.

Но когда появится новый бар, и он снова станет истинным, я снова начну с нуля? Или он начнется с 10 и сразу перейдет к части else?


Спасибо!!!!