Ребята, помогите! Нужен код, чтобы удалить не сработавший отложенный ордер по истечении времени! К примеру советник открыл отложенный ордер, но если в течении часа ордер не сработал, то советник должен удалить её! Код для МТ4 нужен)
- Истечение срока отложенного ордера, нужна помощь
- Напишу советник бесплатно
- [АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4.
Aibek Mugiynov:
Ребята, помогите! Нужен код, чтобы удалить не сработавший отложенный ордер по истечении времени! К примеру советник открыл отложенный ордер, но если в течении часа ордер не сработал, то советник должен удалить её! Код для МТ4 нужен)
Для этого есть expiration - срок истечения ордера в OrderSendРебята, помогите! Нужен код, чтобы удалить не сработавший отложенный ордер по истечении времени! К примеру советник открыл отложенный ордер, но если в течении часа ордер не сработал, то советник должен удалить её! Код для МТ4 нужен)
примерно так...
input int LIFETIME=5; // Время жизни отложенного ордера (в барах) ... int nOrderType = OrderType(); int nOrderTicket = OrderTicket(); datetime dOrderOpenTime = OrderOpenTime(); int nLifeTime = iBarShift(_Symbol, PERIOD_CURRENT, dOrderOpenTime); if(nOrderType==OP_BUYLIMIT || nOrderType==OP_SELLLIMIT || nOrderType==OP_BUYSTOP || nOrderType==OP_SELLSTOP) { // Проверить время жизни отложенного ордера в барах if (nLifeTime>=LIFETIME) { if (!OrderDelete(nOrderTicket)) { // удалить ордер int err=GetLastError(); Print("*** Ошибка удаления ордера #", nOrderTicket, ", код ошибки #", err); } } } ...
Eugene Myzrov:
примерно так.
Eugene Myzrov:
примерно так...
что-то не пашет у меня(..
Aibek Mugiynov:
что-то не пашет у меня(..
Это явно кусок из цикла с перебором всех ордеров, не надо его буквально вставлять
if (OrderDelete(nOrderTicket)) continue;
Да, это фрагмент из цикла сопровождения ордеров. Немного поправил код, чтобы он выглядел более самостоятельно.
Aibek Mugiynov: что-то не пашет у меня (..
малоинформативное утверждение, по нему ничего нельзя сказать...
Eugene Myzrov:
м
Eugene Myzrov:
малоинформативное утверждение, по нему ничего нельзя сказать...
//+------------------------------------------------------------------+ //| AibekuS.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Мугинов Айбек" #property link "aibekus92@gmail.com" extern double LotProc=0.1; extern double Lot=0.1; extern int TP=0; extern int SL=0; extern int Tral=1000; input double MA_high =50; input double MA_low =5; extern int step=3000; extern int Magic=123; double MaxProfit,MaxPercentTotalProfit,DrawPointBuyMax,DrawPointSellMax; // для индюка string gs_140 = "lblfin_"; int D; int init() {D=1; if (Digits==5 || Digits==4)D=10; return(0);} //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() {double Lot=0; Trail(); if(LotProc>0)Lot=NormalizeDouble(AccountBalance()/100*LotProc/(MarketInfo(Symbol(),MODE_TICKVALUE)*100*D),2); if (Lot<MarketInfo(Symbol(),MODE_MINLOT))Lot=MarketInfo(Symbol(),MODE_MINLOT); double Lots=0; double bsl,btp,ssl,stp; if(SL!=0) {bsl=Ask-SL*Point-step*Point;ssl=Bid+SL*Point+step*Point;} if(TP!=0) {btp=Ask+TP*Point+step*Point;stp=Bid-TP*Point-step*Point;} //---- double MA_L=iMA(NULL,0,MA_low,0,MODE_EMA,PRICE_CLOSE,0); double MA_H=iMA(NULL,0,MA_high,0,MODE_EMA,PRICE_CLOSE,0); if(Count()==0) {if(MA_L>MA_H ) OrderSend(Symbol(),4,Lot,Ask+step*Point,3,bsl,btp,"Aibek",Magic); if(MA_L<MA_H ) OrderSend(Symbol(),5,Lot,Bid-step*Point,3,ssl,stp,"Aibek",Magic); }} //+--------------Определяем кол-во ордеров------------------------------+ int Count() {int count=0; for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {if(Symbol()==OrderSymbol() && OrderMagicNumber()==Magic) count++;} return(count);} //+-------- //--------------------------Трейлинг стоп------------------------------+ void Trail() {for(int i=0; i<OrdersTotal(); i++) if (OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {if(Tral!=0){ if (OrderType()==OP_BUY && Bid>MathMax(OrderOpenPrice(),OrderStopLoss())+Tral*Point) if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Tral*Point,OrderTakeProfit(),0)) {} if (OrderType()==OP_SELL && ((Ask<MathMin(OrderOpenPrice(),OrderStopLoss())-Tral*Point && OrderStopLoss()!=0)||(Ask<OrderOpenPrice()-Tral*Point && OrderStopLoss()==0))) if (!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Tral*Point,OrderTakeProfit(),0)) {}}}}
Вот полный код совы... не знаю как сюда прикрутить..
Aibek Mugiynov:
Вы писали Aibek Mugiynov: что-то не пашет у меня (..
И где тут работа со временем отложенных ордеров?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь