//+------------------------------------------------------------------+ //| свой.mq4 | //| Copyright 2023, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property strict datetime dt; input int InpBandsPeriods = 20; input double InpBandsDeviations = 2; input ENUM_APPLIED_PRICE InpBandsAPPLIEDPRICE = PRICE_CLOSE; input int InpMagicNumber = 333; input string InpTradeComment = __FILE__; int OnInit() { return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { if(!IsNewBar()) return; double close1 = iClose(Symbol(), Period(), 1); double high1 = iHigh(Symbol(), Period(), 1); double low1 = iLow(Symbol(), Period(), 1); double open1 = iOpen(Symbol(), Period(), 1); double close2 = iClose(Symbol(), Period(), 2); double high2 = iHigh(Symbol(), Period(), 2); double low2 = iLow(Symbol(), Period(), 2); double open2 = iOpen(Symbol(), Period(), 2); double upper1 = iBands(Symbol(), Period(), InpBandsPeriods, InpBandsDeviations, 0, InpBandsAPPLIEDPRICE, MODE_UPPER, 1); double lower1 = iBands(Symbol(), Period(), InpBandsPeriods, InpBandsDeviations, 0, InpBandsAPPLIEDPRICE, MODE_LOWER, 1); double upper2 = iBands(Symbol(), Period(), InpBandsPeriods, InpBandsDeviations, 0, InpBandsAPPLIEDPRICE, MODE_UPPER, 2); double lower2 = iBands(Symbol(), Period(), InpBandsPeriods, InpBandsDeviations, 0, InpBandsAPPLIEDPRICE, MODE_LOWER, 2); if (close2>upper2 && close1open1) { if (OrdersTotal() == 0){ OrderSend(Symbol(), OP_BUYLIMIT, 0.02, Ask-100*Point, 3, Bid-200*Point, Bid, NULL, 555); OrderSend(Symbol(), OP_BUYLIMIT, 0.06, Ask-200*Point, 3, Bid-300*Point, Bid-100*Point, NULL, 666); OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, Bid+300*Point, Bid-100*Point, NULL, 444); } } return; } bool IsNewBar() { if(Time[0] != dt) { dt = Time[0]; return(TRUE); } return(FALSE); } мой советник должен следить за бойлингером и открывать 3 позиции по условиям: 1 срабатывает условие сигнала по бойлингеру 2 если открытых позиций нет, то открываются 3 позиции: - 1 позиция по рынку - 2 отложенных ордера 3 если срабатывает любой тейк-профит любой из 3 позиций, то в этот же момент должны закрываться остальные 2 (открытые по рынку, отложки удаляться. фактически условие сводится к тому, что если сумма отложек и позиций по рынку становится не 3, а 2, то 2 оставшиеся позиции закрываются/удаляются дальше все заново. отсутствие открытых ордеров и позиций дает возможность советнику открыть новые 3 позиции. если будут предложения по улучшению кода в части написания правил открытия позициий, буду рад услышать. на тестере позиции открываются корректно, как мне надо сейчас. отсутствует только часть по закрытию позиций.