Эта библиотека просто великолепна!!! Так легко запускать код MT4 в MT5. Спасибо большое
У меня есть одна проблема: функция OrderTicket() не возвращает правильное число, когда сделка закрывается. Это настоящая проблема, чтобы следить за сделкой, когда она закрыта.
Например, сделка # 4584849 превращается в # 38484939 после закрытия.
Если требуется не светить использование MT4Orders в своем продукте, можно либо резать соответствующие куски исходника библиотеки, либо поставить универсальную заглушку
// Через макросы обрубаем любые намеки о присутствии MT4Orders.#define Alert PrintTmp
#define Print PrintTmp
void PrintTmp( string ) {}
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006#undef Print
#undef Alert
#include <MT4Orders.mqh>
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)
voidOnStart()
{
if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Открыли отложку и выбрали ее
OrderPrint(); // Распечатали ее данныеOrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0) // Открыли отложку, но не выбирали.
OrderPrint(); // MT4 вернет тот же результат, что до этого, MT5 - не обязательно.
}
Результат в MT5.
#8275895982021.01.1301:21:17.832 buy limit 1.00 EURSEK 10.068490.000000.0000010.069490.000.000.000#8275896012021.01.1301:21:17.895 buy limit 1.00 EURSEK 10.068490.000000.0000010.069490.000.000.000// В MT4 строка бы совпадала с предыдущей.
После торговых операций (в Терминале, не в Тестере) OrderLots(), OrderTicket() и другие значения могут быть изменены. Кто конвертит из MT4, учитывайте это.
После торговых операций (в Терминале, не в Тестере) OrderLots(), OrderTicket() и другие значения могут быть изменены. Кто конвертит из MT4, учитывайте это.
Аналогично и после OrdersTotal.
#include <MT4Orders.mqh>
#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)
voidOnStart()
{
if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Открыли отложку и выбрали ее
OrderPrint(); // Распечатали ее данныеSleep(10000); // Пауза.OrdersTotal();
OrderPrint(); // MT4 вернет тот же результат, что до этого, MT5 - не обязательно.
}
Уважаемый fxsaber скорее всего вопрос-баян, но мне придется его задать. Библа работает хорошо, но в тестере одна особенность появляется. В начале советник что-то очень усиленно молотит, не выдавая тики, то есть как только первый тик происходит что-то очень лютое там запускается и только спустя несколько минут тест начинает идти. Сейчас в MT5 зашел повесил на график сов он так же первый тик съел и одно ядро полностью загружено висит, принчу тики в лог они появляются с периодичностью в 2,5 минуты примерно ). И главное не понятно сколько он еще так будет насиловать терминал и закончит ли вообще). Сов нормально работает на четверке на пятом это не юзабельно в принципе. Ладно я отключил распринтовку, но это только лог очистило а с производительностью как быть то ? Да я использую и хистори тотал и ордер селект, иначе а смысл какой либу юзать. Тоесть потиковые роботы не поюзаешь, плюс эта штука лочит OnTick и соответственно все интерфейсы встают потому что MQL5 OnChartEvent повесила на OnTick, зачем не понятно. Вообще как то можно выключить все вот эт очто так издевается над терминалом или это в принципе не предусмотрено ? Очень хотелось вашу либу использовать в своем продукте, но пока не вижу как
протестировал MT4Orders относительно использования чистого MQL5 (без использования СБ ) https://www.mql5.com/ru/forum/357253/page4#comment_19593443
однозначно, ничего в MT4Orders не тормозит, и работает отлично
Отдельные от MT4Orders снепшоты не на ровном месте писались. Но это реал. В Тестере сложно создать тормоза.
Эта библиотека просто великолепна!!! Так легко запускать код MT4 в MT5. Спасибо большое
У меня есть одна проблема: функция OrderTicket() не возвращает правильное число, когда сделка закрывается. Это настоящая проблема, чтобы следить за сделкой, когда она закрыта.
Например, сделка # 4584849 превращается в # 38484939 после закрытия.
Заранее спасибо за помощь
Это мой код в скрипте:
#include <MT4Orders1.mqh> void OnStart() { int n=OrdersTotal(); //pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket)); for(int i=n-1; i>=0; i--) { //--- //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic()) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()>=OP_BUY && OrderSymbol()==Symbol()) { Print("MOH ",i, " ",OrderTicket()); } } Print("History"); n=OrdersHistoryTotal(); //pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket)); for(int i=n-1; i>=0; i--) { //--- //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic()) if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()>=OP_BUY && OrderSymbol()==Symbol()) { Print("MOH ",i, " ",OrderTicket()); } } }А как можно выключить все распринтовки и лишние расчеты (если таковые есть)? Не нашел в дефайнах
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2019.04.29 15:19
Если требуется не светить использование MT4Orders в своем продукте, можно либо резать соответствующие куски исходника библиотеки, либо поставить универсальную заглушкуспасибо
Результат в MT5.
После торговых операций (в Терминале, не в Тестере) OrderLots(), OrderTicket() и другие значения могут быть изменены. Кто конвертит из MT4, учитывайте это.
После торговых операций (в Терминале, не в Тестере) OrderLots(), OrderTicket() и другие значения могут быть изменены. Кто конвертит из MT4, учитывайте это.
Аналогично и после OrdersTotal.
Результат.