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

 
CustomTickReplace не обладает прекрасной фичей MQL
struct MQLTICK : public MqlTick {};

void OnStart()
{  
  MQLTICK Ticks[];
  
  Print(CopyTicks(_Symbol, Ticks, COPY_TICKS_INFO, 0, 1e4)); // Здесь все отлично

  const string Name = "A123456";
  
  CustomSymbolCreate(Name);
  
  if (SymbolInfoInteger(Name, SYMBOL_CUSTOM))
  {
    Print(CustomTicksReplace(Name, 0, LONG_MAX, Ticks)); // Возвращает -1. Если заменить MQLTICK на MqlTick - норм.
    
    Print(GetLastError());                               // ERR_WRONG_INTERNAL_PARAMETER
  }
}
Прошу исправить.
 

Бесконечный цикл в CustomTicksReplace

void OnStart()
{  
  const string Name = "A123456";

  MqlTick Ticks[];

  if (CustomSymbolCreate(Name) || SymbolInfoInteger(Name, SYMBOL_CUSTOM))
    Print(CustomTicksReplace(Name, 0, LONG_MAX, Ticks));
}
 

Прошу Вас сообщить, как создавать свои символы из инструментов ФОРТС

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

Обсуждение статьи "Создание и тестирование пользовательских символов в MetaTrader 5"

Aleksey Vyazmikin, 2017.10.14 20:25

Форекс это хорошо, но я так и не понял, как заставить тестер работать с фьючерсом Si на MOEX!?

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

Вот так выглядит лог - не знаю, как его интерпритировать

2017.10.14 21:23:55.365 2017.10.01 00:00:00   Si-12.17_custom has type Exchange Execution. The execution policy is set - Return
2017.10.14 21:23:55.368 Si-12.17_custom,M5: history cache allocated for 133714 bars and contains 1131 bars from 2017.09.21 10:00 to 2017.09.29 23:45
2017.10.14 21:23:55.368 Si-12.17_custom,M5: history begins from 2017.09.21 10:00
2017.10.14 21:23:55.372 Si-12.17_custom,Daily: history cache allocated for 464 bars and contains 7 bars from 2017.09.21 00:00 to 2017.09.29 00:00
2017.10.14 21:23:55.372 Si-12.17_custom,Daily: history begins from 2017.09.21 00:00
2017.10.14 21:23:55.375 Si-12.17_custom,H1: history cache allocated for 11142 bars and contains 98 bars from 2017.09.21 10:00 to 2017.09.29 23:00
2017.10.14 21:23:55.376 Si-12.17_custom,H1: history begins from 2017.09.21 10:00
2017.10.14 21:23:55.377 BR Splice: symbol to be synchronized
2017.10.14 21:23:55.377 BR Splice: symbol synchronized, 3624 bytes of symbol info received
2017.10.14 21:23:55.377 BR Splice: history synchronization started
2017.10.14 21:23:55.379 BR Splice: load 33 bytes of history data to synchronize in 0:00:00.000
2017.10.14 21:23:55.379 BR Splice: history synchronized from 2015.01.05 to 2017.10.13
2017.10.14 21:23:55.538 BR Splice,Daily: history cache allocated for 464 bars and contains 440 bars from 2016.01.04 00:00 to 2017.09.29 00:00
2017.10.14 21:23:55.539 BR Splice,Daily: history begins from 2016.01.04 00:00
2017.10.14 21:23:55.661 Si-12.17_custom,H4: history cache allocated for 2785 bars and contains 28 bars from 2017.09.21 08:00 to 2017.09.29 20:00
2017.10.14 21:23:55.661 Si-12.17_custom,H4: history begins from 2017.09.21 08:00
2017.10.14 21:23:55.856 BR Splice,H4: history cache allocated for 2785 bars and contains 1759 bars from 2016.01.04 08:00 to 2017.09.29 20:00
2017.10.14 21:23:55.856 BR Splice,H4: history begins from 2016.01.04 08:00

 

Прошу добавить в GUI-окно по CTRL+U данные по количеству включенных символов и общего количества символов в группах/подгруппах, как на скрине

Когда активно работаешь с кастомными символами, такой GUI был бы очень полезен. Сейчас в Custom приходится по дереву лазить и смотреть, что к чему.

 

SYMBOL_PATH возвращает совсем не то, что нужно - включает имя символа зачем-то.

По итогу получаем такую ерунду

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

void OnStart()
{
  const string Name = "HelloWorld";
  string Path = "Path";
  
  if (CustomSymbolCreate(Name, Path) || SymbolInfoInteger(Name, SYMBOL_CUSTOM))
  {    
    Print(TOSTRING(SymbolInfoString(Name, SYMBOL_PATH)));
    
    if (CustomSymbolSetString(Name, SYMBOL_PATH, SymbolInfoString(Name, SYMBOL_PATH) + "2"))
      Print(TOSTRING(SymbolInfoString(Name, SYMBOL_PATH)));        
  }
}


Первый запуск:

SymbolInfoString(Name,SYMBOL_PATH) = Custom\Path\HelloWorld
SymbolInfoString(Name,SYMBOL_PATH) = Custom\Path\HelloWorld2\HelloWorld


Второй запуск:

SymbolInfoString(Name,SYMBOL_PATH) = Custom\Path\HelloWorld2\HelloWorld
SymbolInfoString(Name,SYMBOL_PATH) = Custom\Path\HelloWorld2\HelloWorld2\HelloWorld

 и т.д.


Прошу убрать из SYMBOL_PATH имя символа.

 

Господа! Кто может за вознагрождение склеить символ из 8ми - 10ти, ну максимум 12ти кусков? нужен неприрывно-ликвидный фьючерс по нефти (WTI), очень нада! куски по 1 месяцу, подробную информацию по датам стыковок предоставлю.

 
robotorgovez:

Господа! Кто может за вознагрождение склеить символ из 8ми - 10ти, ну максимум 12ти кусков? нужен неприрывно-ликвидный фьючерс по нефти (WTI), очень нада! куски по 1 месяцу, подробную информацию по датам стыковок предоставлю.

Это сделать здесь может почти каждый. За денежку просите удобный универсальный инструмент для склеек.

 
fxsaber:

Это сделать здесь может почти каждый. За денежку просите удобный универсальный инструмент для склеек.


Да я знаком с раделом фриланса, но боюсь надкнуться на "мастера" который еще не совсем умеет это делать.

 
robotorgovez:

Господа! Кто может за вознагрождение склеить символ из 8ми - 10ти, ну максимум 12ти кусков? нужен неприрывно-ликвидный фьючерс по нефти (WTI), очень нада! куски по 1 месяцу, подробную информацию по датам стыковок предоставлю.


В каком смысле склеить? Просто сложить, или нужна обработка какая?

 
Aleksey Vyazmikin:

В каком смысле склеить? Просто сложить, или нужна обработка какая?


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

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

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