MetaEditor build 1490 - страница 4

 
Andrey Dik:

Да нет же, это ненормально. 

Позиция есть. Кидаем советник на чарт. Истории сделок по выбранной позиции нет. Что же тут нормального то?))) 

Позиция открыта уже несколько секунд, а количество сделок все равно нулевое?
 
fxsaber:
Позиция открыта уже несколько секунд, а количество сделок все равно нулевое?
Вот именно. 
 
Andrey Dik:
Вот именно. 
Тогда это очень плохо для всех, кто торгует в MT5. Как воспроизвести?
 
fxsaber:
Тогда это очень плохо для всех, кто торгует в MT5. Как воспроизвести?
открывать позиции без и с советником на чарте, добавлять к позиции, урезать позицию, переворачивать позицию. баг проявляется не всегда и не сразу. я эксперементировал на демо счете fibo, билд 1490
 
Andrey Dik:
открывать позиции без и с советником на чарте, добавлять к позиции, урезать позицию, переворачивать позицию. баг проявляется не всегда и не сразу. я эксперементировал на демо счете fibo, билд 1490
Не воспроизвести
void OnTick ()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
  {
    const ulong Ticket = PositionGetTicket(i);
    
    if (PositionSelectByTicket(Ticket) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(Ticket);
  }
}
 
fxsaber:
Не воспроизвести
void OnTick ()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
  {
    const ulong Ticket = PositionGetTicket(i);
    
    if (PositionSelectByTicket(Ticket) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(Ticket);
  }
}
У Вас по другому выбирается позиция. Попробуйте мой код.
 
Andrey Dik:
У Вас по другому выбирается позиция. Попробуйте мой код.
И так не воспроизводится
void OnInit()
{
  EventSetMillisecondTimer(1);
}

void OnTimer()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
    if ((PositionGetSymbol(i) == _Symbol) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(PositionGetInteger(POSITION_TICKET));
}
 
fxsaber:
И так не воспроизводится
void OnInit()
{
  EventSetMillisecondTimer(1);
}

void OnTimer()
{
  const int Total = PositionsTotal();
  
  for (int i = 0; i < Total; i++)
    if ((PositionGetSymbol(i) == _Symbol) && HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)) && (HistoryDealsTotal() == 0))
      Alert(PositionGetInteger(POSITION_TICKET));
}

А мой код пробовал?

Что бы так же воспроизвести и так же получить логи. 

 
Andrey Dik:

А мой код пробовал?

Что бы так же воспроизвести и так же получить логи. 

Пробовал - проблема не воспроизводится.
 
fxsaber:
Пробовал - проблема не воспроизводится.

Странно.... В чем тогда может быть проблема?

Вот. Делаю так. Запустил советник на чарте. Открыл вручную позицию. Два раза добавил и один раз урезал позицию. В лагах правильно показывает 4 сделки. После этого я перевернул позицию - проблема - позиция есть а сделок нет.

Вот лог после последних двух операций.

2016.12.05 14:25:44.157 Get current commission of pos (GBPUSD,M5) 1

2016.12.05 14:25:44.157 Get current commission of pos (GBPUSD,M5) GBPUSD

2016.12.05 14:25:44.157 Get current commission of pos (GBPUSD,M5) Позиция найдена

2016.12.05 14:25:44.157 Get current commission of pos (GBPUSD,M5) Всего сделок в позиции: 4

2016.12.05 14:25:44.670 Get current commission of pos (GBPUSD,M5) 1

2016.12.05 14:25:44.670 Get current commission of pos (GBPUSD,M5) GBPUSD

2016.12.05 14:25:44.670 Get current commission of pos (GBPUSD,M5) Позиция найдена

2016.12.05 14:25:44.670 Get current commission of pos (GBPUSD,M5) Всего сделок в позиции: 0

Видно, что сделок позиции не видит. Советник продолжает висеть на чарте и в коменте 0. 

Удалил эксперт, кинул на чарт снова - не видит сделки позиции, в коменте 0.