Нужно заменить в коде через #define функцию OrderSend на пользовательскую функцию, которая будет идентична OrderSend, но в ней будет исполняться предварительно дополнительный код.
Написал такой код
Но получаю ошибки
Что не так делаю, подскажите, пожалуйста!
рекурсия однако.
вы или крестик снимите (используйте ::OrderSend в теле функции) или трусы оденьте - перенесите #define ниже, чтоб не затрагивал функцию
вроде что то куда то подключилось - но что это значит?
Работает или нет или частично....
вышел - зашел - опять не подключает...
Роман, а почему вы всегда сохраняете снимок двух мониторов? Ведь снимок получается очень мелкий… Разве вы не знаете, что Alt+Print Screen копирует только активное окно ПО?
Роман, а почему вы всегда сохраняете снимок двух мониторов? Ведь снимок получается очень мелкий… Разве вы не знаете, что Alt+Print Screen копирует только активное окно ПО?
тестирую сов на демке. Работает по индикатору ADX. Сегодня открылись лимитки нарушив все условия индюка. (должен быть бай лимит(чуть позже), а открылся селлимит)
как такое может быть?
Проверил тестером сейчас. Тот же советник в тестере открыл байлимит. Сигналы индюка отрисованы идентично.
Посмотрел журнал, запись об открытии 11:21, а в терминале 10:21, и в это время не должно открываться вообще ничего (условия не выполняются) а вот в 9:21, как раз условия на открытие селлимита.
Вот код открытия ордеров:
voidOnTick()
{
//---int x;
double iflet,ibuy,isell;
int _timeframe;
if (timeframe==1)_timeframe=1;
elseif(timeframe==0)_timeframe=0;
elseif(timeframe==2)_timeframe=5;
elseif(timeframe==3)_timeframe=15;
elseif(timeframe==4)_timeframe=30;
elseif(timeframe==5)_timeframe=60;
elseif(timeframe==6)_timeframe=240;
elseif(timeframe==7)_timeframe=1440;
elseif(timeframe==8)_timeframe=10080;
else _timeframe=43200;
// Обновляем текст на лейблах
DrawLABEL("lab_Take" ,1,5,0,Color(GetProfitFromStart()>0,Lime,Red),StringConcatenate("Profit: ",DoubleToStr(GetProfitFromStart(),2),AC));
//---//+------------------------------------------------------------------+//| Установка лимиток по индикатору ADX |//+------------------------------------------------------------------+if(CountOrders()==0 && ObjectGetInteger(0,"lab_Button",OBJPROP_STATE)==true)
{
iflet=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, bar); // как индикатор орпределяет флэт
ibuy=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_PLUSDI, bar); // как индикатор орпеделяет где покупать
isell=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MINUSDI, bar); // как индикатор орпеделяет где продаватьif(iflet<f && ibuy>isell) //условие для покупки и определение флета
{
for(x=1;x<=MAX_Lines;x++) // считает сколько открыто линий сетки отложенными ордерами, чтобы не превышало указанное в исходных параметрах MAX_Lines
{ //сек/мин/ч/дн/if (OrderSend(Symbol(),OP_BUYLIMIT,lot,Ask-((Delta1-Delta)+Delta*x)*Point,slippage,Ask-((Delta1+Delta*(MAX_Lines-1))+SL)*Point,Ask+TP*Point,"",magic,TimeCurrent()+60*60*24*DN,Blue))
{Print("Open BuyLimit: ",_Symbol);}
else {Print("Error Open BuyLimit: ",_Symbol," / ",GetLastError());}
}
}
elseif(iflet<f && ibuy<isell)//условие для продажи и определение флета
{
for(x=1;x<=MAX_Lines;x++)
{
//сек/мин/ч/дн/ if (OrderSend(Symbol(),OP_SELLLIMIT,lot,Bid+((Delta1-Delta)+Delta*x)*Point,slippage,Bid+((Delta1+Delta*(MAX_Lines-1))+SL)*Point,Bid-TP*Point,"",magic,TimeCurrent()+60*60*24*DN,Red))
{Print("Open SellLimit: ",_Symbol);}
else {Print("Error Open SellLimit: ",_Symbol," / ",GetLastError());}
}
}
}
тестирую сов на демке. Работает по индикатору ADX. Сегодня открылись лимитки нарушив все условия индюка. (должен быть бай лимит(чуть позже), а открылся селлимит)
как такое может быть?
Проверил тестером сейчас. Тот же советник в тестере открыл байлимит. Сигналы индюка отрисованы идентично.
Посмотрел журнал, запись об открытии 11:21, а в терминале 10:21, и в это время не должно открываться вообще ничего (условия не выполняются) а вот в 9:21, как раз условия на открытие селлимита.
Вот код открытия ордеров:
Это значит что тестер отличается от реальной торговли, со временем сервера это не связано.
Прошу помощи зала :)
Нужно заменить в коде через #define функцию OrderSend на пользовательскую функцию, которая будет идентична OrderSend, но в ней будет исполняться предварительно дополнительный код.
Написал такой код
Но получаю ошибки
Что не так делаю, подскажите, пожалуйста!
рекурсия однако.
вы или крестик снимите (используйте ::OrderSend в теле функции) или трусы оденьте - перенесите #define ниже, чтоб не затрагивал функцию
рекурсия однако.
вы или крестик снимите (используйте ::OrderSend в теле функции) или трусы оденьте - перенесите #define ниже, чтоб не затрагивал функцию
Да, как раз зашел удалить пост. Спасибо, так и сделал - устал уже...
коллеги - как сейчас работать через хранилище?
два МТ 5 - чтобы коды через него юзать в разных локациях МТ 5.
да - смотрю она сейчас в коде - сторадж
https://www.mql5.com/ru/code/storage
Коллеги - почему пишет активация хранилища - ошибка....
делаю по ссылке вроде все правильно
https://www.mql5.com/ru/code/storage
https://www.metatrader5.com/ru/metaeditor/help/mql5storage/mql5storage_connect
логи
0 2023.03.08 19:36:12.688 Protector connecting
0 2023.03.08 19:36:13.244 Protector connected
0 2023.03.08 19:36:13.345 Protector authorized
0 2023.03.08 19:36:26.798 Protector disconnected
0 2023.03.08 19:36:26.798 Protector disconnected
0 2023.03.08 19:36:26.798 Protector disconnected
0 2023.03.08 19:38:24.397 Protector disconnected
2 2023.03.08 19:41:14.484 Storage activation of MQL5 Storage failed [406]
2 2023.03.08 19:41:38.857 Storage activation of MQL5 Storage failed [406]
2 2023.03.08 19:44:20.271 Storage activation of MQL5 Storage failed [406]
2 2023.03.08 19:46:17.602 Storage invalid MQL5 login or password
2 2023.03.08 19:46:33.815 Storage invalid json content
вроде что то куда то подключилось - но что это значит?
Работает или нет или частично....
вышел - зашел - опять не подключает...
что это значит?
пишет - хранилище не удалось найти....
вроде что то куда то подключилось - но что это значит?
Работает или нет или частично....
вышел - зашел - опять не подключает...
Роман, а почему вы всегда сохраняете снимок двух мониторов? Ведь снимок получается очень мелкий… Разве вы не знаете, что Alt+Print Screen копирует только активное окно ПО?
Роман, а почему вы всегда сохраняете снимок двух мониторов? Ведь снимок получается очень мелкий… Разве вы не знаете, что Alt+Print Screen копирует только активное окно ПО?
здравствуйте всем!
тестирую сов на демке. Работает по индикатору ADX. Сегодня открылись лимитки нарушив все условия индюка. (должен быть бай лимит(чуть позже), а открылся селлимит)
как такое может быть?
Проверил тестером сейчас. Тот же советник в тестере открыл байлимит. Сигналы индюка отрисованы идентично.
Может ли быть данная проблема связана со временем сервера?
Посмотрел журнал, запись об открытии 11:21, а в терминале 10:21, и в это время не должно открываться вообще ничего (условия не выполняются) а вот в 9:21, как раз условия на открытие селлимита.
Вот код открытия ордеров:
Подскажите пожалуйста, есть ли хоть какая-то возможность смоделировать в тестере MT5 частичное заполнение ордеров (FILLING RETURN) режим NETTING?
здравствуйте всем!
тестирую сов на демке. Работает по индикатору ADX. Сегодня открылись лимитки нарушив все условия индюка. (должен быть бай лимит(чуть позже), а открылся селлимит)
как такое может быть?
Проверил тестером сейчас. Тот же советник в тестере открыл байлимит. Сигналы индюка отрисованы идентично.
Может ли быть данная проблема связана со временем сервера?
Посмотрел журнал, запись об открытии 11:21, а в терминале 10:21, и в это время не должно открываться вообще ничего (условия не выполняются) а вот в 9:21, как раз условия на открытие селлимита.
Вот код открытия ордеров:
Это значит что тестер отличается от реальной торговли, со временем сервера это не связано.
Предположу что была перерисовка индикатора.