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

 
Учитывая что данная тема посвящена как раз пользовательским символам, спрошу тут. 
Если выбрать тип расчета - "Exchange Futures" как на скрине ниже, и добавить спред, то он будет ли учитываться тестером при тестировании ? или же будет игнорироваться ? Идея в том, что бы добавлять возможное проскальзование в собственный символ, как спред и тестить в тестере.
Файлы:
 
AndreyKrivcov:
Учитывая что данная тема посвящена как раз пользовательским символам, спрошу тут. 
Если выбрать тип расчета - "Exchange Futures" как на скрине ниже, и добавить спред, то он будет ли учитываться тестером при тестировании ? или же будет игнорироваться ? Идея в том, что бы добавлять возможное проскальзование в собственный символ, как спред и тестить в тестере.

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

 
fxsaber:

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


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

Да, кстати есть вопрос по CustomSymbolSetInteger, а именно свойству добавления и удалений из MarketWatch :
bool deattach = CustomSymbolSetInteger(Symb,SYMBOL_SELECT,1);
Всегда выдает  ошибку 5307 - не верно задано свойство. Как Вы задаете свойство для этой команды ?

 
AndreyKrivcov:

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

Да, кстати есть вопрос по CustomSymbolSetInteger, а именно свойству добавления и удалений из MarketWatch :
bool deattach = CustomSymbolSetInteger(Symb,SYMBOL_SELECT,1);
Всегда выдает  ошибку 5307 - не верно задано свойство. Как Вы задаете свойство для этой команды ?

SymbolSelect.


Список свойств (красные), что задаются через CustomSymbol*

    return(CLONE(SYMBOL_BASIS) &&
    CLONE(SYMBOL_CURRENCY_BASE) &&
    CLONE(SYMBOL_CURRENCY_MARGIN) &&
    CLONE(SYMBOL_CURRENCY_PROFIT) &&
    CLONE(SYMBOL_DESCRIPTION) &&
    CLONE(SYMBOL_FORMULA) &&
    CLONE(SYMBOL_ISIN) &&
    CLONE(SYMBOL_PAGE) &&
    CLONE(SYMBOL_PATH) &&

    CLONE(SYMBOL_MARGIN_HEDGED) &&
    CLONE(SYMBOL_MARGIN_INITIAL) &&
    CLONE(SYMBOL_MARGIN_MAINTENANCE) &&
    CLONE(SYMBOL_OPTION_STRIKE) &&
    CLONE(SYMBOL_POINT) &&
    CLONE(SYMBOL_SESSION_PRICE_LIMIT_MAX) &&
    CLONE(SYMBOL_SESSION_PRICE_LIMIT_MIN) &&
    CLONE(SYMBOL_SESSION_PRICE_SETTLEMENT) &&
    CLONE(SYMBOL_SWAP_LONG) &&
    CLONE(SYMBOL_SWAP_SHORT) &&
    CLONE(SYMBOL_TRADE_ACCRUED_INTEREST) &&
    CLONE(SYMBOL_TRADE_CONTRACT_SIZE) &&
    CLONE(SYMBOL_TRADE_FACE_VALUE) &&
    CLONE(SYMBOL_TRADE_LIQUIDITY_RATE) &&
    CLONE(SYMBOL_TRADE_TICK_SIZE) &&
    CLONE(SYMBOL_TRADE_TICK_VALUE) &&
    CLONE(SYMBOL_VOLUME_LIMIT) &&
    CLONE(SYMBOL_VOLUME_MAX) &&
    CLONE(SYMBOL_VOLUME_MIN) &&
    CLONE(SYMBOL_VOLUME_STEP) &&

    CLONE(SYMBOL_BACKGROUND_COLOR) &&
    CLONE(SYMBOL_CHART_MODE) &&
    CLONE(SYMBOL_DIGITS) &&
    CLONE(SYMBOL_EXPIRATION_MODE) &&
    CLONE(SYMBOL_EXPIRATION_TIME) &&
    CLONE(SYMBOL_FILLING_MODE) &&
    CLONE(SYMBOL_MARGIN_HEDGED_USE_LEG) &&
    CLONE(SYMBOL_OPTION_MODE) &&
    CLONE(SYMBOL_OPTION_RIGHT) &&
    CLONE(SYMBOL_ORDER_GTC_MODE) &&
    CLONE(SYMBOL_ORDER_MODE) &&
    CLONE(SYMBOL_SPREAD) &&
    CLONE(SYMBOL_SPREAD_FLOAT) &&
    CLONE(SYMBOL_START_TIME) &&
    CLONE(SYMBOL_SWAP_MODE) &&
    CLONE(SYMBOL_SWAP_ROLLOVER3DAYS) &&
    CLONE(SYMBOL_TICKS_BOOKDEPTH) &&
    CLONE(SYMBOL_TRADE_CALC_MODE) &&
    CLONE(SYMBOL_TRADE_EXEMODE) &&
    CLONE(SYMBOL_TRADE_FREEZE_LEVEL) &&
    CLONE(SYMBOL_TRADE_MODE) &&
    CLONE(SYMBOL_TRADE_STOPS_LEVEL));
Документация по MQL5: Получение рыночной информации / SymbolInfoInteger
Документация по MQL5: Получение рыночной информации / SymbolInfoInteger
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
 
fxsaber:

https://www.mql5.com/ru/docs/marketinformation/symbolinfointeger


Список свойств (красные), что задаются через CustomSymbol*


Благодарю. А остальной функционал не доделан еще что ли ? или вообще не будет пополняться ?

 
AndreyKrivcov:

Благодарю. А остальной функционал не доделан еще что ли ? или будет пополняться ?

Функционал на 90% доступен. Не без багов, конечно.

 
AndreyKrivcov:
Учитывая что данная тема посвящена как раз пользовательским символам, спрошу тут. 
Если выбрать тип расчета - "Exchange Futures" как на скрине ниже, и добавить спред, то он будет ли учитываться тестером при тестировании ? или же будет игнорироваться ? Идея в том, что бы добавлять возможное проскальзование в собственный символ, как спред и тестить в тестере.

А встроенный в тестер режим с произвольным или фиксированным проскальзыванием не подходит?

 
Stanislav Korotky:

А встроенный в тестер режим с произвольным или фиксированным проскальзыванием не подходит?


Там проскальзование по времени идет, а меня больше интересует проскальзование не из за запаздывания пинга, а в целом. Если объем увеличить к примеру (на Сбере или Газпроме допустим торговля...)

 
fxsaber:

Функционал на 90% доступен. Не без багов, конечно.


Небольшое исследование провел, получилось, что поменьше чем на 90% доступен функционал, но не чего, главное что бы расширили. 

Кстати, функция CustomTicksUpdate(customSymbol,ticks) - не работает пока, но вместо нее можно костыль использовать (CustomTicksReplace(customSymbol,from,till*1000,ticks))

Ниже прикрепил файлы которые мне мой скрипт по проверки функционала выдал, ну и сам скрипт тоже.

 
AndreyKrivcov:

Кстати, функция CustomTicksUpdate(customSymbol,ticks) - не работает пока, но вместо нее можно костыль использовать (CustomTicksReplace(customSymbol,from,till*1000,ticks))

Там другая функция по названию. Заменять ее Replace-функцией - не совсем понимать, для чего TicksAdd нужна: пробрасывание соответствующих Tick-событий.