Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да, действительно - если первым ставить SYMBOL_CALC_TRADE_FUTURES, а объёмы задавать последними в порядке VOLUME_STEP,VOLUME_MAX,VOLUME_MIN
то можно задавать CURRENCY_BASE, CURRENCY_PROFIT и VOLUME_MIN
прочие опции не смотрел - по ходу дела, потом уже..
про то что CustomSymbolSetString() может быть true и при этом ничего не сделать, нехороший осадочек :-)
да, действительно - если первым ставить SYMBOL_CALC_TRADE_FUTURES, а объёмы задавать последними в порядке VOLUME_STEP,VOLUME_MAX,VOLUME_MIN
то можно задавать CURRENCY_BASE, CURRENCY_PROFIT и VOLUME_MIN
прочие опции не смотрел - по ходу дела, потом уже..
про то что CustomSymbolSetString() может быть true и при этом ничего не сделать, нехороший осадочек :-)
даже тики, свечи оптом работает :-)
правда боюсь, что если стаканы добавить то бобик сдохнет и не потянет;
310 стаканов по 50 уровней, с обновлениями раз в 10ms это некоторый перебор будет
SYMBOL_BANK не сохраняется . Оно конечно опциональное, но непорядок что его нельзя задать.
SYMBOL_BANK
Feeder of the current quote
оригинально как-то всё работает..
1. Отдельная DLL обеспечивает всю связь и кладёт в очередь пред-подготовленные данные.
2. Сервис MT5 в цикле:
2.1 забирает все сообщения из очереди (чтобы за каждым сообщением не блокировать)
2.2 Обрабатывает каждое сообщение (в результате вызывает CustomTicksAdd и CustomRatesUpdate)
2.3 Sleep(N) милисек. (разгрузка)
И тут начинаются чудеса:
если N=30 милисек, то сообщений на цикл обрабатывается мало, но втормаживают TicksAdd, RatesUpdate
если N=50 сообщений в цикле больше, но и TicksAdd RatesUpdate работают лучше..
при N=100 и тем паче 300 , тормозов TicksAdd RatesUpdate практически нет. Вот только с таким таймером, смысл тиков теряется - слишком большая задержка
Возможно что-то с кешами процессора и планировщиком.
Если Sleep() совсем убрать или заменить на SwitchToThread() - то снова всё хорошо, TicksAdd и RatesUpdate без тормозов.
но и нагрузка на ЦП получается 8%, бесконечный цикл
а если Sleep() то видимо или успевают кеши протухнуть или по ядрам неудачно мигрирует, поэтому следующий за ним TicksAdd RatesUpdate могут втормозить на ровном месте
Возможно что-то с кешами процессора и планировщиком.
Если Sleep() совсем убрать или заменить на SwitchToThread() - то снова всё хорошо, TicksAdd и RatesUpdate без тормозов.
но и нагрузка на ЦП получается 8%, бесконечный цикл
а если Sleep() то видимо или успевают кеши протухнуть или по ядрам неудачно мигрирует, поэтому следующий за ним TicksAdd RatesUpdate могут втормозить на ровном месте
глядишь, кому пригодится: организация цикла внутри сервиса MT5:
более менее, и ЦП разгружался и упомянутые TicksAdd RatesUpdate меньше втормаживают
помимо строгой очерёдности CustomSymbolSetXXX
видимо (причём скорее от билда-к-билду) должна быть правильная очерёдность CustomTickAdd CustomRatesUpdate, при которой они оба работают быстрее.
например всё по одному символу (тики далее свечи или наоборот, или по очерёдности), потом по следующему символу и так далее. И там ещё где-то CustomBookAdd между ними потом :-)
потому что если всё пихать строго как оно приходит, получается странно, с дикими провалами :
(на скриншоте только то что дольше 250ms)
иногда на единичный TickAdd, RatesUpdate уходит больше времени как на 250.
я-бы понял если связано с добавлением баров на старших таймах (в более-менее округлое время), но моменты времени произвольные