Когда OrderSend был не синхронизирован с торговым окружением терминала, в MT4Orders была встроена автоматическая синхронизация.
Через некоторое время разработчики встроили синхронизацию и в библиотеке старый код синхронизации был оставлен с небольшим исключением - он стал не только синхронизировать, но и проверять, правильно ли работает синхронизация OrderSend от разработчиков. В случае ошибки, должен выскакивать алерт
if (MT4ORDERS::OrderSendBug)
{
Alert("BUG!!!!!!");
Появились сообщения, что этот Alert в редких случаях (похоже, когда ЦП загружен) срабатывает, сигнализируя о том, что OrderSend разработчиков бажит в вопросах синхронизации с торговым окружением. Как сообщить об этом разработчиком в СД - не знаю, т.к. воспроизвести не могу. Но факт остается фактом.
Поэтому есть два варианта.
Оставить, как есть - алерт будет рапортовать о баге разработчиков.
Отказаться от Алерта.
В обоих случаях библиотека принудительно синхронизирует OrderSend за мин. время.
// Список изменений:// 03.08.2016:// Релиз - писался и проверялся только на оффлайн-тестере.// ....// 03.08.2017:// Add: Добавлена OrderCloseBy.// Add: Ускорена работа OrderSelect в MODE_TRADES-режиме. Теперь есть возможность получать данные выбранного ордера через// соответствующие MT4-Order-функции, даже если MT5-позиция/ордер(не в истории) выбраны не через MT4Orders.// Например, через MT5-PositionSelect*-функции или MT5-OrderSelect.// Add: Добавлены OrderOpenPriceRequest() и OrderClosePriceRequest() - возращают цену торгового запроса при открытии/закрытии позиции.// С помощью данных функций возможно вычислять соответствующие проскальзывания ордеров.
Правда, я пробовал два эксперта и опыт негативный, в первой попытке не проходила компиляция - не разбирался из-за слабого понимания торговых функций, во втором варианте советник стал жутко тормозить - забирает все ресурсы ядра, но компиляция прошла успешно.
Про второй вариант сложно сказать в чем причина, может и не из-за класса - там полу автомат - торговля на пробой уровня - уровни строятся руками.
К сожалению, изначально библиотека совершенно не отвечала за все переводы MT4->MT5, где используются не только торговые функции MQL4.
В Вашем случае медленная работа советника вызвана не данной библиотекой, а частной реализацией перевода MT4->MT5, затрагивающей работу с таймсериями, индикаторами и т.д.
К сожалению, изначально библиотека совершенно не отвечала за все переводы MT4->MT5, где используются не только торговые функции MQL4.
А сейчас отвечает?
fxsaber:
В Вашем случае медленная работа советника вызвана не данной библиотекой, а частной реализацией перевода MT4->MT5, затрагивающей работу с таймсериями, индикаторами и т.д.
Частной - это моей или другой библиотеки?
Всё делал согласно известной всем статье, да и особых там индикаторов то нет...
Сомневаюсь, что этот код может приводить к сверх загрузке ядра:
double iMAMQL4(string symbol,
int tf,
int period,
int ma_shift,
int method,
int price,
int shift)
{
ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
ENUM_MA_METHOD ma_method=MethodMigrate(method);
ENUM_APPLIED_PRICE applied_price=PriceMigrate(price);
int handle=iMA(symbol,timeframe,period,ma_shift,
ma_method,applied_price);
if(handle<0)
{
Print("Объект iMA не создан: Ошибка ",GetLastError());
return(-1);
}
elsereturn(CopyBufferMQL4(handle,0,shift));
}
Обновление
Пример, как это работает
Forum on trading, automated trading systems and testing trading strategies
MT5 versus MT4 Terminal Screens - Disappointed with changes in MT 5
fxsaber, 2017.07.07 08:46
First run this script
Result:
Then run this
Result
In this way it is possible to learn the SL/TP of closed positions.
MT4 содержит меньше информации, чем MT5. Но ничто не мешает одновременно использовать MT4/5 торговые API
Результат
Когда OrderSend был не синхронизирован с торговым окружением терминала, в MT4Orders была встроена автоматическая синхронизация.
Через некоторое время разработчики встроили синхронизацию и в библиотеке старый код синхронизации был оставлен с небольшим исключением - он стал не только синхронизировать, но и проверять, правильно ли работает синхронизация OrderSend от разработчиков. В случае ошибки, должен выскакивать алерт
Появились сообщения, что этот Alert в редких случаях (похоже, когда ЦП загружен) срабатывает, сигнализируя о том, что OrderSend разработчиков бажит в вопросах синхронизации с торговым окружением. Как сообщить об этом разработчиком в СД - не знаю, т.к. воспроизвести не могу. Но факт остается фактом.
Поэтому есть два варианта.
Библиотеке год...
Библиотеке год...
Мои поздравления! Замечательная обертка.
Библиотеке год...
Поздравляю!
Правда, я пробовал два эксперта и опыт негативный, в первой попытке не проходила компиляция - не разбирался из-за слабого понимания торговых функций, во втором варианте советник стал жутко тормозить - забирает все ресурсы ядра, но компиляция прошла успешно.
Про второй вариант сложно сказать в чем причина, может и не из-за класса - там полу автомат - торговля на пробой уровня - уровни строятся руками.
Спасибо за поздравления, благодарен всем за замечания! Они всегда учитываются.
советник стал жутко тормозить - забирает все ресурсы ядра, но компиляция прошла успешно.
Хотелось бы увидеть код. Можно в ЛС.
Спасибо за поздравления, благодарен всем за замечания! Они всегда учитываются.
Хотелось бы увидеть код. Можно в ЛС.
Выслал код в ЛС.
Выслал код в ЛС.
К сожалению, изначально библиотека совершенно не отвечала за все переводы MT4->MT5, где используются не только торговые функции MQL4.
В Вашем случае медленная работа советника вызвана не данной библиотекой, а частной реализацией перевода MT4->MT5, затрагивающей работу с таймсериями, индикаторами и т.д.
К сожалению, изначально библиотека совершенно не отвечала за все переводы MT4->MT5, где используются не только торговые функции MQL4.
А сейчас отвечает?
В Вашем случае медленная работа советника вызвана не данной библиотекой, а частной реализацией перевода MT4->MT5, затрагивающей работу с таймсериями, индикаторами и т.д.
Частной - это моей или другой библиотеки?
Всё делал согласно известной всем статье, да и особых там индикаторов то нет...
Сомневаюсь, что этот код может приводить к сверх загрузке ядра:
Или в нём причина?