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

 
Vitaly Muzichenko #:

Всё зависит от последовательности наложения, кто последний - тот и сверху

Определяйте буфер с DRAW_FILLING первым

Удивительно, но сработало! Я то думал, этот финт касается только буферов одного индикатора, а оно оказывается для всех так.

Спасибо!

 
Vitaly Muzichenko #:

Спасибо большое, попробую

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".
 

Оптимизация:

"Все тики" и  "Каждый тик на основе реальных тиков" - это одно и тоже? Чему верить больше, если тест проводится с 2012 года


В первом случае терминал пишет "96% качество истории", во втором "26% реальных тиков". 

 
Ivan Butko #:

Оптимизация:

"Все тики" и  "Каждый тик на основе реальных тиков" - это одно и тоже? Чему верить больше, если тест проводится с 2012 года


В первом случае терминал пишет "96% качество истории", во втором "26% реальных тиков". 

Читайте логи - и Вы увидите с какого года идут реальные тики. Как правило реальные тики есть на последние года три.

 
Vladimir Karputov #:

Читайте логи - и Вы увидите с какого года идут реальные тики. Как правило реальные тики есть на последние года три.

Понял, значит реальные тики лучше, хоть и пишет 26% против 96%. Последнее число красивее выглядит)

Подскажите, пожалуйста, еще как выбрать последний тикет в истории? Или последнюю сделку. Мне нужно узнать, как она закрылась: по стопу или нет. 

Пробую что-то, не получается. 

    int Last_deal_ticket = 0;
    for(int cnt=PositionsTotal()-1;cnt>=0;cnt--)
      {
        if(PositionSelectByTicket(PositionGetTicket(cnt)))
        if(PositionGetSymbol(cnt)==Symbol() && PositionGetInteger(POSITION_MAGIC)==Magic_number)
        Last_deal_ticket=PositionSelectByTicket(PositionGetTicket(cnt));
      }
    // потом, когда закроется, будет висеть с этим тикетом в истории
    // обращаемся к истории
    HistorySelectByPosition(Last_deal_ticket);
    if (HistoryDealGetString(Last_deal_ticket, (ENUM_DEAL_PROPERTY_STRING)DEAL_REASON)==DEAL_REASON_SL......... )


 
Ivan Butko #:

Понял, значит реальные тики лучше, хоть и пишет 26% против 96%. Последнее число красивее выглядит)

Нет, Вы не поняли. 

1. Реальные тики действительно дают реальную картину при тестировании.

2. Но, использовать реальные тики нужно с головой - нужно смотреть в логи, чтобы понять с какой даты есть реальные тики.  Иначе в Вашем случае с 2012 по (приблизительно 2018) идут "все тики", и только потом идут "каждый тик на основе реальных тиков.

3. Вставляйте код ПРАВИЛЬНО: СНАЧАЛА кнопка  Code и ПОТОМ во всплывающее окно вставлять код!!!

 
Vladimir Karputov #:

Нет, Вы не поняли. 

1. Реальные тики действительно дают реальную картину при тестировании.

2. Но, использовать реальные тики нужно с головой - нужно смотреть в логи, чтобы понять с какой даты есть реальные тики.  Иначе в Вашем случае с 2012 по (приблизительно 2018) идут "все тики", и только потом идут "каждый тик на основе реальных тиков.

3. Вставляйте код ПРАВИЛЬНО: СНАЧАЛА кнопка   и ПОТОМ во всплывающее окно вставлять код!!!

Принял, благодарю

 
Ivan Butko #:


Подскажите, пожалуйста, еще как выбрать последний тикет в истории? Или последнюю сделку. Мне нужно узнать, как она закрылась: по стопу или нет. 

Пробую что-то, не получается. 

Вроде захватил в истории последнюю сделку, попробовал узнать, как она закрыта

Print("Last deal close = ", HistoryDealGetInteger(Last_deal_ticket,DEAL_REASON)); 

Лог 

Last deal close = 3


Посмотрел в документацию, там 

Идентификатор

Описание

DEAL_REASON_CLIENT

Сделка проведена в результате срабатывания ордера, выставленного из десктопного терминала

DEAL_REASON_MOBILE

Сделка проведена в результате срабатывания ордера, выставленного из мобильного приложения

DEAL_REASON_WEB

Сделка проведена в результате срабатывания ордера, выставленного из веб-платформы

DEAL_REASON_EXPERT

Сделка проведена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом

DEAL_REASON_SL

Сделка проведена в результате срабатывания ордера Stop Loss


Первые 5 строчек. 

Не пойму, что это означает: если считать с 1, то 3-ка — это DEAL_REASON_WEB, что неверно. Если с нуля, то DEAL_REASON_EXPERT. Но, тогда я не понимаю теперь, как узнать, в какой сделке наступил стоп-лосс. 

Прошу помочь. 

 
Ivan Butko #:

Вроде захватил в истории последнюю сделку, попробовал узнать, как она закрыта

Лог 

Last_deal_ticket = 3


Посмотрел в документацию, там 

Идентификатор

Описание

DEAL_REASON_CLIENT

Сделка проведена в результате срабатывания ордера, выставленного из десктопного терминала

DEAL_REASON_MOBILE

Сделка проведена в результате срабатывания ордера, выставленного из мобильного приложения

DEAL_REASON_WEB

Сделка проведена в результате срабатывания ордера, выставленного из веб-платформы

DEAL_REASON_EXPERT

Сделка проведена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом

DEAL_REASON_SL

Сделка проведена в результате срабатывания ордера Stop Loss


Первые 5 строчек. 

Не пойму, что это означает: если считать с 1, то 3-ка — это DEAL_REASON_WEB, что неверно. Если с нуля, то DEAL_REASON_EXPERT. Но, тогда я не понимаю теперь, как узнать, в какой сделке наступил стоп-лосс. 

Прошу помочь. 

Вы используете перечисление ENUM_DEAL_REASON. Вы не должны сравнивать элемент перечисления с какими то цифрами, Вы должны сравнивать с элементами перечисления. Вот пример, который обращается к торговой истории (правда в OnTradeTransaction) и обнаруживает сработку по Стоп лоссу и по Тейк профиту:

Example: tracking the triggering of Stop Loss or Take Profit

How to start with MQL5
How to start with MQL5
  • 2020.09.17
  • www.mql5.com
This thread discusses MQL5 code examples. There will be examples of how to get data from indicators, how to program advisors...
Причина обращения: