Pendulum 1_01





//+------------------------------------------------------------------+
//|                                                Pendulum 1_01.mq4 |
//|                                              Copyright © BFE2006 |
//|                                         http://BFE2006@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © BFE2006"
#property link      "http://BFE2006@yandex.ru"

//+------------------------------------------------------------------+
//|                       Ïàðàìåòðû ðàáîòû                           |
//| - Âûñòàâëÿåò äâà ñòàðòîâûõ îòëîæåííûõ îðäåðà íà ïîêóïêó è ïðîäàæó|
//|   (ðàçìåð ëîò ðàñ÷èòûâàåòñÿ àâòîìàòè÷åñêè èñõîäÿ èç ðàçìåðîâ     |
//|   äåïîçèòà è ìàêñèìàëüíîãî óâåëå÷åíèÿ "ïëå÷à"îò 0.01 äî 0.07ëîòà)|
//|   ñ ó÷åòîì ðàçìåðà 2-õ ïðåäèäóùèõ äíåâíûõ áàðîâ (ðàññòîÿíèå îò   |
//|   òåêóùåé öåíû, âåëè÷èíà òðàëëà è ïèïñîâêè)                      |
//|                                                                  |
//| - Òðàëëèò îòëîæåííûå îðäåðà âñëåä çà öåíîé äî ñðàáàòûâàèÿ        |
//|   îäíîãî èç íèõ                                                  |
//|                                                                  |
//| - Ïèïñóåò ñðàáîòàâøèé îðäåð, èçìåíèâ ïðîòèâîïîëîæíûé îðäåð íà    |
//|   óðîâåíü "ïëå÷à". Îòëþ÷àåò òðàëë, òàêèì îáðàçîì îáàçíà÷èâ       |
//|   ãðàíèöû òîðãîâëè                                               |
//|                                                                  |
//| - Ïðè ðàçâîðîòå öåíû è îòêðûòèè îðäåðà ñ "ïëå÷îì", â             |
//|   ïðîòèâîïîëîæíóþ ñòîðîíó ñòàâèò îòëîæåííûé îðäåð ñ áîëüøèì      |
//|   ïëå÷îì â îáðàòíóþ ñòîðîíó ïî öåíå ïåðâîãî îòêðûòîãî îðäåðà è   |
//|   ò.ä.. (ìàêñèìàëüíûé ëîò óâåëè÷èâàåòñÿ íà 2*128).               |
//|   Ñîçäàâàÿ ìàÿòíèê. Ïèïñîâêà îòêëþ÷àåòñÿ.                        |
//|                                                                  |
//| - Êîíòðîëèðóåò îáùóþ ïðèáûëü è óáûòîê (àâòîìàòè÷åñêè             |
//|   ðàñ÷èòûâàåòñÿ ïðîöåíò ïðèáûëè îò 2% äî 0.2%). Ïðè íàëè÷èè      |
//|   ïðèáûëè çàêðûâàåò âñå îðäåðà.                                  |
//+------------------------------------------------------------------+

// ============== Ïàðàìåòðû, íàñòðàèâàèìûå ïîëüçîâàòåëåì =============
// ---------------- Ïàðàìåòðû, îáùèå äëÿ âñåõ îðäåðîâ ----------------
extern string   t110="------ Ó îòêðûòûõ âðó÷íóþ MAGIC = 0 ------";
extern int      MAGIC=0;          //Ó îðäåðîâ îòêðûòûõ âðó÷íóþ MAGIC=0. 
double   Lot;                     //Ëîò äëÿ óñòàíîâêè îðäåðà.
double   ruka;                    //Ðóêà èçìåííåíèÿ ëîòà ïðè îòðèöàòåëüíîì ðàçâèòèè ñîáûòèé.
bool     Auto=true;               //Åñëè âêë., àâòîìàòè÷åñêè ðàññ÷èòûâàåòñÿ ðàçìåð ëîòà, ðóêè è 
                                  //ãëîáàëüíûõ ñòîïîâ.
