int init() {linebye();return(0);}int deinit(){Comment (" ");ObjectDelete ("10");ObjectDelete ("Label");return(0);}int start() {if (IsConnected()) { if (ObjectFind("Label") == (-1)) {linebye();} if (ObjectFind("10") == (-1)) {ObjectCreate ("10",OBJ_TEXT,0,Time[WindowBarsPerChart( )/3] , WindowPriceMax(0) ); ObjectSetText("10", DoubleToStr (Close[4],4), font, "Arial", clr);} while (ObjectFind("Label")!=(-1) ) { STL = ObjectGet("Label", 1); text(); Comment("\n"+"Значение линии: " +DoubleToStr(STL,Digits)+"\n" + "Суммарный лот: " + DoubleToStr(lots(),2)+ "\n"+ "Прибыль/убыток на уровне линии: " + res1 + " и размер баланса: " + res +"\n" + "Для прекращения работы скрипта удалите мерцающую линию "); if (iii == 5) {Sleep (30); ObjectSet( "Label", 6, Aqua); WindowRedraw( );} else Sleep (30); if (iii == 10) {Sleep (30); ObjectSet( "Label", 6, Red); WindowRedraw( );} else Sleep (30); if (iii == 10) iii = 0; iii = iii+1; } if (lots() != 0) { if (MessageBox (" Установить уровень закрытия ордеров по цене мигающей линии??? ","Скрипт интересуется:",1)==1) startset(); }}else MessageBox ("Нет соединения с сервером!!!"," Скрипт сообщает:",0x00000000); return(0);}//+------------------------------------------------------------------+int linebye() {// Рисуем линию (которая мигает)ObjectDelete( "Label");ObjectCreate( "Label", OBJ_HLINE, 0, 0, (Bid-Point*(MarketInfo(Symbol(), MODE_STOPLEVEL))) );ObjectSet( "Label", 6, White); ObjectSet( "Label", 8, 2); WindowRedraw( ) ; return(0); }//+------------------------------------------------------------------+string text() { if (funkprice() != 0) {res = DoubleToStr ((AccountBalance( ) - (((STL - funkprice())/Point)*MarketInfo(Symbol(), MODE_TICKVALUE)*lots()*(-1))),0); res1 = DoubleToStr (( (((STL - funkprice())/Point)*MarketInfo(Symbol(), MODE_TICKVALUE)*lots())),1); res2 = DoubleToStr ( (100*(((STL - funkprice())/Point)*MarketInfo(Symbol(), MODE_TICKVALUE)*lots()))/AccountBalance(),2);} else {res = " Суммарный лот = 0! "; res1 = ""; res2 = "";} if (((((STL - funkprice())/Point)*MarketInfo(Symbol(), MODE_TICKVALUE)*lots()))>0) clr = Magenta; else clr = Red; ObjectSetText("10"," Баланс: "+res+" "+AccountCurrency( )+", Профит: "+res1+" "+AccountCurrency( )+" ( "+res2+"% от Depo ) " , font, "Arial", clr); WindowRedraw( ) ;return(0); }//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&double funkprice() { double price=0; if (lots()!=0) { if (lots()>0) price = MarketInfo(Symbol(),MODE_BID) - ((symbolprofit()/(MarketInfo(Symbol(), MODE_TICKVALUE)*lots()))*Point); if (lots()<0) price = MarketInfo(Symbol(),MODE_ASK) - ((symbolprofit()/(MarketInfo(Symbol(), MODE_TICKVALUE)*lots()))*Point); } return (price); } //*******************************************int startset() { int kol=0; int kolOK=0; int i=0; double ilots=0; for (i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { ilots=ilots+OrderLots(); kol=kol+1; } if (OrderType()==OP_SELL) { ilots=ilots-OrderLots(); kol=kol+1; } }//----- Alert ("!!! Пожалуйста дождитесь окончания работы скрипта!"); int resi = 0; for (i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (STL>Ask) { if (OrderType()==OP_BUY) {if (STL == OrderTakeProfit()) resi=resi+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),STL,0,CLR_NONE)) resi = resi+1;} } if (OrderType()==OP_SELL){if (STL == OrderStopLoss()) resi=resi+1; else { if (OrderModify(OrderTicket(),0,STL,OrderTakeProfit(),0,CLR_NONE)) resi = resi+1;} } } if (STL<Bid) { if (OrderType()==OP_BUY) {if (STL == OrderStopLoss()) resi=resi+1; else { if (OrderModify(OrderTicket(),0,STL,OrderTakeProfit(),0,CLR_NONE)) resi = resi+1;} } if (OrderType()==OP_SELL){if (STL == OrderTakeProfit()) resi=resi+1; else { if (OrderModify(OrderTicket(),0,OrderStopLoss(),STL,0,CLR_NONE)) resi = resi+1;} } } } Alert ("***************************************************"); if (kol==resi) Alert ("Все ордера успешно изменены! ОК!"); else Alert ("!!! Внимание!!! Не удалось изменить - " +(kol-resi)+ " ордера из "+kol+" имеющихся"); Alert ("************ информация от скрипта ************"); return(0); } double lots(){double sumlots = 0;for (i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { sumlots=sumlots+OrderLots(); } if (OrderType()==OP_SELL) { sumlots=sumlots-OrderLots(); } }return(sumlots);} //**************************double symbolprofit() // profit по ордерам текущего инструмента (без свопов и комиссий){double sprofit = 0;for (i=0; i<OrdersTotal(); i++) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; sprofit = sprofit + OrderProfit()+OrderSwap()+OrderCommission(); }return(sprofit);