Новая версия платформы MetaTrader 5 build 1640: создание и тестирование собственных финансовых инструментов - страница 26

 
ANG3110:

Вопрос к разработчикам. При тесте с реальными тиками на кроссах, закачиваются так же тики инструментов из пар кроссов относительно валюты депозита. Типа AUDCAD и долларовый депозит - закачиваются так же AUDUSD и USDCAD. Потом все это вроде синхронизируется. Это долго очень. Разве нужно для цены пункта и прочих показателей точность вспомогательных пар до тиков? К тому же совсем не обязательно, что тики сопутствующих инструментов совпадают с тиками кроссов. Разве нельзя ограничиться просто минутками вспомогательных инструментов?

Эта тема несколько раз поднималась.

Сейчас для ускорения бэктеста кросса нужно запихивать его историю в XXXUSD кастомный символ (для USD-счетов) и на нем тестить.

 
И еще не хватает чего-то типа менеджера тиков, чтобы видеть процесс закачки и от какой и по какую дату есть данные. Наподобии программы TickDownloader.

И еще пожелание в самом тестере, после теста чтобы зеленая линия не убиралась бы как это делается в МТ4, - иначе визуально не всегда видно когда закончился тест.

 

ANG3110:
И еще не хватает чего-то типа менеджера тиков, чтобы видеть процесс закачки и от какой и по какую дату есть данные. Наподобии программы TickDownloader.

Для кастомного наличие всех данных можно определить через CopyTicksRange c нулевыми from/to. Для обычного символа - никак. В СД, вроде, об этом писалось.

И еще пожелание в самом тестере, после теста чтобы зеленая линия не убиралась бы как это делается в МТ4, - иначе визуально не всегда видно когда закончился тест.

И мне это видится удобным.

 
fxsaber:

Эта тема несколько раз поднималась.

Сейчас для ускорения бэктеста кросса нужно запихивать его историю в XXXUSD кастомный символ (для USD-счетов) и на нем тестить.


Стоимость пункта при таком подходе будет разной, в оригинале и XXXUSD?

 
forexman77:

Стоимость пункта при таком подходе будет разной, в оригинале и XXXUSD?

Стоимость пункта будет ровно такой же, как у EURUSD, GBPUSD и других мажоров. Т.е. очень удобно.

 

CustomTicksReplace (для тиков взятых из CopyTicksRange ) то работает, то, перестает работать. Ситуацияю удается исправить перезагрузкой терминала. Но быстро все начинает повторяться.

LastError нулевой.

 
fxsaber:

CustomTicksReplace (для тиков взятых из CopyTicksRange ) то работает, то, перестает работать. Ситуацияю удается исправить перезагрузкой терминала. Но быстро все начинает повторяться.

LastError нулевой.

Воспроизвел. CustomTicksReplace не работает в OnDeinit в советниках и индикаторах в случаях, когда UninitializeReason != REASON_CHARTCHANGE

#define TOSTRING(A) (#A + " = " + (string)(A))

void TickTest()
{
  MqlTick Ticks[1];
  
  static const string Name = "A1234";
  
  if (SymbolInfoTick(_Symbol, Ticks[0]) &&
      (CustomSymbolCreate(Name) || SymbolInfoInteger(Name, SYMBOL_CUSTOM)))
  {
    ArrayPrint(Ticks);
    
    ResetLastError();
    Print(TOSTRING(CustomTicksReplace(Name, Ticks[0].time_msc, Ticks[ArraySize(Ticks) - 1].time_msc, Ticks)));
    Print(TOSTRING(_LastError));  
  }
}

void OnInit()
{
  Print("\n" + __FUNCTION__);
  
  TickTest();
}

void OnDeinit( const int )
{
  Print("\n" + __FUNCTION__);
  Print(TOSTRING(UninitializeReason()));
  
  TickTest();
}


Результат (после снятия)

2017.11.30 09:07:44.244 OnInit
2017.11.30 09:07:44.244                  [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags]
2017.11.30 09:07:44.244 [0] 2017.11.30 09:07:33 1.16831 1.16837 0.0000        0 1512032853950       2
2017.11.30 09:07:44.244 CustomTicksReplace(Name,Ticks[0].time_msc,Ticks[ArraySize(Ticks)-1].time_msc,Ticks) = 1
2017.11.30 09:07:44.244 _LastError = 0
2017.11.30 09:07:51.383 
2017.11.30 09:07:51.383 OnDeinit
2017.11.30 09:07:51.383 UninitializeReason() = 1
2017.11.30 09:07:51.383                  [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags]
2017.11.30 09:07:51.383 [0] 2017.11.30 09:07:43 1.16836 1.16843 0.0000        0 1512032863255       2
2017.11.30 09:07:51.383 CustomTicksReplace(Name,Ticks[0].time_msc,Ticks[ArraySize(Ticks)-1].time_msc,Ticks) = 0
2017.11.30 09:07:51.383 _LastError = 0

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


ЗЫ Несмотря на дороговизну Ticks-фукнций, они вполне могут укладываться в таймауты. Логично, когда по завершении работы советника/индикатора требуется скинуть посчитанные значения в кастомный символ. Текущий запрет не дает сделать такие вещи.

 
Вопрос к MQ - когда же наконец будет билд с исправлениями, которые уже сделаны?
 
Stanislav Korotky:
Вопрос к MQ - когда же наконец будет билд с исправлениями, которые уже сделаны?
Очень хороший вопрос... обещали в начале ноября)
 
Alexey Kozitsyn:
Очень хороший вопрос... обещали в начале ноября)

Только что обновили до билда 1687. В ME новая подсветка, папочки в навигаторе по другому выглядят. А когда описание будет по новшествам? Тут тоже пока ничего не видно: https://www.metatrader5.com/ru/releasenotes

Что нового в MetaTrader 5?
Что нового в MetaTrader 5?
  • www.metatrader5.com
MetaTrader 5 iOS build 1649: рыночная статистика по инструменту Добавлена возможность просматривать рыночную статистику по финансовым инструментам, торговля которыми осуществляется в режиме биржевого исполнения. Для этого необходимо из Market Watch вызвать меню интересующего вас символа и раскрыть его статистику. Оптимизирована работа с...
Причина обращения: