Как узнать что сработал стоплосс или тейкпрофит - страница 2

 
sergeev:

если честно, то в том тексте теряется "Кнопка SRC", за огромной картинкой вставки видео. Эта картинка, имеющая почти созвучное название очень сбивает с толку.

Добавьте пожалуйста такую же картинку для вставки кода. То есть какое будет окно при вставке кода при нажатии на эту кнопку SRC  ну и в него кода немного.


Спасибо за ваше предложение. Памятка пользователя дополнена.
 
sergey1294:
Нужен простой пример как узнать сработал стоплосс или тейкпрофит у определенной позиции в истории.
   if(AntiLoss>0)
     {
      //--- select history for access
      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      ulong ticket=HistoryDealGetTicket(orders-1);        
      double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); //--- check profit
         if(profit>0.0)
            Comment("\nDeal closed by profit!");
         if(profit<0.0)
           {
            losses++;
            Comment("\nDeal closed by stop loss!");
           }
     }
Вроде простой пример.
 
AM2:
Вроде простой пример.
Это некорректный код (делает не то, о чем просили). По стоплоссу позиция может быть закрыта и в плюсе, а по тейкпрофиту - в минусе.
 
sergey1294:
Нужен простой пример как узнать сработал стоплосс или тейкпрофит у определенной позиции в истории.
Похоже, что кроме комментария больше инфы нету нигде. Если в комменте sl или tp, то можно сделать вывод. Проблема в том, что, если СЛ/ТП сработали с проскальзыванием больше определенной величины, то этих sl/tp в комменте может не быть. Сталкивался с таким на ФОРТС.
 
Dima_S:
Похоже, что кроме комментария больше инфы нету нигде. Если в комменте sl или tp, то можно сделать вывод. Проблема в том, что, если СЛ/ТП сработали с проскальзыванием больше определенной величины, то этих sl/tp в комменте может не быть. Сталкивался с таким на ФОРТС.
Я проверял по наличию SL/TP у позиции (ордера) и чтобы цена закрытия была лучше или равна TP и хуже или равна SL.
 
marketeer:
Я проверял по наличию SL/TP у позиции (ордера) и чтобы цена закрытия была лучше или равна TP и хуже или равна SL.
Да, думаю, что сам терминал так и определяет (или сервер). На ФОРТС ТП не всегда лучше или равен заданному ТП.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как узнать что сработал стоплосс или тейкпрофит

Валерий, 2010.05.03 07:31

Ну, по комменту то довольно просто  проверяется. Вопрос в том, насколько такая проверка легитимна.

Проверяет, как была закрыта последняя позиция по символу:

void OnStart()
  {
//--- request trade history
   HistorySelect(0,TimeCurrent());
   uint total_deal=HistoryDealsTotal();
   for(uint i=total_deal-1;i>=0;i--)
     {
      ulong ticket=HistoryDealGetTicket(i);

Резануло сразу! Мало того, что начальное значение i может приниматься UINT_MAX, так еще и цикл бесконечный.

Интересно, ради чего используют unsigned-целые в for?

 
Sergey Gritsay:
Нужен простой пример как узнать сработал стоплосс или тейкпрофит у определенной позиции в истории.

Теперь (начиная с билда 1625 и даже уже в 1616) Бета-версия платформы MetaTrader 5 build 1625: Пользовательские финансовые инструменты можно узнать, что сработал Stop Loss или Take Profit:


MQL5: Добавлена возможность получения причины создания ордера, сделки и позиции.

Новые свойства


Причины создания ордера, сделки и позиции
Для получения причин создания торговых операций добавлено три перечисления:

ENUM_POSITION_REASONENUM_DEAL_REASONENUM_ORDER_REASONОписание причины
POSITION_REASON_CLIENTDEAL_REASON_CLIENTORDER_REASON_CLIENTОперация совершена в результате срабатывания ордера, выставленного из десктопного терминала
POSITION_REASON_MOBILEDEAL_REASON_MOBILEORDER_REASON_MOBILEОперация совершена в результате ордера, выставленного из мобильного приложения
POSITION_REASON_WEBDEAL_REASON_WEBORDER_REASON_WEBОперация совершена в результате срабатывания ордера, выставленного из веб-платформы
POSITION_REASON_EXPERTDEAL_REASON_EXPERTORDER_REASON_EXPERTОперация совершена в результате срабатывания ордера, выставленного из MQL5-программы – советником или скриптом
-DEAL_REASON_SLORDER_REASON_SLОперация совершена в результате срабатывания Stop Loss
-DEAL_REASON_TPORDER_REASON_TPОперация совершена в результате срабатывания Take Profit
-DEAL_REASON_SOORDER_REASON_SOОперация совершена в результате наступления события Stop Out
-DEAL_REASON_ROLLOVER-Сделка совершена по причине переноса позиции
-DEAL_REASON_VMARGIN-Сделка совершена по причине начисления/списания вариационной маржи
-DEAL_REASON_SPLIT-Сделка совершена по причине сплита (понижения цены) акции или иного актива, по которому имелась позиция на момент объявления сплита
 
Vladimir Karputov:

Теперь (начиная с билда 1625 и даже уже в 1616) Бета-версия платформы MetaTrader 5 build 1625: Пользовательские финансовые инструменты можно узнать, что сработал Stop Loss или Take Profit:

А вот эту штуку там реализовали?

Renat Fatkhullin:

В новой версии терминала, которая скоро выйдет, мы полностью переписали работу с огромной историей и теперь ничего не тормозит.

При тесте на MetaQuotes-Demo, EURUSD M1, 2017.01.01-2017.05.01, every tick  на указанном советнике получается:

  • релиз 1596

    244 349 сделок в истории за 15 минут 22 секунды

  • будущая версия 

    244 349 сделки за 24 секунды

Ускорение с 15 мин 22 секунд до 24 секунды при работе с огромной историей, где насчитываются десятки и сотни тысяч сделок.