bool     Ustan_BuyStop=true;      //Ìîæíî ëè ñòàâèü Áàé-Còîï åñëè â ðûíêå òàêîãî ó íàñ íåò.
bool     Ustan_SellStop=true;     //Ìîæíî ëè ñòàâèü Cåëë-Cñòîï åñëè â ðûíêå òàêîãî ó íàñ íåò.
int      st_Step;                 //Ðàññòîÿíèå â ïóíêòàõ îò óðîâíÿ òåêóùåé öåíû
                                  //äî óîðâíÿ óñòàíîâêè ñòîïîâîãî îðäåðà.
int      st_TrStop;               //Òðåéëèíã-Ñòîï ñòîïîâûõ îðäåðîâ. 
                                  //Åñëè = 0 òî òàðëà íåò è st_TrStep íå âàæåí.
int      st_TrStep;               //Øàã òðàëà ñòîïîâûõ îðäåðîâ.
int      PipsProfit;              //Ïðîôèò ïðè ïèïñîâêå ìîæíî ñòàâèòü 1, 2, 3, ...
int      Proskalz;                //Ïðîñêàëüçûâàíèå â ïóíêòàõ (íóæíî òîëüêî êîãäà PipsProfit>0).
double   pipsruka;                //Ïèïñîâêà äëÿ îðäåðîâ ñ ðóêîé.
bool     UseGlobalLevels=true;    //Âêë./Âûêë. îòñëåæèàíèÿ ãëîáàëüíûõ óðîâíåé ïðèáûëè/óáûòêà
                                  //åñëè UseGlobalLevels=false, òî çíà÷åíèò 
                                  //Global_TakeProfit è Global_StopLoss íå âàæíî.
double   Global_TakeProfit;       //Ãëîáàëüíûé Òåéê-Ïðîôèò (çàäà¸òñÿ â ïðîöåíòàõ).
double   Global_StopLoss;         //Ãëîáàëüíûé Ñòîï-Ëîññ (çàäà¸òñÿ â ïðîöåíòàõ).
// ---------- Ïðî÷èå ïåðåìåííûå --------------------------------------- 
 
double lot,sts,PNT,NewPrice,Price,Balans,Free,pips,glp,klv,prb,sred_profit;
double s_buy,s_sell,s_buystop,s_sellstop,s_buy_lot,s_buystop_lot,s_sell_lot,s_sellstop_lot;   //îòêðûòûå è îòëîæåííûå îðäåðà
string SMB,com1,com2,com3,com4,com5;
int    MinLevel;
bool   fm,b,s;
double prc2,prc1,prc08,prc06,prc04,prc02,l1,l2,raznost,t_raznost,L,H,sr;
double min_lot,lot_ruka,MRG,T,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,balanc1,balanc2,balanc3,balanc4,balanc5,balanc6,balanc7,balanc8,balanc9,balanc10;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//------------ Ïðîâåðÿåì âêë. ñîâåòíèêà ------------------------------
  if(!IsExpertEnabled())//åñëè ëîæü 
   {Alert("Îøèáêà! Íå íàæàòà êíîïêà *Ñîâåòíèêè*");}
   else 
   {Comment("Êàê òîëüêî öåíà èçìåíèòñÿ, Ñîâåòíèê íà÷í¸ò ðàáîòó.");}
   
//------------- Çàïîìèíàåì íà÷àëüíûå çíà÷åíèÿ ------------------------ 
  SMB=Symbol();                           //Ñèìâîë âàëþòíîé ïàðû
  PNT=MarketInfo(SMB,MODE_POINT);         //Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè. 
                                          //Äëÿ òåêóùåãî èíñòðóìåíòà õðàíèòñÿ â ïðåäîïðåäåëåííîé
                                          //ïåðåìåííîé Point.
  MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Ìèíèìàëüíî äîïóñòèìûé óðîâåíü
                                          //ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ
 
