Как проверить, была ли позиция модифицирована вручную? - страница 2

 

И все таки мне казалось, что в MQL5 (в отличии от MQL4) есть возможность посмотреть была ли модификация открытой позиции сделана вручную или нет.

 

в вашем случае - храните в памяти массив структур "сделки ведомые советником".

Время от времени и при выгрузке сохраняйте в файл.

при загрузке сверяйте (и в OnTrade или когда изменилась или по таймеру), что поменялось.

 
Elena Baranova #:

И все таки мне казалось, что в MQL5 (в отличии от MQL4) есть возможность посмотреть была ли модификация открытой позиции сделана вручную или нет.

   if((ENUM_DEAL_REASON)HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_CLIENT)

Без фильтрации по типу транзакции ручное изменение тейка ловит. Тип транзакции я не пытался определить.


добавлено: А собственно в этом случае всего два типа транзакций и новое значение тейка только в одном случае

  if(trans.type == TRADE_TRANSACTION_POSITION)
   {
    if((ENUM_DEAL_REASON)HistoryDealGetInteger(trans.deal, DEAL_REASON) == DEAL_REASON_CLIENT)
      Print(trans.price_tp);
   }
 
Maxim Kuznetsov #:

в вашем случае - храните в памяти массив структур "сделки ведомые советником".

Время от времени и при выгрузке сохраняйте в файл.

при загрузке сверяйте (и в OnTrade или когда изменилась или по таймеру), что поменялось.

Спасибо. Да, я думала этом направлении, но решила спросить . вдруг есть способ попроще ) 

 
Alexey Viktorov #:

Без фильтрации по типу транзакции ручное изменение тейка ловит. Тип транзакции я не пытался определить.

Спасибо, думаю это то, что нужно )

А в MQL4 такой возможности нет, да?

 
Elena Baranova #:

Спасибо, думаю это то, что нужно )

А в MQL4 такой возможности нет, да?

Если подключить библиотеку Артёма Тришкина, то будет. Но разобраться в ней ещё та проблема. Я пытался использовать её когда было 3-4 статьи… А теперь их штук 60.

Вот первая статья
Библиотека для простого и быстрого создания программ для MetaTrader (Часть I): Концепция, организация данных, первые результаты
Библиотека для простого и быстрого создания программ для MetaTrader (Часть I): Концепция, организация данных, первые результаты
  • www.mql5.com
Разбирая огромное количество торговых стратегий, множество заказов на изготовление программ для терминалов MT5 и MT4, просматривая различные сайты по MetaTrader, я пришёл к выводу, что всё это многообразие в подавляющем своём большинстве строится на фактически одних и тех же элементарных функциях, действиях и значениях, повторяющихся от программы к программе. Результатом моей работы стала кроссплатформенная библиотека "DoEasy" для быстрого и лёгкого создания программ для МetaТrader 5 и МetaТrader 4
 
Elena Baranova #:

Спасибо, думаю это то, что нужно )

А в MQL4 такой возможности нет, да?

Штатно нет. Сделки не транслируются.

 
Elena Baranova #:

Спасибо. Да, я думала этом направлении, но решила спросить . вдруг есть способ попроще ) 

это вот как-раз "попроще" и переносимо,чем разбираться в истории MT5 ..

в тому-же существенно ускоряет советник - можно не перезапрашивать истории на каждый чих, а иметь всё нужное под рукой

 
Maxim Kuznetsov #:

это вот как-раз "попроще" и переносимо,чем разбираться в истории MT5 ..

в тому-же существенно ускоряет советник - можно не перезапрашивать истории на каждый чих, а иметь всё нужное под рукой

А где запрашивается история на каждый чих?

Складывается такое впечатление, что вы очень далеки от mql5.

 
Elena Baranova:

Добрый день, коллеги.

Столкнулась с такой проблемой:

Есть советник, который управляет позициями открытыми вручную и другим советником - выставляет SL и TP, и трейлит SL по определенному алгоритму.

Нужно, чтобы советник перестал управлять теми позициями, у которых SL был изменен вручную. Есть версии советника для MT4 и MT5.

Можно ли идентифицировать посредством MQL4/MQL5, что модификация позиции была произведена вручную, а не данным советником?

Я такой возможности пока не вижу. Мне казалось, что в MQL5 это можно сделать через OnTradeTransaction(), но возможно я ошибаюсь, так как не нашла нужный параметр.

Буду благодарна за совет )

простейшее:

добавляйте позиции комментарий при выставлении SL/TP советником

если комментарий при наличии SL/TP отсутствует, советник не модифицирует

также Вам придется не совсем в ручную выставлять/модифицировать стопы и уводить некоторые позиции из под воздействия советника,

а с помощью панельки, которая будет зачищать (либо возвращать при необходимости) комментарий при наличии //скачайте панель с код базы

ну и ...

все будет!

Причина обращения: