Ошибки, баги, вопросы - страница 3758

 
fxsaber #:
Потому что образцовый MQ-Demo.
Так они же берут котировки у кого то.
 
Aleksey Vyazmikin #:
Так они же берут котировки у кого то.
Ситуация повторяется и с COPY_TICKS_INFO-тиками. Это уже баг CopyTicks.
 
fxsaber # :
Ситуация повторяется и с  COPY_TICKS_INFO -тиками. Это уже баг CopyTicks.
Какая CopyTicks ошибка?
 
fxsaber #:
Ситуация повторяется и с COPY_TICKS_INFO-тиками. Это уже баг CopyTicks.

А где противоречие, если это не баг, а транслируемые котировки? Разный способ получение котировок и должен давать одинаковый результат.

 
Alain Verleyen #:
Какая CopyTicks ошибка?
void OnStart()
{
  MqlTick Ticks[];

  const int Size = CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (TimeCurrent()  - 24 * 3600) * 1000);

  int Count = 0;
  
  for (int i = 1; i < Size; i++)
    // Новый тик не изменил цены.
    if ((Ticks[i].bid == Ticks[i - 1].bid) &&
        (Ticks[i].ask == Ticks[i - 1].ask))
      Count++;
      
  Print(AccountInfoString(ACCOUNT_SERVER) + ", " + _Symbol);
  
  Print(Count);
}


MetaQuotes-Demo, EURUSD
1025


1025 INFO-тиков, у которых цены не поменялись. Согласно документации, INFO-тики должны отличаться хотя бы одной из цен bid/ask.

 
fxsaber #:

1025 INFO-тиков, у которых цены не поменялись. Согласно документации, INFO-тики должны отличаться хотя бы одной из цен bid/ask.

А флаги в серии одинаковые?
 
Aleksey Vyazmikin #:
А флаги в серии одинаковые?
Не изучал.
 

Решил оставшиеся копейки вывести. И тут не без багов. 

 
Платформа: MetaTrader 5, Build 6090
СИМПТОМ:
После переключения счета поток тиков на графике останавливается: OnTick продолжает вызываться, но tick.time_msc остается НЕИЗМЕННЫМ
(терминал отдает тот же последний тик). Сам по себе поток не восстанавливается.

ШАГИ ВОСПРОИЗВЕДЕНИЯ:
1. Открыть график с советником, контролирующим tick.time_msc.
2. Сменить счет в терминале.
3. Наблюдать: в течение длительного времени (минуты) time_msc не меняется,
   хотя OnTick вызывается, рынок активен.

ДОПОЛНИТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
- Обходной путь работает: ChartSetSymbolPeriod(0, ДРУГОЙ_СИМВОЛ, 0), затем возврат
  на родной символ — поток тиков восстанавливается (новый time_msc).
- Если прыгать на ТОТ ЖЕ символ, который уже использовался для такого прыжка
  ранее — подписка НЕ обновляется (тики остаются замороженными).
- Иногда не помогают даже несколько свежих символов подряд (похоже на нестабильное
  состояние соединения сразу после переключения счета).
- Проблема воспроизводится на нескольких символах и не зависит
  от таймфрейма графика.

МИНИМАЛЬНЫЙ КОД ДЛЯ ВОСПРОИЗВЕДЕНИЯ (советник):
int n=0; ulong prevMsc=0;
void OnTick()
{
   MqlTick tick; SymbolInfoTick(_Symbol,tick);
   if(tick.time_msc==prevMsc) {
      if(++n==10) PrintFormat("ЗАМОРОЗКА: time_msc=%I64d повторяется", tick.time_msc);
   } else { n=0; prevMsc=tick.time_msc; }
}

Прошу рассмотреть возможность автоматической переподписки
на поток тиков при смене счета.
Документация по MQL5: ChartSetSymbolPeriod / Операции с графиками
Документация по MQL5: ChartSetSymbolPeriod / Операции с графиками
  • www.mql5.com
Меняет значения символа и периода указанного графика. Функция работает асинхронно, то есть отдает команду и не ждет окончания ее выполнения...
 

Добрый день, может кто нибудь подскажет.

запускаю такой скрипт:

#include <Trade\Trade.mqh>
CTrade trade;
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
   double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
   trade.Buy(0.1,_Symbol,Ask);
  }
//+------------------------------------------------------------------+

Позиция Buy открывается, но возникает такая ошибка:

Это происходит после обновления терминал до 6116 

в предыдущих версиях такой ошибки не было.

Что нужно сделать чтобы эта ошибка не появлялась, или это проблема в новой версии терминал?