Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Подними скорость в сети MQL5 Cloud Network. Установи Strategy Tester Agent!
Vladislav Andruschenko
91503
Vladislav Andruschenko 2016.04.28 09:36 

Всем привет,

билд мт5 1325 от 22 апреля 

есть функция подсчета количества сделок в 1 позиции:

int CurrentPositionTotalDeals(string comment="",bool print=false)
  {
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
   string deal_symbol =""; // символ сделки
//--- Если история позиции получена
   PositionSelect(_Symbol);
   if(HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
     {
      //--- Получим количество сделок в полученном списке
      total=HistoryDealsTotal();
      //--- Пройдем по всем сделкам в полученном списке
      for(int i=0; i<total; i++)
        {
         //--- Получим символ сделки
         deal_symbol=HistoryDealGetString(HistoryDealGetTicket(i),DEAL_SYMBOL);
         //--- Если символ сделки и текущий символ совпадают, увеличим счетчик
         if(deal_symbol==_Symbol && (StringFind(HistoryDealGetString(HistoryDealGetTicket(i),DEAL_COMMENT),comment)!=-1 || comment==""))
           {
            if(print)Print("CurrentPositionTotalDeals "+i+"  count="+count+" comment="+HistoryDealGetString(HistoryDealGetTicket(i),DEAL_COMMENT)+" time="+PositionGetInteger(POSITION_TIME)+" ticket="+HistoryDealGetTicket(i));
            count++;
           }
        }
     }
//---
   return(count);
  }

 

 считает по комментарию и выводит общее количество сделок в этой позиции.

Но заметил что считает неправильно.

путем эксперимента обнаружил что начальное время позиции - изменяется. а именно параметр PositionGetInteger(POSITION_TIME)

например:

максимум должно открыться 5 дополнительных сделок. но открывается 7:

 

 

итак смотрим логи и принты:

2016.04.28 10:30:48     Core 1  2016.01.04 00:13:00   CurrentPositionTotalDeals 2  count=2 comment=Averager www.expforex.com time=1451866222 ticket=5
2016.04.28 10:30:48     Core 1  2016.01.04 00:13:00   CurrentPositionTotalDeals 1  count=1 comment=Averager www.expforex.com time=1451866222 ticket=4
2016.04.28 10:30:48     Core 1  2016.01.04 00:13:00   CurrentPositionTotalDeals 0  count=0 comment=Averager www.expforex.com time=1451866222 ticket=3
2016.04.28 10:30:48     Core 1  2016.01.04 00:13:00   AVERAGE Distance=10.0 POSITION_PRICE_OPEN=1.47462 MaxOrders=3 PriceLastDeal=1.47441

 3 сделки в позиции ок, с тикетами: 3,4,5 время начальной позиции 1451866222

 

но далее при следующем открытии время начальной позиции изменилось:

2016.04.28 10:30:48     Core 1  2016.01.04 00:14:13   CurrentPositionTotalDeals 2  count=2 comment=Averager www.expforex.com time=1451866299 ticket=6
2016.04.28 10:30:48     Core 1  2016.01.04 00:14:13   CurrentPositionTotalDeals 1  count=1 comment=Averager www.expforex.com time=1451866299 ticket=5
2016.04.28 10:30:48     Core 1  2016.01.04 00:14:13   CurrentPositionTotalDeals 0  count=0 comment=Averager www.expforex.com time=1451866299 ticket=4
2016.04.28 10:30:48     Core 1  2016.01.04 00:14:13   AVERAGE Distance=10.0 POSITION_PRICE_OPEN=1.47452 MaxOrders=3 PriceLastDeal=1.47429

 и у нас появилось время уже 1451866299 с тикетами 4,5,6 

то есть те же 3 сделки в позиции, но их по факту уже не 3, а 4.

 

ИНОГДА ВРЕМЯ НЕ ИЗМЕНЯЕТСЯ  и позиции считается уже 4 :

2016.04.28 10:30:48     Core 1  2016.01.04 00:19:00   CurrentPositionTotalDeals 3  count=3 comment=Averager www.expforex.com time=1451866299 ticket=7
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:00   CurrentPositionTotalDeals 2  count=2 comment=Averager www.expforex.com time=1451866299 ticket=6
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:00   CurrentPositionTotalDeals 1  count=1 comment=Averager www.expforex.com time=1451866299 ticket=5
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:00   CurrentPositionTotalDeals 0  count=0 comment=Averager www.expforex.com time=1451866299 ticket=4
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:00   AVERAGE Distance=10.0 POSITION_PRICE_OPEN=1.47452 MaxOrders=4 PriceLastDeal=1.47418

 

 потом опять время сдвигается

2016.04.28 10:30:48     Core 1  2016.01.04 00:19:04   CurrentPositionTotalDeals 3  count=3 comment=Averager www.expforex.com time=1451866341 ticket=8
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:04   CurrentPositionTotalDeals 2  count=2 comment=Averager www.expforex.com time=1451866341 ticket=7
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:04   CurrentPositionTotalDeals 1  count=1 comment=Averager www.expforex.com time=1451866341 ticket=6
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:04   CurrentPositionTotalDeals 0  count=0 comment=Averager www.expforex.com time=1451866341 ticket=5
2016.04.28 10:30:48     Core 1  2016.01.04 00:19:04   AVERAGE Distance=10.0 POSITION_PRICE_OPEN=1.47441 MaxOrders=4 PriceLastDeal=1.47406

 

В чем может быть проблема?

Vladislav Andruschenko
91503
Vladislav Andruschenko 2016.04.28 09:54  

изменяется не только время но и тикет позиции

2016.04.28 10:53:05     Core 1  2016.01.04 00:13:00   CurrentPositionTotalDeals 2  count=2 comment=Averager www.expforex.com time=1451866222 pos ticket=3 ticket=5
2016.04.28 10:53:05     Core 1  2016.01.04 00:13:00   CurrentPositionTotalDeals 1  count=1 comment=Averager www.expforex.com time=1451866222 pos ticket=3 ticket=4
2016.04.28 10:53:05     Core 1  2016.01.04 00:13:00   CurrentPositionTotalDeals 0  count=0 comment=Averager www.expforex.com time=1451866222 pos ticket=3 ticket=3
2016.04.28 10:53:05     Core 1  2016.01.04 00:13:00   AVERAGE Distance=10.0 POSITION_PRICE_OPEN=1.47462 MaxOrders=3 PriceLastDeal=1.47441

 после уже стал другой:

2016.04.28 10:53:05     Core 1  2016.01.04 00:14:13   CurrentPositionTotalDeals 2  count=2 comment=Averager www.expforex.com time=1451866299 pos ticket=4 ticket=6
2016.04.28 10:53:05     Core 1  2016.01.04 00:14:13   CurrentPositionTotalDeals 1  count=1 comment=Averager www.expforex.com time=1451866299 pos ticket=4 ticket=5
2016.04.28 10:53:05     Core 1  2016.01.04 00:14:13   CurrentPositionTotalDeals 0  count=0 comment=Averager www.expforex.com time=1451866299 pos ticket=4 ticket=4
2016.04.28 10:53:05     Core 1  2016.01.04 00:14:13   AVERAGE Distance=10.0 POSITION_PRICE_OPEN=1.47452 MaxOrders=3 PriceLastDeal=1.47429

 

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

Andrey Barinov
39238
Andrey Barinov 2016.04.28 10:33  
Попробуйте HistorySelectByPosition()
Vladislav Andruschenko
91503
Vladislav Andruschenko 2016.04.28 10:36  
Andrey Barinov:
Попробуйте HistorySelectByPosition()

пробовал :-) то же самое, при чем в предыдущих билдах было все ок. 

теперь же позиция меняет и время и свой тикет - при открытии сделок.  

Vladislav Andruschenko
91503
Vladislav Andruschenko 2016.04.28 10:49  

Прошу прощения! тестировал на хеджевом счете :-((((((((((((((((((( 

все ок 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий