← К каталогу
Исходный код · ID 312

ms_2.mq4

Похожие материалы по тегам

the gold reaper v4.1 mt5.mq5MetaTrader 4 · 1 общих теговquantum queen x 4.3 (1).mq5MetaTrader 5 · 1 общих теговlizard_1.85.mq5MetaTrader 4 · 1 общих теговoverlaychart.mq4MetaTrader 4 · 1 общих теговmarket crusher ea guidlines.txtMQL · 1 общих теговrobot_wti ea.mq4MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Получить полный код

Поиск по коду файла

#include <stdlib.mqh>
#include <stderror.mqh>

extern double grid             = 20;
       double gridstep         = 6;
       double multk[25]        = {1,1,1,2,3,4,5};
       int    limit            = 5;
       double lotseq[25]       = {1,1,2.8,6,6,12,28.8};
       double stepseq[25];
       double gridseqbuy[25];
       double gridseqsell[25];
       double spred;
       int    lastlock, step;
       int    stateold, statecur;
       int    sleeppage        = 3;
       int    magic            = 120976;
       double currentprice, oldprice;
       bool   setall;
       int    lastbuy, lastsell, profitorder;

int Initialization() { 

    statecur = 0;
    stateold=statecur;
    spred=MarketInfo(Symbol(), MODE_SPREAD)*Point;
    RefreshRates();
    currentprice = Bid;
    OpenOrder (OP_SELL, LotSize(0), Bid, Bid+400*Point, Ask-grid*Point, "", magic, Red);
    OpenOrder (OP_BUY, LotSize(0), Ask, Ask-400*Point, Bid+grid*Point, "", magic, Green);
    step = 1;
    for(int i=0;i<=gridstep;i++)
      {
       stepseq[i]=multk[i]*grid*Point;
      }
    setall = SetOrders (LotSize(1), LotSize(1), LotSize(1), LotSize(1));
    SearchLastSellBuy();
    lastlock=0;
  return(0);
}

bool First(){

  int ordcnt=0;
  for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
       if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock) && ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))) {ordcnt++;}
      }
  if (ordcnt>0) {return(false);}
  else {return(true);}
}

double LotSize(int tstep) {

  for (int i=0;i<=limit;i++)
    double alots=lotseq[i]+alots;
  alots++;

  double rez = 1*lotseq[tstep];
  if (rez < 0.1) {rez = 0.1;}

  return(rez);
}

bool AllPresent() {

     int buycnt = 0;
     int sellcnt = 0;
     int buystopcnt = 0;
     int buylimitcnt = 0;
     int sellstopcnt = 0;
     int selllimitcnt = 0;
     for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
         {
          OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
          if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock))
             {

              switch (OrderType())
                  {
                   case 0: buycnt++;
                           break;
                   case 1: sellcnt++;
                           break;
                   case 2: buylimitcnt++;
                           break;
                   case 3: selllimitcnt++;
                           break;
                   case 4: buystopcnt++;
                           break;
                   case 5: sellstopcnt++;
                           break;
                  }
             }
         }

     if (buycnt > sellcnt) {step = buycnt-1;} else {step = sellcnt-1;}
     if ((buystopcnt==0) || (buylimitcnt==0) || (sellstopcnt==0) || (selllimitcnt==0)) {return(false);}
     else {return(true);}
} 

int SearchLastSellBuy(){

  lastbuy=0;
  lastsell=0;
  for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
       if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock) && (OrderType() == OP_BUY))
          {
           if (OrderTicket()>lastbuy) {lastbuy=OrderTicket();}
          }
       if ((OrderSymbol() == Symbol()) && (OrderTicket() > lastlock) && (OrderType() == OP_SELL))
          {
           if (OrderTicket()>lastsell) {lastsell=OrderTicket();}
          }   
      }
  return(0);
}

bool OpenOrder(int cmd, double vol, double prc, double stl, double tpt, string com, int mag, color clr) {
  int err, max;

  prc=NormalizeDouble(prc,Digits);
  stl=NormalizeDouble(stl,Digits);
  tpt=NormalizeDouble(tpt,Digits);
  vol=NormalizeDouble(vol,1);
  int ticket = -1;
  max = 100;
  while ((ticket < 0) && (max != 0)) 
    {
     RefreshRates();
     ticket=OrderSend(Symbol(), cmd, vol, prc, sleeppage, stl, tpt, com, mag, 0, clr);

     err=GetLastError();
     if (ticket == -1) 
        {
         Comment("Error=", err, "   ", ErrorDescription(err));
         Sleep(6000);
        }
     else
        {Comment("                                             ");}
     max--;
    }
  Sleep(1000);
  if (max != 0) {return(true);}
  else {return(false);}
}

int TakeProfit(){

   profitorder=0;
   for (int cnt=HistoryTotal()-1;cnt>=0;cnt--)
       {
        OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
        if ((OrderType() == OP_SELL) || (OrderType() == OP_BUY))
           if (OrderTicket() > profitorder)
              if (OrderClosePrice() == OrderTakeProfit()) {profitorder = OrderTicket();}
       }
   return(profitorder);
}

int LockSearch(){

  lastlock = 0;
  for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
       if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == 1001001) && (OrderType() == OP_BUY))
          {
           if (OrderTicket()>lastlock) {lastlock=OrderTicket();}
          }
       if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == 1001001) && (OrderType() == OP_SELL))
          {
           if (OrderTicket()>lastlock) {lastlock=OrderTicket();}
          }   
      }
  return(0);
}

bool SetOrders(double bs, double sl, double ss, double bl){

  bool rez, temp;

  rez = true;
  if (statecur<=0)
    {
     if (bs != 0)
       {
        temp = OpenOrder (OP_BUYSTOP, bs, currentprice+stepseq[step+1]+spred, currentprice+stepseq[step+1]+spred-400*Point, currentprice+stepseq[step+1]+stepseq[step+2], "", magic, Green);
        if (!temp) {rez = false;}
       }
     if (sl != 0)
       {
        temp = OpenOrder (OP_SELLLIMIT, sl, currentprice+stepseq[step+1], currentprice+stepseq[step+1]+400*Point, currentprice+spred, "", magic, Green);
        if (!temp) {rez = false;}
       }
     if (ss != 0)
       {

        temp = OpenOrder (OP_SELLSTOP, ss, currentprice-stepseq[step], currentprice-stepseq[step]+400*Point, currentprice-stepseq[step]-stepseq[1]+spred, "", magic, Green);
        if (!temp) {rez = false;}
       }
     if (ss != 0)
       {
        temp = OpenOrder (OP_BUYLIMIT, bl, currentprice-stepseq[step]+spred, currentprice-stepseq[step]+spred-400*Point, currentprice-stepseq[step]+stepseq[1], "", magic, Green);
        if (!temp) {rez = false;}
       }
     return(rez);  
    }
  if (statecur==1)
        {
     if (bs != 0)
       {

        temp = OpenOrder (OP_BUYSTOP, bs, currentprice+stepseq[s

Показано первые 50% кода (символов: 7866)

Что вы получите после оплаты

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
787₽