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

 
Как в MQL, не прибегая к WinAPI, узнать, что терминал имеет пользовательский фокус (т.е. активное окно у пользователя)? Сейчас некоторые функции, такие как читающие состояние клавиатуры (типа TerminalInfoInteger(TERMINAL_KEYSTATE_CAPSLOCK)) возвращают различные значения в зависимости от активности окна при одинаковом состоянии клавиатуры. Это жесть.
 
Alexandr Sokolov:

МТ5 билд 2755

Терминал не считает всех тиков

Почему вы сделали такой вывод?

 
Alexandr Sokolov:

МТ5 билд 2755

Терминал не считает всех тиков



Попробуйте так

datetime st = 0;
int tics = 0;

//------------------------------------------------------------------

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   
   if(prev_calculated == 0)
{
 ArraySetAsSeries(time,true);
 ArraySetAsSeries(tick_volume,true);
 st = time[0];
}   
   else if(time[0] != st)
     {
      tics++;
      Alert("T - ",tics," TV - ",tick_volume[0]);
     };
   
  //-----------------------------------------------------------------
   return(rates_total);
  }
 
Renat Fatkhullin:

Почему вы сделали такой вывод?

Потому что как я заметил, что OnCalculate вызывается при изменении цен Ask и Bid, но tick_volume[] считает только изменения Bid

 

Такая проблема: стоял советник на неттинговом счету, открывал-закрывал позиции, я добавил к открытой роботом позиции вручную контракт и спустя время в логе эксперта полезли ошибки:

Ошибка при открытии позиции: 4753 - Позиция не найдена

И самое интересное то что: позиция закрыта, авто-торговля выключена, советник удален из чарта, а ошибки все-равно постоянно лезут.


 
Alexandr Sokolov:

Потому что как я заметил, что OnCalculate вызывается при изменении цен Ask и Bid, но tick_volume[] считает только изменения Bid

OnTick вызывается при любом изменении цены и не только(терминал может потребовать пересчета на множестве случаев типа докачки данных или перераспределении массивов исторических данных).

Тиковый объем, как и график, строится по изменению бид цены. На биржевом исполнении учитывается отдельный счетчик реальных обьемов, где учитываются все операции покупки и продажи.

 
Sayberix:

Такая проблема: стоял советник на неттинговом счету, открывал-закрывал позиции, я добавил к открытой роботом позиции вручную контракт и спустя время в логе эксперта полезли ошибки:

Ошибка при открытии позиции: 4753 - Позиция не найдена

И самое интересное то что: позиция закрыта, авто-торговля выключена, советник удален из чарта, а ошибки все-равно постоянно лезут.


Это зависит от логики самого эксперта.

Он может запоминать и думать только о своих операциях и ваше ручное вмешательство может портить логику эксперта.

 
Renat Fatkhullin:

Это зависит от логики самого эксперта.

Он может запоминать и думать только о своих операциях и ваше ручное вмешательство может портить логику эксперта.

Я понимаю, но почему эта ошибка осталась в терминале? Я же говорю что все позиции закрыты, авто-торговля выключена, советник выгружен и даже сам терминал перезапускал!

 
Браузер K-meleon не отражает текст в личных сообщениях(см.скрин). Абидна аднако! Почему-то только в личке. Браузер самый лёгкий и быстрый,но не распространённый и мож не хватает какого шрифта? Помогите кто знает. Железяка старенькая и тяжёлые браузеры плохо тянет.
Файлы:
 
Sayberix:

Я понимаю, но почему эта ошибка осталась в терминале? Я же говорю что все позиции закрыты, авто-торговля выключена, советник выгружен и даже сам терминал перезапускал!

Чудес не бывает. У вас советник запущен на одном из чартов.

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