NewMartin_V1.1

Author: Сергей urdala Рашевский
Profit factor:
0.00
Orders Execution
Checks for the total of open ordersChecks for the total of closed ordersIt automatically opens orders when conditions are reachedIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategy
0 Views
0 Downloads
0 Favorites
NewMartin_V1.1
ÿþ//+------------------------------------------------------------------+

//|                                               NewMartin_V1.0.mq4 |

//|                                          !5@359 urdala  0H52A:89 |

//|                                                   urdala@mail.ru |

//+------------------------------------------------------------------+

#property copyright "!5@359 urdala  0H52A:89"

#property link      "urdala@mail.ru"

#property version   "1.00"

#property strict

extern double Lot    = 0.1; //1J5< ?5@2>3> >@45@0

extern double TP     = 1;   //"59:?@>D8B 2 % >B F5=K

extern double SL     = 1;   //!B>?;>AA 2 % >B F5=K

extern double KefLot = 2.0; //>MDD8F85=B C25;8G5=8O ;>B0 2 A;CG05 C1KB:0

extern int    MaxNom = 5;   //0:A8<0;L=0O 4;8==0 A5@88 >@45@>2

extern int    Shema  = 0;   //!E5<0 @01>BK



int i=0;

int LastProf = 0;

int Slippage = 1;

bool chk;

double Lots;

string com;

datetime LastTime,LastUpd;

string StrShema="";

//////////////////////////////////////////////////////////////////////

int OnInit()

  {

   LastTime = 0;

   LastUpd  = 0;

   for(i=1;i<=MaxNom;i++)

     {

      StrShema=StrShema+"-"+(string)CheckNom(i,Shema);

     }

   Print("!E5<0 @01>BK : ",StrShema);

   return(INIT_SUCCEEDED);

  }

//////////////////////////////////////////////////////////////////////

void OnDeinit(const int reason)

  {



  }

//////////////////////////////////////////////////////////////////////

void OnTick()

  {

//////////////////////////////////////////////////////////////////////

//?@>25@:0 =0 =0;8G85 >B:@KBKE >@45@>2

   int openord=OrdersTotal();

   if(openord>0){LastTime=Time[0];return;}

//////////////////////////////////////////////////////////////////////

//>?@545;O5< =0G0;> 10@0

   if(LastTime == Time[0])return;

   LastTime=Time[0];

//////////////////////////////////////////////////////////////////////

//0=0;878@C5< ?>A;54=89 >@45@ 2 8AB>@88

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

     {

      if(OrderProfit()>0)LastProf=1;

      else LastProf=-1;

     }

   else LastProf=0;

//////////////////////////////////////////////////////////////////////

//@0AAG8BK205< >1J5< 8 >B:@K205< >@45@

   int nom = 1;

   if(LastProf<0 && (int)OrderComment()<MaxNom)

     {

      int sh1 = StringFind(OrderComment(),"(");

      int sh2 = StringFind(OrderComment(),")");

      if(sh1>=0 && sh2>=0)

        {

         string stroka = StringSubstr(OrderComment(),sh1+1,sh2-sh1-1);

         nom = (int)stroka;

         if(nom < MaxNom)

           {

            Lots= NormalizeDouble(Lot*MathPow(KefLot,(int)nom),2);

            nom ++;

            com ="("+(string)nom+")";

           }

           else {Lots= Lot;com = "(1)";nom=1;}

        }

        else {Lots= Lot;com = "(1)";nom=1;}

     }

   else {Lots= Lot;com = "(1)";nom=1;}

   if(CheckNom(nom,Shema)==0)OpenOrder(Symbol(),OP_BUY,Lots,Ask,Ask-SL/100*Ask,Ask+TP/100*Ask,com,0);

   else OpenOrder(Symbol(),OP_SELL,Lots,Bid,Bid+SL/100*Bid,Bid-TP/100*Bid,com,0);

//////////////////////////////////////////////////////////////////////

  }

/////////////////////////////////////////////////////////////////////

/////////                 $C=:F88                   /////////////////

/////////////////////////////////////////////////////////////////////

int CheckNom(int nom,int shema)

  {

   int a = nom;

   int b = shema >> (a-1);

   int c = b & 1;

   return(c);

  }

//////////////////////////////////////////////////////////////////////

int OpenOrder(string symb,int cmd,double lot,double price,double stoploss,double takeprofit,string comf,int magic)

  {

   if(AccountFreeMarginCheck(Symbol(),cmd,lot)<=0)return(0);

   int err=0,f=0,ticket=0;

   color clr=CLR_NONE;

   while(f<10)

     {

      RefreshRates();

      if(cmd==0){price=MarketInfo(symb,MODE_ASK);clr=RoyalBlue;}

      if(cmd==1){price=MarketInfo(symb,MODE_BID);clr=Red;}

      ticket=OrderSend(symb,cmd,lot,NormalizeDouble(price,Digits),Slippage,0,0,comf,magic,0,clr);

      err=GetLastError();

      if(err==0) break;

      Print(WindowExpertName(),symb,"  ?@8 >B:@KB88 >@45@0.",err);

      f++;

      Sleep(1000);

     }

   if(ticket>0 && (takeprofit!=0 || stoploss!=0))

     {

      if(OrderSelect(ticket,SELECT_BY_TICKET))ModifyOrder(OrderTicket(),OrderOpenPrice(),stoploss,takeprofit);

     }

   return(ticket);

  }

/////////////////////////////////////////////////////////////////////////

int CloseOrder(int ticket,double lots)

  {

   int err=0,f=0;

   double price=0;

   if(!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))return(0);

   if(lots==0)lots=OrderLots();

   if(lots<MarketInfo(OrderSymbol(),MODE_MINLOT))lots=MarketInfo(OrderSymbol(),MODE_MINLOT);

   while(f<10)

     {

      RefreshRates();

      if(OrderType()==0)price=Bid;

      if(OrderType()==1)price=Ask;

      if(OrderType()>1){chk=OrderDelete(ticket);return(0);}

      chk = OrderClose(ticket,lots,NormalizeDouble(price,Digits),Slippage,Goldenrod);

      err = GetLastError();

      if(err==0) break;

      Print(WindowExpertName(),OrderSymbol(),"  ?@8 70:@KB88 >@45@0.",err);

      f++;

      Sleep(1000);

     }

   return(0);

  }

/////////////////////////////////////////////////////////////////////////

int ModifyOrder(int ticket,double price,double stoploss,double takeprofit)

  {

   int err,f=0;

   while(f<10)

     {

      RefreshRates();

      chk = OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),NormalizeDouble(takeprofit,Digits),0,CLR_NONE);

      err = GetLastError();

      if(err==0) break;

      Print(WindowExpertName(),OrderSymbol(),"  ?@8 <>48D8:0F88 >@45@0",err);

      Sleep(1000);

      f++;

     }

   return(0);

  }

//////////////////////////////////////////////////////////////////////////

Comments