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

newm2h.mq4

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

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

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

Краткий обзор

О программе

Торговый советник для платформы MetaTrader 4, реализующий сеточную стратегию с управлением позициями. При инициализации открываются параллельно ордера на покупку и продажу с заданными параметрами. Советник отслеживает движение цены относительно рассчитанных уровней и при их достижении закрывает встречные позиции, открывая новые с увеличенным объёмом. Имеет механизм фиксации позиций, активируемый после определённого количества шагов.

Настройки программы

НастройкаОписание
????????? ?????? ????. (Lot) Лот — Базовый размер лота для открытия новых позиций.
????????? ?????? ?????. (Grid) Сетка — Расстояние в пунктах между уровнями открытия ордеров.
LockStep Шаг блокировки — Параметр, определяющий момент активации механизма фиксации позиций.
Получить полный код

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

#include <stdlib.mqh>

extern double Lot      = 0.1; // ????????? ?????? ????.
extern int    Grid     = 30; // ????????? ?????? ?????.
extern int    LockStep = 5;
       int    Step, State;
       double Spread;
       int    magic    = 9034309;
       int    i,j;
       double CurrentPrice, TargetUp, TargetDown;
       double LotSeq[8]={1,1,2,4,8,16,32,64,128}; 
       int    LastLock=0;

int Init()

{
  Step=0;
  Spread=MarketInfo(Symbol(),MODE_SPREAD);
  RefreshRates();
  CurrentPrice=Bid;
  OpenOrder(OP_BUY,Ask,Lot,Ask-400*Point,Bid+Grid*Point);
  OpenOrder(OP_SELL,Bid,Lot,Bid+400*Point,Ask-Grid*Point);
  CalcTarget();
  return(0);
}

int OpenOrder(int Cmd, double Price, double Lots, double SL, double TP)

{
  int err;
  int ticket=-1;
  while (ticket < 0) 
    {
     RefreshRates();
     ticket=OrderSend(Symbol(), Cmd, Lots, Price, 3, SL, TP, "", magic, 0, CLR_NONE);
     err=GetLastError();
     if ((err == 130) || (err == 4107)) {return(0);}
     if (ticket == -1) 
        {
         Comment("Error=", err, "   ", ErrorDescription(err));
         Sleep(6000);
        }
     else {Comment("                                             ");}
    }
  Sleep(1000);
  return(ticket);
}

int CalcTarget()

{  
  TargetUp=CurrentPrice+Grid*Point+Spread;
  TargetDown=CurrentPrice-Grid*Point;
  return(0);
}

int DoDown()

{
  j=OrdersTotal();
  for (i=0;i<j;i++)
    {
     RefreshRates();
     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     if ((OrderType()==OP_SELL)&&(OrderTicket()>LastLock)) {OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);}
    }
  if (State==1)
    {
     Step=1;
     RefreshRates();
     CurrentPrice=Bid;
     CalcTarget();
     OpenOrder(OP_BUY,Ask,LotSeq[1],Bid-400*Point,Bid+Grid*Point);
     OpenOrder(OP_SELL,Bid,LotSeq[1],Ask+400*Point,Ask-Grid*Point);
    }
  if (State==-1)
    {
     if (Step==LockStep)
       {
        Step=0;
        RefreshRates();
        CurrentPrice=Bid;
        CalcTarget();
        LastLock=OpenOrder(OP_SELL,Bid,LotSeq[LockStep+1],Bid+400*Point,Ask-Grid*Point);
        OpenOrder(OP_BUY,Ask,LotSeq[0],Bid-400*Point,Bid+Grid*Point);
        OpenOrder(OP_SELL,Bid,LotSeq[0],Ask+400*Point,Ask-Grid*Point);
       }
     if (Step<LockStep)
       {
        Step++;
        RefreshRates();
        CurrentPrice=Bid;
        CalcTarget();
        OpenOrder(OP_BUY,Ask,LotSeq[Step],Bid-400*Point,Bid+Grid*Point);
        OpenOrder(OP_SELL,Bid,LotSeq[1],Ask+400*Point,Ask-Grid*Point);
       }
    }
  State=-1;
  return(0);
}

int DoUp()

