Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 513

 

Добрый день,

Я где-то намудрила в коде, в результате он делает не совсем что нужно. Как выгрузить по-шагово какие операции делает код, чтобы посмотреть что я упустила?

 
kashi_ann:

Добрый день,

Я где-то намудрила в коде, в результате он делает не совсем что нужно. Как выгрузить по-шагово какие операции делает код, чтобы посмотреть что я упустила?

Разработка программ: Отладка - MetaEditor
 

Да, я всем этим пользуюсь. Мне бы хотелось видеть результат, скажем 10-20 заходов, в одной таблице. Это возможно?

Например на 15 мин. графике:

9-00 такие данные

9-15- следующие

9-30 - следующие и т.д. 

Логика такая:

Открываем 2 отложенных ордера разнонаправленных (2,3). Срабатывает один из них (2), удаляется другой (3).

Когда закрывается и первый (2) (закрывается ордером 4), проверяем есть ли ордера/позиции. Если нет, цикл повторяется.

Вроде ничего мудреного. 

У меня получается по отладке открытых ордеров и позиций нет. И следующий шаг по коду в этой ситуации выставить 2 новых отложенных ордера (5,6), а в результате выставляет только один (5).

При этом в момент когда отладка пишет ордеров/позиций нет, на графике отображены линии по какому-то ордеру/позиции без номера.

Далее переходит к строкам выставления ордеров, ничего не происходит, хотя на первом круге сразу в торговлю выпадали ордера.

Доходит до конца кода, возвращается в начало, данные обновляются, с графика стирается, тот ордер, что был виден раньше, и появляется один новый ордер (5).

 

Что я не учла?! 

 

 Может выждать один бар...и потом цикл повторять...

 
kashi_ann:

Да, я всем этим пользуюсь. Мне бы хотелось видеть результат, скажем 10-20 заходов, в одной таблице. Это возможно?

Например на 15 мин. графике:

9-00 такие данные

9-15- следующие

9-30 - следующие и т.д. 

Функции 

Comment();
Alert();
Print();
PrintFormat();

вам в помощь 

 
kashi_ann:

Да, я всем этим пользуюсь. Мне бы хотелось видеть результат, скажем 10-20 заходов, в одной таблице. Это возможно?

... 

Никак не могу сообразить, что-же Вы хотите видеть?
 
Karputov Vladimir:
Никак не могу сообразить, что-же Вы хотите видеть?

Собственно говоря, ничего конкретного.

Я столкнулась с проблемой, которую я не знаю как решить.

Предыдущий опыт, мне подсказывает, что я что-то не учла. 

По средствам отладки у меня не получается проследить свою ошибку.

И я плохо понимаю как обрабатывает программа код, поэтому хочу увидеть всю последовательность, чтобы видеть всю картину в целом.

Если есть другой путь, рада выслушать. 

 
kashi_ann:

Собственно говоря, ничего конкретного.

Я столкнулась с проблемой, которую я не знаю как решить.

Предыдущий опыт, мне подсказывает, что я что-то не учла. 

По средствам отладки у меня не получается проследить свою ошибку.

И я плохо понимаю как обрабатывает программа код, поэтому хочу увидеть всю последовательность, чтобы видеть всю картину в целом.

Если есть другой путь, рада выслушать. 

Снова нет конкретики. Ладно: пальцем в небо - DebugBreak.

Применять примерно так:

//---
   if(PositionSelect(Symbol()))
     {
      //--- если успешно выбрали позицию по символу
      DebugBreak(); // программная остановка отладки
     }
 
Здравствуйте! Подскажите пожалуйста код при котором советник будет исполнять какое либо действие в начале нового для т. е. 00.00, или другими словами как отобразить условие "если наступил новый день(00.00)" на языке MQL?
 
Karputov Vladimir:

Снова нет конкретики. Ладно: пальцем в небо - DebugBreak.

Применять примерно так:

Karputov Vladimir
:

Снова нет конкретики. Ладно: пальцем в небо - DebugBreak.

Применять примерно так:

Ок, Что нужно для конкретики? Чуть раньше писала.

Смысл такой:

открывается 2 отложенного ордера.

один исполняется, другой удаляется за ненадобностью.

первый через время тоже закроется (с плюсом или с минусом).

по идеи мы возвращаемся в исходную точку. И всё должно повториться.

Ан нет.

перед всем этим процессом ставлю:

   b1 = OrdersTotal();                                      //количество ордеров               
   c1 = PositionSelect(_Symbol);                            //наличие позиции

Если оба по нулям - то выполняем схему, если нет - то нет.

В отладке ставлю эти два пункта в наблюдение. Оба они по 0. Но на втором круге ставиться только один ордер.

Почему так?

 
kashi_ann:

Ок, Что нужно для конкретики? Чуть раньше писала.

Смысл такой:

открывается 2 отложенного ордера.

один исполняется, другой удаляется за ненадобностью.

первый через время тоже закроется (с плюсом или с минусом).

по идеи мы возвращаемся в исходную точку. И всё должно повториться.

Ан нет.

...

Ваша логика, Вы и должны сами ответить на вопрос.

 

kashi_ann:

...

В отладке ставлю эти два пункта в наблюдение. Оба они по 0. Но на втором круге ставиться только один ордер.

Почему так?

 Опять таки, только Вы сами можете ответить, так как логика Ваша.

 

А вообще повторюсь в очередной раз: в правильно поставленном вопросе содержится 90% ответа. В общем ставьте точки останова перед тем местом в коде где Вы проводите действие с позицией. А дальше пошаговая отладка.