Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 148

 
Maxim Dmitrievsky:

бывают и там приключения :)

В общем, у MQ есть возможность подмять под себя > 10% форекса. С дальнейшим его революционным преобразованием. Возможно, такие мысли у MQ есть давно. Но никто никогда в таком не признается.

Либо технически, либо организационно к этому пока не готовы. Сейчас являются заложниками тупых своих клиентов - брокеры сдерживают развитие. Давно их переросли бы, выйдя на их поляну и отжав бизнес себе.

 
fxsaber:

В общем, у MQ есть возможность подмять под себя > 10% форекса. С дальнейшим его революционным преобразованием. Возможно, такие мысли у MQ есть давно. Но никто никогда в таком не признается.

Либо технически, либо организационно к этому пока не готовы. Сейчас являются заложниками тупых своих клиентов - брокеры сдерживают развитие. Давно их переросли бы, выйдя на их поляну и отжав бизнес себе.

Еще есть такое что свои платформы будут писать или переходить на конкурентов, им все равно на трейдерОв, главное прибыль (ну потеряют часть алготрейдеров, в основном тех кто деньги выносит, им же лучше)

будет вопрос - рубить капусту или подключаться как IB

а куда потекут трейдера это уже никому неизвестно.. новички к ним, профи к MQ. Многим вообще хватает 2-х кнопок бай\селл и графика с 10-минутной задержкой

 
fxsaber:

В общем, у MQ есть возможность подмять под себя > 10% форекса. С дальнейшим его революционным преобразованием. Возможно, такие мысли у MQ есть давно. Но никто никогда в таком не признается.

Либо технически, либо организационно к этому пока не готовы. Сейчас являются заложниками тупых своих клиентов - брокеры сдерживают развитие. Давно их переросли бы, выйдя на их поляну и отжав бизнес себе.

Это пришлось бы брать на себя гораздо больше ответственности и из технологической компании становиться финансовой.

А вот кто-нибудь из финансовых акул - мог бы взять под своё крыло, с огромной перспективой.

 

Билд 1983, в 1981 тоже такое было.

В тестере в индикаторах при открытии нового бара функции TimeCurrent() и SymbolInfoInteger(Symbol(),SYMBOL_TIME) возвращают не правильное время. Пояснение на картинке:

Код для воспроизведение прикреплен.

Файлы:
test.mq5  2 kb
 
Konstantin Gruzdev:

Билд 1983, в 1981 тоже такое было.

В тестере в индикаторах при открытии нового бара функции TimeCurrent() и SymbolInfoInteger(Symbol(),SYMBOL_TIME) возвращают не правильное время. Пояснение на картинке:

Код для воспроизведение прикреплен.

На старте логично отличие. TimeCurrent - это время сервера (даже в Тестере есть такое понятие, которое потом совпадает TimeTradeServer), а не время последней котировки тестерного символа.

Что же касается баров, то, скорее всего, OnCalculate выполняется на начало нового времени бара, когда TimeTradeServer равен ему. Но вот только бар еще пустой - нет даже Open[0]. Вместо него Close[1]. Отсюда и время у TimeCurrent такое.

И это логически объяснимо. Представьте себе, что идет проход по реальным тикам. Индикатор же по-умолчанию строится не по тикам (см. property), а по таймеру. Поэтому он не может знать первую котиру нового бара, иначе сможет наперед передать советнику то, что есть в будущем.
 
fxsaber:

На старте логично отличие. TimeCurrent - это время сервера (даже в Тестере есть такое понятие, которое потом совпадает TimeTradeServer), а не время последней котировки тестерного символа.

Не логично для одного символа.

Для одного символа время TimeCurrent=времени последней котировки. Из справки:

TimeCurrent

Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов.

fxsaber:

Что же касается баров, то, скорее всего, OnCalculate выполняется на начало нового времени бара, когда TimeTradeServer равен ему. Но вот только бар еще пустой - нет даже Open[0]. Вместо него Close[1]. Отсюда и время у TimeCurrent такое.

OnCalculate выполняется не по времени, а по тикам. И соответственно, новый бар появляется на первом тике бара.

Бар уже есть. На чарте есть. rates_total-prev_calculated=1 тоже говорит что есть. Open[0] есть. Все массивы с размерностью [0] есть. В том числе и Time[0]. А время возвращается с прошлого бара. 

 
https://docs.microsoft.com/ru-ru/cpp/c-runtime-library/reference/abort - вызванная эта функция из подключенной ДЛЛки (Python3.dll) уничтожает терминал без предупреждения и ошибок.
 
Konstantin Gruzdev:

tester_everytick_calculate

string

В тестере стратегий индикаторы рассчитываются только при обращении к ним за данными – то есть только в тот момент, когда запрашиваются значения индикаторных буферов. Это даёт существенное ускорение при тестировании и оптимизации, если не требуется получать значения индикатора на каждом тике.

 

Указание свойства tester_everytick_calculate позволяет при тестировании принудительно включить режим расчета индикатора на каждом тике.

 

Индикаторы в тестере стратегий также принудительно считаются на каждом тике в следующих случаях:

 

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

Это к тому, что правила меняются.


Новый бар появляется по таймеру. К сожалению, в этот момент open[rates_total - 1] != close[rates_total - 2]. Отсюда получается почти заглядывание в будущее.

 

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

Вопросы от начинающих MQL5 MT5 MetaTrader 5

Aleksey Vyazmikin, 2019.02.09 12:23

Почему pass иногда равен -1000?

void OnTesterDeinit()
  {
   if(!FrameFirst()) return;

   long pass;
   string name;
   long id;
   double value;


   while(FrameNext(pass,name,id,value,stat_values))
     {
      Print(pass);
     }
}

И как избавится от этой ошибки?


 
В Тестере Sleep не влияет на TimeTradeServer
void OnTick()
{
  Print(TimeTradeServer());
  Sleep(10);
  Print(TimeTradeServer());

  TesterStop();
}


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