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

 
fxsaber:
Не хватает SYMBOL_EXISTS, чтобы понять, запрашиваемый символ существует или нет.
Спрашиваете SymbolInfoInteger(symbol,SYMBOL_SELECT) и анализируете код ошибки. 4301 - символ не существует
 
Slava:
Спрашиваете SymbolInfoInteger(symbol,SYMBOL_SELECT) и анализируете код ошибки. 4301 - символ не существует

Так и делаю, но это совсем не красивое решение. Логично же через SymbolInfoInteger(symbol,SYMBOL_EXISTS) - без танцев.

 

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

Так будет и впредь или появятся кастомные, зависимые от брокера?

Например, на одном брокере формула EURUSD * GBPUSD, а на другом EURUSD.e * GBPUSD.e

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

 
Slava:

Будет возможность создавать свои кастомные символы из MQL5-программы

Опубликован раздел Пользовательские символы

 
Не удалось заставить работать CustomRatesUpdate - все время возвращает -1.
Документация по MQL5: Пользовательские символы / CustomRatesUpdate
Документация по MQL5: Пользовательские символы / CustomRatesUpdate
  • www.mql5.com
Пользовательские символы / CustomRatesUpdate - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Rashid Umarov:

Опубликован раздел Пользовательские символы

Отсутствует

int CustomTicksUpdate( const string symbol, const MqlTick &ticks[] );
 

CustomSymbolCreate

Создает пользовательский символ с указанным именем в указанной группе.

bool  CustomSymbolCreate(
   string     symbol_name,         // имя пользовательского символа
   string     symbol_path=""       // название группы, в которой будет создан символ
   );

Параметры

symbol_name

[in]  Имя пользовательского символа. Не должно содержать групп или подгрупп, в котором символ находится.

symbol_path

[in]  Имя группы, в которой создается символ.

Возвращаемое значение

true – в случае успеха, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функциюGetLastError().

Второй параметр по-умолчанию NULL. И его задание никак не влияет на результат.

 

Здравствуйте! Удалось ли запустить новый билд МТ5х64 под Winex64?

Я пробовал на wine 2.13 (совсем свежий), но МТ падает с ошибкой :(

 

Пример

При запуске бэктеста на кроссах тестер тянет за собой не только основной символ, но и вспомогательный, который позволяет конвертировать валюту прибыли основного символа в валюту счета. Вытягивание доп. символа, генерирование его тиков и их синхронизация с основным символом отнимают столь драгоценные вычислительные ресурсы (и время) в режимах одиночного прогона и, особенно, Оптимизации. Однако, почти всегда такая точность является излишней. Поэтому хочется обойти эту навязчивость/несовершенство MetaTrader 5 тестера. В MetaTrader 4 это сделать легко - там есть возможность поменять валюту счета прямо в тестере. MetaTrader 5 же лишен такой возможности.


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

Тестер оказался не готов к таким кастомным закидонам. Например, при тестировании на EURJPY_custom он все равно тянет EURUSD или EURUSD_custom (если есть). Наверное, эти умные действия тестера для кастомных символов нужно отключать.

 
Rashid Umarov:

Опубликован раздел Пользовательские символы


Мне кажется там не хватает функции, которая делает пользовательский символ, который является точной копией обычного. Конечно не особо трудно с помощью этого десятка функций все настроить, но тогда возникает вопрос. А что будет если вы расширите какое нибудь перечисление из свойств символа ? Наши советники, то об этом не узнают. Соответственно это уже будет не точная копия.