Как? Где-то на середине ее работы прервать, а потом с этого же места при тех же значениях всех переменных продолжить?
и при определённых условиях - она начала работать как ни в чем не бывало..
P.S. Вообще я пытаюсь сделать проверку на то, что если у меня есть больше, чем определенное количество позиций - то я больше не должен докупаться.(к примеру.)
Ничего другого как привалить ВСЮ функцию я пока что не придумал. )
Хотел вложить ещё одну функцию и привалить уже её - но нельзя этого делать в mql5 как я понял.
скорее всего не так уж и нужно её прерывать, если опишите для чего Вам это нужно то может и найдутся другие решения.
Это основы. Операторы if, switch, функции. Можно писать функции и вызывать их когда надо, когда не надо не вызывать. Можно и без функций разруливать через if, switch. Желающие еще способы найдут. Это то самое, ради чего языки программирования и существуют.
Можно оператором return;
Тип функции void говорит о том, что функция при завершении своей работы не возвращает никакого значения.
Функция OnTick() активируется при приходе нового тика. Она активируется сама, без Вашего участия. Она предназначена для обработки события - поступление нового тика.
//| My_Practics.mq5 |
//| Mike_Kharkov |
//| https://www.fl.ru/users/Yamaradg/ |
//+------------------------------------------------------------------+
#property copyright "Mike_Kharkov"
#property link "https://www.fl.ru/users/Yamaradg/"
#property version "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
};
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
};
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
MqlTradeRequest request={0};
request.action = TRADE_ACTION_DEAL; // Тип выполняемого действия
request.symbol = _Symbol; // Имя торгового инструмента
request.volume = 0.01; // Запрашиваемый объем сделки в лотах
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK); // Цена
request.type = ORDER_TYPE_BUY; // Тип ордера
request.tp = 0; // Цена, по которой сработает Take Profit ордер при движении цены в благоприятном направлении
request.sl = 0; // Цена, по которой сработает Stop Loss ордер при движении цены в неблагоприятном направлении
request.type_filling = ORDER_FILLING_FOK; // Тип ордера по исполнению
request.type_time = ORDER_TIME_GTC;
MqlTradeResult result={0};
bool send1 = OrderSend(request,result);
Print(" Код возврата торгового сервера: ", result.retcode);
int position_total_1 = PositionsTotal();
Print(" Количество открытых позиций: ", position_total_1);
if(position_total_1>=0)
{
return;
};
//---
};
//+------------------------------------------------------------------+
То есть видно что позиция продолжает с каждым тиком докупаться..
(до тех пор пока баланс не выходит за лимиты.)
- www.fl.ru
То есть видно что позиция продолжает с каждым тиком докупаться..
(до тех пор пока баланс не выходит за лимиты.)
Проверку наличия позиции вставьте перед отправкой ордера на открытие.
А допустим включить это дело можно как то?
Что бы при другом условии функция запустилась опять.
(C типом Void.)
C любым другим типом, насколько я понимаю достаточно будет return(0); или return true; return(INIT_SUCCEEDED);?
скорее всего не так уж и нужно её прерывать, если опишите для чего Вам это нужно то может и найдутся другие решения.
Ok. Работает.
А допустим включить это дело можно как то?
Что бы при другом условии функция запустилась опять.
(C типом Void.)
C любым другим типом, насколько я понимаю достаточно будет return(0); или return true; ?
Посмотрите как включаются эти функции (при каких событиях)
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В MQL не силен.(знаком около недели с этим делом.)
Читаю доку и нигде не могу найти как можно привалить функцию void OnTick()
Это реально как то сделать?
(а потом допустим при каком то условии возобновить её работу.)
P.S. Где вообще можно почитать о чем то подобном?
(как, в деталях, можно(и нужно) работать с функциями и событиями в этом языке.
Допустим обязательно ли нужен тип Void для функции OnTick() )