{
  j=OrdersTotal();
  for (i=0;i<j;i++)
    {
     RefreshRates();
     OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
     if ((OrderType()==OP_BUY)&&(OrderTicket()>LastLock)) {OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);}
    }
  if (State==-1)
    {
     Step=1;
     RefreshRates();
     CurrentPrice=Bid;
     CalcTarget();
     OpenOrder(OP_BUY,Ask,LotSeq[1],Bid-400*Point,Bid+Grid*Point);
     OpenOrder(OP_SELL,Bid,LotSeq[1],Ask+400*Point,Ask-Grid*Point);
    }
  if (State==1)
    {
     if (Step==LockStep)
       {
        Step=0;
        RefreshRates();
        CurrentPrice=Bid;
        CalcTarget();
        LastLock=OpenOrder(OP_BUY,Ask,LotSeq[LockStep+1],Bid-400*Point,Bid-Grid*Point);
        OpenOrder(OP_BUY,Ask,LotSeq[0],Bid-400*Point,Bid+Grid*Point);
        OpenOrder(OP_SELL,Bid,LotSeq[0],Ask+400*Point,Ask-Grid*Point);
       }
     if (Step<LockStep)
       {
        Step++;
        RefreshRates();
        CurrentPrice=Bid;
        CalcTarget();
        OpenOrder(OP_BUY,Ask,LotSeq[1],Ask-400*Point,Bid+Grid*Point);
        OpenOrder(OP_SELL,Bid,LotSeq[Step],Bid+400*Point,Ask-Grid*Point);
       }
    }
  State=1;
  return(0);
}

int start()

{
      // код доступен только после оплаты
   }

/*

#include <stdlib.mqh>

extern double Lot     = 1; // ????????? ?????? ????.
extern int    Grid    = 30; // ????????? ?????? ?????.

   double Spred;
   double SellWorkPrice;
   double BuyWorkPrice;
   double BuyStopPrice;
   double BuyStopProfit;
   double SellLimitPrice;
   double SellLimitProfit;
   double BuyLimitPrice;
   double BuyLimitProfit;
   double SellStopPrice;
   double SellStopProfit;
   int    StateOld, StateCur;
   int    Magic=120976;
   double CurrentPrice, OldPrice;
   int    Step;
   int    LastBuy, LastSell, ProfitOrder;
   double LotSeq[6] = {2,2,4.5,11.5,28.5,71}; // For 30

   int    BuyStopCnt, BuyLimitCnt, SellStopCnt, SellLimitCnt;
   bool   TradeDone;

int Init() { 

    Step = 1;
    StateCur = 0;
    StateOld=StateCur;
    Spred = MarketInfo(Symbol(),MODE_SPREAD)*Point;
    RefreshRates();
    CurrentPrice = Bid;
    OpenOrder (Symbol(), OP_SELL, Lot, NormalizeDouble(Bid,4), 3, Bid+400*Point, Ask-Grid*Point, "", Magic, 0, Red);
    OpenOrder (Symbol(), OP_BUY, Lot, NormalizeDouble(Ask,4), 3, Ask-400*Point, Bid+Grid*Point, "", Magic, 0, Green);
    CalcAllPrice (CurrentPrice);
    SearchLastSellBuy();
    TradeDone=false;
}

int OpenOrder(string Sym, int Cmd, double Vol, double Prc, int Slp, double Stl, double Tpt, string Com, int Mag, datetime Exp, color Clr) {
  int err;

  int ticket=-1;
  while (ticket < 0) 
    {
     RefreshRates();
     ticket=OrderSend(Sym, Cmd, Vol, Prc, Slp, Stl, Tpt, Com, Mag, Exp, Clr);
     err=GetLastError();
     if ((err == 130) || (err == 4107))
        {

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

double LotSize(int tStep) {

  double rez = Lot*LotSeq[tStep];

  return(rez);
}

int SetOrders (double L1, double L2, double L3, double L4){

  if (L1 != 0) {OpenOrder (Symbol(), OP_BUYSTOP, L1, BuyStopPrice, 3, BuyStopPrice-400*Point, BuyStopProfit, "", Magic, 0, Green);}
  if (L3 != 0) {OpenOrder 

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

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

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

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

Стоимость полного кода
812,70₽ ≈ $9.93