extern int Slippage = 5; extern int Target = 25 ; extern int Loss = 25; extern double Lot = 0.1; #define STUPID 0x1 int begin=0,OP_; int TS = 100;// Дист. преследования //-------------------------------------------------------------- // закрытие покупок int ClOrder?(int MagicNumber){ for(int i = 0; i <= OrdersTotal(); i++){ if(OrderSelect(i, SELECT_BY_POS) == false) continue; return(1); } return(0); } //----------------------------------------------------- // покупка void OpenBuy() { //int tickbuy1 =OrderSend(Symbol (), OP_BUY, Lot, NormalizeDouble(Ask,Digits), Slippage, Ask-40*Point,0, NULL, STUPID, 0, Green); int tickbuy2 =OrderSend(Symbol (), OP_BUY, Lot, NormalizeDouble(Ask,Digits), Slippage, Ask-30*Point,0, NULL, STUPID, 0, Green); //int tickbuy3 =OrderSend(Symbol (), OP_BUY, Lot, NormalizeDouble(Ask,Digits), Slippage, Ask-20*Point,0, NULL, STUPID, 0, Green); //int tickbuy4 =OrderSend(Symbol (), OP_BUY, Lot, NormalizeDouble(Ask,Digits), Slippage, Ask-10*Point,0, NULL, STUPID, 0, Green); OP_=OP_BUY; } //---------------------------------------------------- // продажа void OpenSell() { //int ticksell1 =OrderSend(Symbol (), OP_SELL, Lot, NormalizeDouble(Bid,Digits), Slippage, Bid+40*Point,0,NULL, STUPID, 0, Red); int ticksell2 =OrderSend(Symbol (), OP_SELL, Lot, NormalizeDouble(Bid,Digits), Slippage, Bid+30*Point,0,NULL, STUPID, 0, Red); //int ticksell3 =OrderSend(Symbol (), OP_SELL, Lot, NormalizeDouble(Bid,Digits), Slippage, Bid+20*Point,0,NULL, STUPID, 0, Red); //int ticksell4 =OrderSend(Symbol (), OP_SELL, Lot, NormalizeDouble(Bid,Digits), Slippage, Bid+10*Point,0,NULL, STUPID, 0, Red); OP_=OP_SELL; } //------------------------------------------------------------------------ int start(){ if(begin==0) OpenSell(); string Symb=Symbol(); for(int i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { int Tip=OrderType(); if(OrderSymbol()!=Symb||Tip>1)continue; double SL=OrderStopLoss(); //------------------------------------------------------ while(true) { //--------------------------------------------------- bool Modify=false; switch(Tip) { case 0 : if (NormalizeDouble(SL,Digits) < NormalizeDouble(Bid-TS*Point,Digits)) { SL=Bid-20*Point; string Text="Buy "; Modify=true; } break; case 1 : if (NormalizeDouble(SL,Digits) > NormalizeDouble(Ask+TS*Point,Digits)|| NormalizeDouble(SL,Digits)==0) { SL=Ask+20*Point; Text="Sell "; Modify=true; } break; } if (Modify==false) break; //------------------------------------------------------------- double Price =OrderOpenPrice(); int Ticket =OrderTicket(); Alert ("Модификация ",Text,Ticket,". Ждём ответ.."); bool Ans1=OrderModify(Ticket,Price,SL,0,0); //-------------------------------------------------------------- if (Ans1==true) { Alert ("Ордер ",Text,Ticket," модифицирован:)"); break; } //--------------------------------------------------------------- break; } // Конец цикла мод. } // Конец анализа орд. } // Конец перебора орд. if(ClOrder?(STUPID)==0){ if(OP_==0) { OpenSell(); } else { OpenBuy(); } } begin=1; return(0); }