Что-то вы не так делаете.
Не верю я что такая разница в рабте с событиями и без (если конечно все правильно организовано).
Можно посмотреть на код (можно только в общих чертах)?
Что-то вы не так делаете.
Не верю я что такая разница в рабте с событиями и без (если конечно все правильно организовано).
Можно посмотреть на код (можно только в общих чертах)?
Код я вообще убрал из функции OnChartEvent!
Без OnChartEvent грузится 3 сек.
вставляю:
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
}
грузится 1 мин. 55 сек.
- www.mql5.com
Я про OnInit и OnChartEvent и говорю.
Важно как и где используется EventChartCustom, а также какие события и как обрабатывает сам OnChartEvent.
Сейчас посмотрю как это у меня работает.
- www.mql5.com
Я про OnInit и OnChartEvent и говорю.
Важно как и где используется OnChartEvent.
Сейчас посмотрю как это у меня работает.
в OnInit() ни чего особенного, вот:
int OnInit() { //--1. Инициализировать основные параметры -- if (!im.InizMain()) return -1;//-- Если не вышло то вообще завершить работу -- g_d_MaxLimit = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);//500-Максимально допустимый совокупный объем открытой позиции и отложенных ордеров (вне зависимости от направления) на одном символе g_d_MaxLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);//500-Максимальный объем для заключения сделки g_d_MinLot = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);//0.01 Минимальный объем для заключения сделки g_d_StepLot= SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);//0.01 Минимальный шаг изменения объема для заключения сделки g_i_Laverage = (int)AccountInfoInteger(ACCOUNT_LEVERAGE); g_i_TradeStopsLevel = (int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);//-38 Минимальный отступ в пунктах от текущей цены закрытия для установки Stop ордеров //-- Записать начальное значение лота для торговли -- g_d_Lot = ex_Lot; CalcLot(g_d_Lot);//-- Вычислить размер лота в зависимости от процента -- HWND_Montana = iCustom(Symbol(),Period(),PathAllIndicators+........); if (HWND_Montana == INVALID_HANDLE){ Print("Montana_MA_long_double_15.ex5 = ",HWND_Montana," error = ",GetLastError()); return -1; } return(0); }
А Вы вставьте в код OnChartEvent принты для трассировки событий, может валится огромное количество сообщений от других индикаторов и экспертов.
Например, кто-то активно управляет тысячами объектов.
А Вы вставьте в код OnChartEvent принты для трассировки событий, может валится огромное количество сообщений от других индикаторов и экспертов.
Например, кто-то активно управляет тысячами объектов.
Тоже верно. Но вот загрузку это вряд ли замедлит (если она корректна и не прожорлива с точки зрения времени), а вот выполнение самого эксперта замедлить может.
Да и вроде пока блок инициализации не завершиться все остальное не обрабатывается. Или OnChartEvent это нынче исключение из правил?
Куда уж легче вставить и замерить на практике. Это займет 5 минут.
Ведь кода проверочного нет.
Куда уж легче вставить и замерить на практике. Это займет 5 минут.
Ведь кода проверочного нет.
На счет примера.
Вот как смог набросал пример с инициализацией из того что было под рукой. То что происходит при появлении новых событий отписывать в лом, поэтому просто установил расспросивший.
При установке на график открытого терминала показывалось значение от 15 до 47.
При перезагрузке терминала получал значение от 94 до 1800.
По времени инициализации при старте терминала меня вполне устроил этот вариант (94 миллисекунды)
2011.04.12 18:39:00 Forum (EURUSD,D1) Initialization: Loading system information. 2011.04.12 18:39:01 Forum (EURUSD,D1) Initialization: Changing the template based on the parameters of the trading system. 2011.04.12 18:39:01 Forum (EURUSD,D1) Initialization: Loading of information on the trade account. 2011.04.12 18:39:01 Forum (EURUSD,D1) Trade system: Processing... 2011.04.12 18:39:01 Forum (EURUSD,D1) Продолжительность инициализации - 94 2011.04.12 18:39:10 Experts AutoTrading is disabled 2011.04.12 18:39:11 Forum (EURUSD,D1) New event ID 1006-Parameters of the terminal - Trade forbidden! 2011.04.12 18:39:21 Forum (EURUSD,D1) New event ID 1004-Parameters of the terminal - Dll forbidden! 2011.04.12 18:39:21 Forum (EURUSD,D1) New event ID 1005-Parameters of the terminal - Trade allowed. 2011.04.12 18:39:53 Forum (EURUSD,D1) New event ID 1003-Parameters of the terminal - Dll allowed. 2011.04.12 18:39:53 Forum (EURUSD,D1) New event ID 1006-Parameters of the terminal - Trade forbidden! 2011.04.12 18:40:19 Forum (EURUSD,D1) New event ID 1004-Parameters of the terminal - Dll forbidden! 2011.04.12 18:40:19 Forum (EURUSD,D1) New event ID 1005-Parameters of the terminal - Trade allowed.
PS
Основные вещи в блоке инициализации можно заменить на свои или взять из статьи.
Объекты "Терминал" и Таймер" мои собственные и предназначены для отслеживания состояния терминала и управаления таймером.
На счет примера.
Вот как смог набросал пример с инициализацией из того что было под рукой. То что происходит при появлении новых событий отписывать в лом, поэтому просто установил расспросивший.
Я имел в виду, чтобы gisip сам вставил в свой скрипт отлов событий.
По всей видимости его соседние индикаторы вовсю управляют огромным количеством объектов, что выливается в шквал бродкаст сообщений всем скриптам на этом графике.
Куда уж легче вставить и замерить на практике. Это займет 5 минут.
Ведь кода проверочного нет.
А Вы вставьте в код OnChartEvent принты для трассировки событий, может валится огромное количество сообщений от других индикаторов и экспертов.
Например, кто-то активно управляет тысячами объектов.
Я попробовал:
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
Print ("sparam: " + sparam);
}
Да от внешнего индикатора от созданных им объектов идет большое кол-во сообщений!
Тогда, не подскажите как мне временно отключить эти сообщения хотя бы на момент загрузки???
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Не могу решить проблему, может кто сталкивался уже?
После добавления функции OnChartEvent эксперт вместо 3 сек. загрузки начинает грузиться 1 мин. 55 сек. то есть в 38 раз медленнее даже если функция пустая:
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
}
а в режиме отладки вообще так и не дождался когда загрузится.
Не подскажите как ускорить процесс загрузки эксперта с функцией OnChartEvent ???