//--------------------------------------------------------------------
    return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {

  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   ObjectCreate("label_object1", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object1", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object1", OBJPROP_YDISTANCE, 17);
   ObjectSetText("label_object1", "Pendulum™  version 1_01",9, "Verdana", Red);
   
   ObjectCreate("label_object2", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object2", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object2", OBJPROP_YDISTANCE, 47);
   ObjectSetText("label_object2", StringConcatenate("0.01 Ëîòà:  ",(NormalizeDouble((balanc1),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object3", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object3", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object3", OBJPROP_YDISTANCE, 57);
   ObjectSetText("label_object3", StringConcatenate("0.02 Ëîòà:  ",(NormalizeDouble((balanc1*3),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object4", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object4", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object4", OBJPROP_YDISTANCE, 67);
   ObjectSetText("label_object4", StringConcatenate("0.03 Ëîòà:  ",(NormalizeDouble((balanc1*6),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object5", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object5", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object5", OBJPROP_YDISTANCE, 77);
   ObjectSetText("label_object5", StringConcatenate("0.04 Ëîòà:  ",(NormalizeDouble((balanc1*9),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object6", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object6", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object6", OBJPROP_YDISTANCE, 87);
   ObjectSetText("label_object6", StringConcatenate("0.05 Ëîòà:  ",(NormalizeDouble((balanc1*12),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object7", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object7", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object7", OBJPROP_YDISTANCE, 97);
   ObjectSetText("label_object7", StringConcatenate("0.06 Ëîòà:  ",(NormalizeDouble((balanc1*15),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object8", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object8", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object8", OBJPROP_YDISTANCE, 107);
   ObjectSetText("label_object8", StringConcatenate("0.07 Ëîòà:  ",(NormalizeDouble((balanc1*18),2))," ",AccountCurrency()),8, "Verdana", Orange);
   
   ObjectCreate("label_object11", OBJ_LABEL, 0, 0, 0); 
   ObjectSet("label_object11", OBJPROP_XDISTANCE, 600);  
   ObjectSet("label_object11", OBJPROP_YDISTANCE, 37);
   ObjectSetText("label_object11", StringConcatenate("Ðàçìåð ðóêè:  ",(ruka)),8, "Verdana", Orange);
   
   
//---- Ïðîâåðêà ðàáîòû â àâòîìàòè÷åñêîì ðåæèìå
if (Auto==true){Auto();}
//---- Îïðåäåëÿåì ïðîöåíò äëÿ ãëîáàëüíîãî ïðîôèòà
l1=lot;l2=Lot*ruka;
raznost=l2-l1;//íàõîäèì ðàçíîñòü ìåæäó ñòàðòîâûì ëîòîì è ëîòîì ñ ðóêîé
t_raznost=MarketInfo(SMB,MODE_TICKVALUE)*raznost;
prc2=(AccountBalance()/100)*2;     //2%
prc1=(AccountBalance()/100)*1;     //1%
prc08=(AccountBalance()/100)*0.8;  //0.8%
prc06=(AccountBalance()/100)*0.6;  //0.6%
prc04=(AccountBalance()/100)*0.4;  //0.4%
prc02=(AccountBalance()/100)*0.2;  //0.2%
if(t_raznost*10>=prc2)                            {Global_TakeProfit=2;}
if(t_raznost*10>=prc1 && t_raznost*10<prc2)       {Global_TakeProfit=1;}
if(t_raznost*10>=prc08 && t_raznost*10<prc1)      {Global_TakeProfit=0.8;}
if(t_raznost*10>=prc06 && t_raznost*10<prc08)     {Global_TakeProfit=0.6;}
if(t_raznost*10>=prc04 && t_raznost*10<prc06)     {Global_TakeProfit=0.4;}
if(t_raznost*10>=prc02 && t_raznost*10<prc04)     {Global_TakeProfit=0.2;}
if(t_raznost*10<=prc02)                           {Global_TakeProfit=0.2;}

for(int i=1;i<=2;i++)
  {
  L=L+iLow(Symbol(),PERIOD_D1,1);
  H=H+iHigh(Symbol(),PERIOD_D1,1);
  }
//----
sr=((H-L)/i)*10000;
sr=(NormalizeDouble((sr),0));
PipsProfit=sr/10;
PipsProfit=(NormalizeDouble((PipsProfit),0)); if(PipsProfit<1){PipsProfit=1;}
st_Step=(sr-PipsProfit-Proskalz);           if(st_Step<15){return(0);}
st_TrStop=(sr-PipsProfit-Proskalz);         if(st_TrStop<15){return(0);}
L=0;H=0;

//---- Çàïîìèíàåì íà÷àëüíûå çíà÷åíèÿ:
  lot=Lot;           //Ëîòà
  sts=st_TrStop;     //Òðàëëà ñòîïîâûõ îðäåðîâ
  Balans=AccountBalance();
  Free=AccountEquity();
  pips=PipsProfit;
  glp=Balans+(Balans/100*Global_TakeProfit);
  glp=(NormalizeDouble((glp),2));
  
  if(OrdersHistoryTotal()>0){chet();}
//--------------------------------------------------------------------
//----------------- Ñ÷èòàåì îòêðûòûå è îòëîæåííûå îðäåðà -------------
for (int q=OrdersTotal(); q>=0; q--)
  {
  if (OrderSelect(q,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC)continue;
      {          
      if(OrderType()==OP_BUY)      {s_buy++; s_buy_lot=s_buy_lot+OrderLots();}
      if(OrderType()==OP_BUYSTOP)  {s_buystop++; s_buystop_lot=s_buystop_lot+OrderLots();}
      if(OrderType()==OP_SELL)     {s_sell++; s_sell_lot=s_sell_lot+OrderLots();}
      if(OrderType()==OP_SELLSTOP) {s_sellstop++;s_sellstop_lot=s_sellstop_lot+OrderLots();}
      }
    }
  }
 
//------- Ïðîâåðÿåì íåîáõîäèìîñòü âûñòàâëåíèÿ ñòàðòîâûõ îðäåðîâ ------
if (s_buy+s_sell==0) {ustorder();}

//------- Ïðîâåðÿåì íåîáõîäèìîñòü òðàëëà ñòàðòîâûõ îðäåðîâ -----------
if (s_buy+s_sell>0){st_TrStop=0;com1="Òðàëë ñòîïîâûõ îðäåðîâ  - âûêë. (";} //Åñëè åñòü îòêðûòûé îðäåð âûêë. òðàëë ñòîïîâûõ
if(st_TrStop>0){tr_stop();com1="Òðàëë ñòîïîâûõ îðäåðîâ  - âêë. (";}//Ïåðåõîäèì ê òðàëëó

//------------ Ïðîâåðÿåì íåîáõîäèìîñòü óâåëå÷åíèÿ ïëå÷à --------------
//- 1
if (s_buy+s_sell==1){plecho1();}
//- 2
if (s_buy+s_sell==2){plecho2();}
//- 3
if (s_buy+s_sell==3){plecho3();}
//- 4
if (s_buy+s_sell==4){plecho4();}
//- 5
if (s_buy+s_sell==5){plecho5();}
//- 6
if (s_buy+s_sell==6){plecho6();}
//- 7
if (s_buy+s_sell==7){plecho7();}
//- 8
if (s_buy+s_sell==8){plecho8();}
//- 9
//if (s_buy+s_sell==9){plecho9();}
//- 10
//if (s_buy+s_sell==10){plecho10();}

//--- Åñëè åñòü íåîáõîäèìîñòü, êîë-âî êîëåáàíèé ìàÿòíèêà ìîæíî óâåëè÷èòü

//--------------- Ïðîâåðÿåì âêë/âûêë ïèïñîâêè ------------------------
if (s_buy+s_sell>1 && UseGlobalLevels==true){PipsProfit=0;com2="Ïèïñîâêà  - âûêë. (";}
if (s_buy+s_sell>1 && UseGlobalLevels==false){pips();com2="Ïèïñîâêà  - âêë. (";}
if (s_buy+s_sell==1){pips();com2="Ïèïñîâêà  - âêë. (";}
if (s_buy+s_sell==0){com2="Ïèïñîâêà  - âêë. (";}
if (PipsProfit==0 || PipsProfit>4)com3=" ïóíêòîâ";
if (PipsProfit==1)com3=" ïóíêò";
if (PipsProfit>2 && PipsProfit<5)com3=" ïóíêòa";

//--------------- Ïðîâåðÿåì ãëîáàëüíûå óðîâíè ------------------------
if (s_buy+s_sell>1 && s_buy+s_sell<11   && UseGlobalLevels==true && (Free-Balans)>=(Balans/100*Global_TakeProfit)){glob_profit();}
if (s_buy+s_sell==11){glob_stop();}

//----------------- Âûâîäèì èíôîðìàöèþ -------------------------------
if(Lot>0)
{  
Comment("Îòêðûòûõ îðäåðîâ äëÿ ",SMB,":","\n",
        "buy  - ",s_buy," (",s_buy_lot,")","   sell  - ",s_sell," (",s_sell_lot,")","\n",
        "buystop  - ",s_buystop," (",s_buystop_lot,")","  sellstop  - ",s_sellstop," (",s_sellstop_lot,")","\n",
        com1,st_TrStop,")","\n",com2,PipsProfit,com3,")","\n",
        "--- Ãëîáàëüíûé ïðîôèò ---","\n",glp," ",AccountCurrency()," (",Global_TakeProfit," %)","\n",
        "Êîë-âî ñäåëîê - ",klv,"\n","Ïðèáûëü - ",prb," ",AccountCurrency(),"\n",
        "Ñðåäíÿÿ ïðèáûëü - ",sred_profit," ",AccountCurrency());
}
if(Lot==0)
{
balanc1=(NormalizeDouble((balanc1),2));
Comment(com4,"\n",com5,"\n","Ìèíèìóì - ",balanc1," ",AccountCurrency());
}
        
//----------------- Îáíóëÿåì ñ÷åò÷èêè --------------------------------

s_buy=0;s_buystop=0;s_sell=0;s_sellstop=0;s_buy_lot=0;s_buystop_lot=0;s_sell_lot=0;s_sellstop_lot=0;
st_TrStop=sts;Lot=lot;PipsProfit=pips;sred_profit=0;
sred_profit=prb/klv;
sred_profit=(NormalizeDouble((sred_profit),2));
klv=0;prb=0;       
   return(0);
   
  }
//====================================================================
//----------------- Ñòàâèì ñòàðòîâûå îòëîæåííûå îðäåðà ---------------
void ustorder()
{
  if(s_sellstop==0 && st_Step>=MinLevel)
   {
   NewPrice=Bid-st_Step*Point;
   fm=OrderSend(SMB,OP_SELLSTOP,Lot,NewPrice,3,0,0,NULL,MAGIC,0,CLR_NONE);
   }
  if(s_buystop==0 && st_Step>=MinLevel)
   {
   NewPrice=Ask+st_Step*Point;
   fm=OrderSend(SMB,OP_BUYSTOP,Lot,NewPrice,3,0,0,NULL,MAGIC,0,CLR_NONE);
   }
}
//----------------- Òðàëëèì ñòîïîâûé îðäåð ---------------------------
void tr_stop()
{
  for(int w=OrdersTotal();w>=0;w--)
    {
    if (OrderSelect(w,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderType()==OP_BUYSTOP && OrderOpenPrice()>Ask+(st_TrStop+st_TrStep)*Point)
        {NewPrice=Ask+st_TrStop*Point;fm=OrderModify(OrderTicket(),NewPrice,0,0,0,CLR_NONE);}
      if(OrderType()==OP_SELLSTOP && OrderOpenPrice()<Bid-(st_TrStop+st_TrStep)*Point)
        {NewPrice=Bid-st_TrStop*Point;fm=OrderModify(OrderTicket(),NewPrice,0,0,0,CLR_NONE);}
      }
    }
}
//---------------------------- Ïèïñóåì -------------------------------
void pips()
{
for(int e=OrdersTotal();e>=0;e--)
  {
  if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if(OrderType()==OP_BUY && OrderOpenPrice()<Bid-(PipsProfit+Proskalz)*Point)
      {OrderClose(OrderTicket(),OrderLots(),Bid,3);zachistka();}
    if(OrderType()==OP_SELL && OrderOpenPrice()>Ask+(PipsProfit+Proskalz)*Point)
      {OrderClose(OrderTicket(),OrderLots(),Bid,3);zachistka();}
    }
  }
}
//------------------------ Óáèðàåì ëèøüíèå îðäåðà --------------------
void zachistka()
{
for(int e=OrdersTotal();e>=0;e--)
  {
  if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
    {
    if (OrderLots()>lot){OrderDelete(OrderTicket());}
    }
  }
}
//------------------ Ðàáîòà ñ ãëîáàëüíûìè óðîâíÿìè -------------------
//====================================================================
void glob_profit()
  {
  for (int i=OrdersTotal();i>=0; i--)
    {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderType()==OP_BUY){OrderClose(OrderTicket(),OrderLots(),Bid,3);}
      if(OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),Ask,3);}
      }
    }
    zachistka();
  }
//====================================================================
void glob_stop()
  {
  for (int i=OrdersTotal();i>=0; i--)
    {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
     {
      if(OrderType()==OP_BUY) {OrderClose(OrderTicket(),OrderLots(),Bid,3);}
      if(OrderType()==OP_SELL){OrderClose(OrderTicket(),OrderLots(),Ask,3);}
     }
      
    }
    zachistka();
  }

//-------------------------- Ïëå÷î õ1 --------------------------------
void plecho1()
{//Îïðåäåëÿåì â êàêóþ ñòîðîíó óâåëè÷èâàòü
  for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if (OrderType()==OP_BUYSTOP && OrderLots()<lot*ruka)//Îïðåäåëÿåì íàïðàâëåíèå è öåíó ïëå÷à
        {Price=OrderOpenPrice();OrderDelete(OrderTicket());Lot=lot*ruka;
        fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
      if (OrderType()==OP_SELLSTOP && OrderLots()<lot*ruka)//Îïðåäåëÿåì íàïðàâëåíèå è öåíó ïëå÷à
        {Price=OrderOpenPrice();OrderDelete(OrderTicket());Lot=lot*ruka;
        fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
    }
}
//-------------------------- Ïëå÷î õ2 --------------------------------
void plecho2()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*2 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*2 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*2;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*2;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ3 --------------------------------
void plecho3()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*4 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*4 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot*ruka && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*4;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot*ruka && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*4;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ4 --------------------------------
void plecho4()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*8 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*8 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot*ruka*2 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*8;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot*ruka*2 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*8;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ5 --------------------------------
void plecho5()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*16 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*16 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot*ruka*4 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*16;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot*ruka*4 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*16;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ6 --------------------------------
void plecho6()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*32 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*32 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot*ruka*8 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*32;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot*ruka*8 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*32;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ7 --------------------------------
void plecho7()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*64 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*64 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot*ruka*16 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*64;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot*ruka*16 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*64;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ8 --------------------------------
void plecho8()
{
    for (int e=OrdersTotal();e>=0;e--)
    {
    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
      {
      if(OrderLots()==lot*ruka*128 && OrderType()==OP_BUYSTOP){return(0);}
      if(OrderLots()==lot*ruka*128 && OrderType()==OP_SELLSTOP){return(0);}
      if(OrderLots()==lot*ruka*32 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*128;
      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      if(OrderLots()==lot*ruka*32 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*128;
      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
      }
    }
}
//-------------------------- Ïëå÷î õ9 --------------------------------
//void plecho9()
//{
//    for (int e=OrdersTotal();e>=0;e--)
//    {
//    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
//      {
//      if(OrderLots()==lot*ruka*512 && OrderType()==OP_BUYSTOP){return(0);}
//      if(OrderLots()==lot*ruka*512 && OrderType()==OP_SELLSTOP){return(0);}
//      if(OrderLots()==lot*ruka*64 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*512;
//      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
//      if(OrderLots()==lot*ruka*64 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*512;
//      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
//      }
//    }
//}
//-------------------------- Ïëå÷î õ10 -------------------------------
//void plecho10()
//{
//    for (int e=OrdersTotal();e>=0;e--)
//    {
//    if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES)==true)
//      {
//      if(OrderLots()==lot*ruka*1024 && OrderType()==OP_BUYSTOP){return(0);}
//      if(OrderLots()==lot*ruka*1024 && OrderType()==OP_SELLSTOP){return(0);}
//      if(OrderLots()==lot*ruka*128 && OrderType()==OP_BUY){Price=OrderOpenPrice();Lot=lot*ruka*1024;
//      fm=OrderSend(SMB,OP_BUYSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
//      if(OrderLots()==lot*ruka*128 && OrderType()==OP_SELL){Price=OrderOpenPrice();Lot=lot*ruka*1024;
//      fm=OrderSend(SMB,OP_SELLSTOP,Lot,Price,3,0,0,NULL,MAGIC,0,CLR_NONE);}
//      }
//    }
//}
//-------------------------- Ñ÷åò÷èê ---------------------------------
void chet()
{
for (int r=0; r<=OrdersHistoryTotal(); r++)
   {
   if(OrderSelect(r,SELECT_BY_POS,MODE_HISTORY)==true) 
    if(OrderClosePrice()>0)
     prb=prb+OrderProfit()+OrderSwap();
    if(OrderClosePrice()>0 && (OrderProfit()+OrderSwap())>0)klv=klv+1;
    if(OrderClosePrice()>0 && (OrderProfit()+OrderSwap())<0)klv=klv+1;
   } 
prb=(NormalizeDouble((prb),2));
}
//------------------- Ðàñ÷åò ëîòà è ðóêè -----------------------------
//--------------------------------------------------------------------
void Auto()
{
 min_lot=MarketInfo(SMB,MODE_MINLOT);
 //----- 
 ruka=2;
 lot_ruka=min_lot*ruka*128;
 MRG=MarketInfo(SMB,MODE_MARGINREQUIRED)*lot_ruka;
 t1=MarketInfo(SMB,MODE_TICKVALUE)*min_lot;
 t2=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka;
 t3=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*2;
 t4=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*4;
 t5=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*8;
 t6=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*16;
 t7=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*32;
 t8=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*64;
 t9=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*128;
// t10=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*512;
// t11=MarketInfo(SMB,MODE_TICKVALUE)*min_lot*ruka*1024;
 T=t1-t2+t3-t4+t5-t6+t7-t8+t9-t10+t11;
 balanc1=(MRG+T*70)/3;
 if(AccountBalance()<balanc1){com4="ÒÎÐÃÎÂÀÒÜ ÍÅ ÐÅÊÎÌÅÍÄÓÅÒÑß";com5="(ìàëî äåíåã íà äåïîçèòå äëÿ áåçîïàñíîé òîðãîâëè)";Lot=0;}
 if(AccountBalance()>balanc1)    {Lot=min_lot;}
 if(AccountBalance()>balanc1*3)  {Lot=min_lot*2;}
 if(AccountBalance()>balanc1*6)  {Lot=min_lot*3;}
 if(AccountBalance()>balanc1*9)  {Lot=min_lot*4;}
 if(AccountBalance()>balanc1*12) {Lot=min_lot*5;}
 if(AccountBalance()>balanc1*15) {Lot=min_lot*6;}
 if(AccountBalance()>balanc1*18) {Lot=min_lot*7;}
}
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:
Checks for the total of closed orders
Checks for the total of open orders
It automatically opens orders when conditions are reached
It can change open orders parameters, due to possible stepping strategy
It Closes Orders by itself

Other Features:

It issuies visual alerts to the screen

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.10 Total Net Profit:-218.83

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.00 Total Net Profit:430.62

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.00 Total Net Profit:0.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:0.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.00 Total Net Profit:626.26

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:58.62

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.98 Total Net Profit:-54.28

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.00 Total Net Profit:47.95

Request Backtest for Pendulum 1_01


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: