Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
All_Stops
//+------------------------------------------------------------------+
//|           Ñêðèïò óñòàíàâëèâàåò èëè ïåðåíîñèò ñòîïû               |
//|               ïîä ìèíèìóì èëè íàä ìàêñèìóì áàðà                  |
//|                  íà êîòîðûé áðîøåí ñêðèïò                        |
//+------------------------------------------------------------------+
double StopProfit;
double OrdOp,OrdTP,OrdSL,OrdTyp,OrdProf;
int start()
  {
int Filtr = 1;
int Ticket;
int Spread = MarketInfo(Symbol(),MODE_SPREAD);
datetime time=WindowTimeOnDropped();
double stop;
int s;
//+------------------------------------------------------------------+
while(Time[s]!=time)s++;
//+------------------------------------------------------------------+
for(int i=0;i<OrdersTotal();i++)
{//+------------------------------------------------------------------+for
OrderSelect(i,SELECT_BY_POS);
if(Symbol()!=OrderSymbol())continue;
if(OrderType()>1)continue;
//+------------------------------------------------------------------+
if(OrderType()==0)stop=Low[s]-Point*Filtr;
if(OrderType()==1)stop=High[s]+Point*(Filtr+Spread);
//+------------------------------------------------------------------+
Ticket = OrderTicket();
OrdOp = OrderOpenPrice();
OrdTP = OrderTakeProfit();
OrdSL = OrderStopLoss();
OrdTyp = OrderType();
OrdProf = OrderProfit();
if(OrdSL==stop){risk();continue;}
if(OrderModify(Ticket,OrdOp,stop,OrdTP,0)){OrdSL=stop;risk();continue;}else int error=GetLastError();
 if(error==6){Alert("Íåò ñâÿçè");return;}
 if(error==132){Alert("Ðûíîê çàêðûò");return;}
 if(error==4051){Alert("Íóæíî ïåðåòàùèòü íà ãðàôèê");return;}
 if(error==130){Alert("Íåïðàâèëüíûå ñòîïû");return;} 
Alert("Îøèáêà:  ",error);
}//+------------------------------------------------------------------+for
Comment(StopProfit,"$   <Ïðè ñðàáàòûâàíèè ñòîïîâ>   ",NormalizeDouble(StopProfit/(AccountBalance()/100),2),"%");
//+------------------------------------------------------------------+
   return(0);
  }
//+--------------------------------------------------------------------+
//+--------------------------------------------------------------------+
void risk(){
double Pips;
int q;
if(Digits==2)q=100;else q=10000;
if(OrdTyp==0)Pips=MathAbs(OrdProf/((OrdOp-Bid)*q));else Pips=MathAbs(OrdProf/((OrdOp-Ask)*q));  //Ñòîèìîñòü ïóíêòà ïî îðäåðó
double prof=Pips*(MathAbs(OrdOp-OrdSL)*10000);
if((OrdTyp==0&&OrdSL<OrdOp)||(OrdTyp==1&&OrdSL>OrdOp)){prof=prof*(-1);StopProfit=StopProfit+prof;return;}
StopProfit=StopProfit+prof;
return;}

Comments