mishelbb
mishelbb

 
Уровень 12

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2151



РЕКОМЕНДУЮ



Советник SSL_sBar

Андрей здравствуйте, хочу попробовать перевести на автомат то, что делается руками, прошу Вашей помощи в реализации. Суть в следующем: Я работаю на ТФ 15(но это не особо важно при данной схеме), инд. ЕМА и SSL_sBar_All D1, H4 и М15(в подвале (прилагаю)). В настройки вынести ЕМА(с возможностью менять метод, период и преминение к цене...) и растояние цены на Delta от неё, SL, TP, Trall(с величиной прибыли в валюте, когда он включается, не %, не в пипсах с пуннктами, а именно $ 10.., 25… и т.д.) и Shag trall(когда поддтягиваем, опять же, в $), ограничение по спреду, обязательно, если не усложнит время работы пожалуйста добавьте, и бар на котором начинаем работу, тоже обязательно. Так теперь по самой работе: я прилагаю скрин, по нему должно быть всё понятно, но ещё продублирую словами. Пример на ПРОДАЖУ SELL: цена находится ниже ЕМА(РАБОТАЕМ ТОЛЬКО НА ПРОДАЖУ!!!) на расстояние DELTA от ЕМА, подвальные индикаторы D1 и H4 одного цвета(на скрине розовый, они контролирующие), ждём сигнала от подвального М15(ВАЖНО!!! ИМЕННО, ЖДЁМ МОМЕНТА СМЕНЫ ЦВЕТА ИНДИКАТОРА М15, если робот приступает к работе когда уже все три подвала одного цвета, то в сделку не входим, ЖДЁМ СВЕЖЕГО СИГНАЛА И ТОЛЬКО ТОГДА ВХОДИМ!!!(все три подвала одного цвета...). Входим в сделку при соотвествии всех выше перечисленных условий на УКАЗАННОМ БАРЕ после появления согнала(смене цвета от М15). Так, это по входу в рынок.., теперь по закрытию: закрываем ордера либо по SL, TP, (Trall само собой), либо ЕСЛИ ИЗМЕНИЛСЯ ЦВЕТ ПОДВАЛА М15!!!(да любого из подвалов, это я так, на всякий случай, Н4 никак раньше М15 не поменяется, не говоря про D1). Так же, само собой, должен быть только один ордер в работе, на одном инструменте. НЕ ВХОДИМ В РЫНОК ЕСЛИ: спред превышает указанный в настройках, Delta(ЕМА/ЦЕНА) меньше указанной, подвалы не одного цвета и(или если одного) нет всежего сигнала(смены цвета) от М15. Вот вроде пока всё, не надо пока никаких мартинов, в ручную без этого обхожусь, посмотрим что советник будет выдавать… Вход на ПОКУПКУ BUY — ЗЕРКАЛЕН ПРОДАЖИ SELL. Надеюсь на Вашу помощ и в любом случе признателен за Ваш НУЖНЫЙ ТРУД!!! SSL_sBar.png (90 Kb) SSL_sBar_15.mq4 (10 Kb) SSL_sBar_240.mq4 (10 Kb) SSL_sBar_1440.mq4 (10 Kb)
  • 0
  • Просмотров: 2781
  • 6 декабря 2021, 09:16
  • mishelbb
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доработать советник
Следующая запись в группе  
Индикатор "Morning_Fibo".
05 декабря 2021
06 декабря 2021

Брокер для ваших роботов, 15 лет на рынке

Комментарии (26)

+
0
...
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 6 декабря 2021, 09:18
+
0
P.S. Прошу прощения, не правильно сформулировал в ТЗ, если цвет поменялся у любого из подвальных индикаторов закрываем ордер в любом случае…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 6 декабря 2021, 14:51
+
0
на 13-е
avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 6 декабря 2021, 17:31
+
0
… ага, добро.
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 6 декабря 2021, 17:45
+
0
когда сделал открытие закрытие на одном тф, притормаживало но работало. добавил открытие по другим тф сразу все повисло:


//+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал
extern int Delta         = 300;      // расстояние от EМА
extern int MAPeriod      = 100;      // период ЕМА

extern int Slip          = 30;       // реквот
extern int Shift         = 2;        // бар индикатора
extern int CloseSig      = 1;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern string IndName    = "SSL";
extern int     Lb           = 3;
extern int     sslMA_method = 0;
extern int     SSL_BarLevel = 50;    //BarLevel 10-90

extern int     TimeFrame    =  15;
extern string  TimeFrames   = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string  MA_method_   = "SMA0 EMA1 SMMA2 LWMA3";

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   if(CountTrades()>0)
      lot=NormalizeDouble(Lots*MathPow(KLot,CountTrades()),2);
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double blu1 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,TimeFrame,0,Shift);
   double red1 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,TimeFrame,1,Shift);
   double blu2 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,TimeFrame,0,Shift+1);
   double red2 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,TimeFrame,1,Shift+1);

   double h4blu1 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,240,0,Shift);
   double h4red1 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,240,1,Shift);
   double h4blu2 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,240,0,Shift+1);
   double h4red2 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,240,1,Shift+1);

   double d1blu1 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,1440,0,Shift);
   double d1red1 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,1440,1,Shift);
   double d1blu2 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,1440,0,Shift+1);
   double d1red2 = iCustom(NULL,0,IndName,Lb,sslMA_method,SSL_BarLevel,1440,1,Shift+1);

   double ma = iMA(NULL,0,MAPeriod,0,0,0,Shift);

   bool buy = blu1!=EMPTY_VALUE && red2!=EMPTY_VALUE && h4blu1!=EMPTY_VALUE && d1blu1!=EMPTY_VALUE;
   bool sell = red1!=EMPTY_VALUE && blu2!=EMPTY_VALUE && h4red1!=EMPTY_VALUE && d1red1!=EMPTY_VALUE;

   bool cbuy = (blu1!=EMPTY_VALUE && red2!=EMPTY_VALUE)||(h4blu1!=EMPTY_VALUE && h4red2!=EMPTY_VALUE)||(d1blu1!=EMPTY_VALUE && d1red2!=EMPTY_VALUE);
   bool csell = (red1!=EMPTY_VALUE && blu2!=EMPTY_VALUE)||(h4red1!=EMPTY_VALUE && h4blu2!=EMPTY_VALUE)||(d1red1!=EMPTY_VALUE && d1blu2!=EMPTY_VALUE);

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1)
     {
      if(buy)
        {
         PutOrder(0,Ask);
        }
      if(sell)
        {
         PutOrder(1,Bid);
        }
     }

   if(CloseSig>0)
     {
      if(sell)
        {
         CloseAll(0);
        }
      if(buy)
        {
         CloseAll(1);
        }
     }

   Comment("\n blu: ",blu1,
           "\n red: ",red1,
           "\n blu2: ",blu2,
           "\n red2: ",red2);
  }
//+------------------------------------------------------------------+



avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 10 декабря 2021, 20:34
+
0
и чуть подправил индикатор:


//+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|ssl  fast bar mtf                                         Kalenzo |
//|                                      bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
//mtf2008fxtsd

#property copyright "Kalenzo"
#property link      "bartlomiej.gorski@gmail.com"

#property indicator_separate_window
//#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1  Blue
#property indicator_color2  Magenta
#property indicator_width1  5
#property indicator_width2  5
#property indicator_minimum 10
#property indicator_maximum 90

//
//
//
//
//

extern int     Lb           = 3;
extern int     sslMA_method =  0;
extern int     SSL_BarLevel = 50;    //BarLevel 10-90

extern int     TimeFrame    =  15;
extern string  TimeFrames   = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";
extern string  MA_method_   = "SMA0 EMA1 SMMA2 LWMA3";

extern bool alertsOn             = true;
extern bool alertsMessageBox     = false;
extern bool alertsSound          = false;
extern string alertsSoundFile    = "expert.wav";  //enterSoundFile
extern bool alertsEmail          = false;
extern bool alertsAfterBarClose  = true;



//
//
//
//
//

double sslHup[];
double sslHdn[];
double hlv[];
string IndicatorFileName;


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   string TimeFrameStr;
   TimeFrame=MathMax(TimeFrame,Period());

   switch(TimeFrame)
     {
      case PERIOD_M1:
         TimeFrameStr="M1"  ;
         break;
      case PERIOD_M5:
         TimeFrameStr="M5"  ;
         break;
      case PERIOD_M15:
         TimeFrameStr="M15" ;
         break;
      case PERIOD_M30:
         TimeFrameStr="M30" ;
         break;
      case PERIOD_H1:
         TimeFrameStr="H1"  ;
         break;
      case PERIOD_H4:
         TimeFrameStr="H4"  ;
         break;
      case PERIOD_D1:
         TimeFrameStr="D1"  ;
         break;
      case PERIOD_W1:
         TimeFrameStr="W1"  ;
         break;
      case PERIOD_MN1:
         TimeFrameStr="MN1" ;
         break;
      default :
         TimeFrameStr="TF0";
     }


   IndicatorBuffers(3);
   SetIndexBuffer(0,sslHup);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,167);
   SetIndexLabel(0,"SSLup "+Lb+" ["+TimeFrame+"]");
   SetIndexBuffer(1,sslHdn);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,167);
   SetIndexLabel(1,"SSLdn "+Lb+" ["+TimeFrame+"]");
   SetIndexBuffer(2,hlv);

   IndicatorShortName("SSL Bar  "+Lb+" ["+TimeFrameStr+"]");
   IndicatorFileName = WindowExpertName();

   return(0);
  }


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }

//
//
//
//
//

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int  counted_bars=200;
   int  i,limit;
   int  y;

   if(counted_bars<0)
      return(-1);
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;


   if(TimeFrame != Period())
     {
      datetime TimeArray[];
      limit = MathMax(limit,TimeFrame/Period());
      ArrayCopySeries(TimeArray, MODE_TIME, NULL,TimeFrame);

      //
      //
      //
      //
      //
      for(i=0; i<limit; i++)
        {
         if(Time[i]<TimeArray[y])
            y++;

         sslHup[i] = iCustom(NULL,TimeFrame,IndicatorFileName,Lb,sslMA_method,SSL_BarLevel,alertsOn,alertsMessageBox,
                             alertsSound,alertsSoundFile,alertsEmail,alertsAfterBarClose,0,y);
         sslHdn[i] = iCustom(NULL,TimeFrame,IndicatorFileName,Lb,sslMA_method,SSL_BarLevel,alertsOn,alertsMessageBox,
                             alertsSound,alertsSoundFile,alertsEmail,alertsAfterBarClose,1,y);


        }


      return(0);
     }


//
//
//
//
//

   for(i=limit; i>=0; i--)
     {
      hlv[i] = hlv[i+1];

      if(Close[i]>iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1))
         hlv[i] =  1;
      if(Close[i]<iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW, i+1))
         hlv[i] = -1;

      if(hlv[i] == -1)
        {
         sslHdn[i] = SSL_BarLevel;
         sslHup[i] = EMPTY_VALUE;
        }
      else
        {
         sslHdn[i] = EMPTY_VALUE;
         sslHup[i] = SSL_BarLevel;
        }
     }


   if(alertsOn)
     {
      int alertBar=0;
      if(alertsAfterBarClose)
         alertBar = 1;

      if(hlv[0+alertBar] != hlv[1+alertBar])
         if(hlv[0+alertBar] == 1)
            doAlert("ВВЕРХ");
         else
            doAlert("вниз");
     }



   return(0);
  }

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


//
//
//

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void doAlert(string doWhat)
  {
   static string   previousAlert="ждем";
   static datetime previousTime;
   string message;

   if(previousAlert != doWhat || previousTime != Time[0])

     {
      previousAlert  = doWhat;
      previousTime   = Time[0];

      //
      //
      //

      message =  StringConcatenate("SSL-1440 - ",doWhat," ",Symbol()," M",TimeFrame," в ",Close[0]);
      if(alertsMessageBox)
         Alert(message);
      if(alertsEmail)
         SendMail(StringConcatenate(Symbol(),"SSL "),message);
      if(alertsSound)
         PlaySound(alertsSoundFile);
     }
  }

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

avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 10 декабря 2021, 20:35
+
0
Здравствуйте Андрей, так он что, работать то будет??? Попробуем.., в любом случае спасибо огромное...!!!
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 10 декабря 2021, 20:57
+
0
ак он что, работать то будет?

это зависит от индикатора и производительности компа. напишите будет или нет
avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 10 декабря 2021, 23:27
+
0
… да, да, обязательно, два компа сильных, а два нет, випробую и Ваш вариант индюшка и базовый, настрою два терминала.
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 06:04
+
0
Андрей здравствуйте, гляньте пожалуйста...
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 09:34
+
0
Андрей здравствуйте, первоначальный робот не работает, ну т.е. как задумано, шпарит как из «пулемёта» ставит ордера, закрывает.., ставит.., закрывает, в общем чёпопало твори…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 13 декабря 2021, 04:42
+
0
Андрей здравствуйте, первоначальный робот не работает, ну т.е. как задумано, шпарит как из «пулемёта» ставит ордера, закрывает.., ставит.., закрывает, в общем чёпопало творит.., тут надо видео делать, скрины при такой его работе не прокатят…
Редактирован: 13 декабря 2021, 04:44
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 13 декабря 2021, 04:44
+
0
этот индикатор основан на ма, синий квадратик выше ма, красный ниже. в другом топике лучше сделать напрямую по ма и не мучить ни себя ни индикатор.
avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 11 декабря 2021, 10:11
+
0
Давайте попробуем.., оформить новый заказ??? Я так понимаю это в январе будет???
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 11:05
+
0
напишите здесь какие ма и с каким периодом будем использовать на каждом периоде и сейчас напишу
avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 11 декабря 2021, 11:14
+
0
… посмотрел, ну да, машки прописаны, как применить???, пропишите ма с настройками, смену цвета им что ли как то…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 12:02
+
0
Давйте по аналогу индикатора, переиоды 1440, 240, 15, машки нужно глянуть ккакие в индюке используются, а как вход то брать??? Тут цвет на 15 поменялся, совпадает с 240 и 1440 беру, а машка чё где пересикается??? Я пока не могу представить чё к чему…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 11:58
+
0
вот набросок с простыми входами и выходами по обратному сигналу на 3-х тф:

вход цена больше ма 40 на всех тф.




//+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал

extern int Slip          = 30;       // реквот
extern int Shift         = 2;        // бар индикатора
extern int CloseSig      = 1;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern int MAPeriod      = 40;
extern int MAMethod      = 0;
extern int MAPrice       = 0;

extern int TimeFrame1   =  240;
extern int TimeFrame2   =  1440;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma = iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double h4ma = iMA(NULL,TimeFrame1,MAPeriod,0,MAMethod,MAPrice,Shift);
   double d1ma = iMA(NULL,TimeFrame2,MAPeriod,0,MAMethod,MAPrice,Shift);

   bool buy = Bid>ma && Bid>h4ma && Bid>d1ma;
   bool sell = Bid<ma && Bid<h4ma && Bid<d1ma;

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1)
     {
      if(buy)
        {
         PutOrder(0,Ask);
        }
      if(sell)
        {
         PutOrder(1,Bid);
        }
     }

   if(CloseSig>0)
     {
      if(sell)
        {
         CloseAll(0);
        }
      if(buy)
        {
         CloseAll(1);
        }
     }

   Comment("\n Lot: ",Lots);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 11 декабря 2021, 12:31
+
0
Так, спасибо, а что подрумеватся под простыми входами??? Смену цвета никак??? Добавте сюда пожалуйста МА контролирущую напровление входа, у меня она 300, цена выше-только покупаем, ниже — продаём…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 12:52
+
0
… да, и дельту к контролирующей тоже добавьте.
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 12:55
+
0
добавил контрол ма и дельту:


//+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал
extern int Delta         = 300;      // дельта

extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // бар индикатора
extern int CloseSig      = 1;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern int MAControl     = 300;
extern int MAPeriod      = 40;
extern int MAMethod      = 0;
extern int MAPrice       = 0;

extern int TimeFrame1   =  240;
extern int TimeFrame2   =  1440;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma = iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double mac = iMA(NULL,0,MAControl,0,MAMethod,MAPrice,Shift);
   double h4ma = iMA(NULL,TimeFrame1,MAPeriod,0,MAMethod,MAPrice,Shift);
   double d1ma = iMA(NULL,TimeFrame2,MAPeriod,0,MAMethod,MAPrice,Shift);

   bool buy = Bid>ma && Bid>h4ma && Bid>d1ma;
   bool sell = Bid<ma && Bid<h4ma && Bid<d1ma;
   
   double delta = MathAbs(mac-Bid)/_Point;

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1 && delta>Delta)
     {
      if(buy)
        {
         PutOrder(0,Ask);
        }
      if(sell)
        {
         PutOrder(1,Bid);
        }
     }

   if(CloseSig>0)
     {
      if(sell)
        {
         CloseAll(0);
        }
      if(buy)
        {
         CloseAll(1);
        }
     }

   Comment("\n Lot: ",Lots);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16419 - Андрей

  • 11 декабря 2021, 13:22
+
0
Ага, спасибо огромное Андрей, попробую и в таком варианте…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 11 декабря 2021, 13:24
+
0
Здравствуте Андрей, посмотрите пожалуйта скрины.., нужно Ваше вмешательство…
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 13 декабря 2021, 08:20
+
0
,
avatar

  12  mishelbb Автор Сообщений: 220 - mishelbb

  • 13 декабря 2021, 08:21
+
0
Попробуйте:

//+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал
extern int Delta         = 300;      // дельта

extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // бар индикатора
extern int CloseSig      = 1;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern int MAControl     = 300;
extern int MAPeriod      = 40;
extern int MAMethod      = 0;
extern int MAPrice       = 0;

extern int TimeFrame1   =  240;
extern int TimeFrame2   =  1440;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma = iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double mac = iMA(NULL,0,MAControl,0,MAMethod,MAPrice,Shift);
   double h4ma = iMA(NULL,TimeFrame1,MAPeriod,0,MAMethod,MAPrice,Shift);
   double d1ma = iMA(NULL,TimeFrame2,MAPeriod,0,MAMethod,MAPrice,Shift);

   bool buy = Bid>ma && Bid>h4ma && Bid>d1ma;
   bool sell = Bid<ma && Bid<h4ma && Bid<d1ma;
   
   double delta = MathAbs(mac-Bid)/_Point;

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1 && delta>Delta)
     {
      if(buy && (mac-Bid)/_Point>Delta)
        {
         PutOrder(0,Ask);
        }
      if(sell && (Bid-mac)/_Point>Delta)
        {
         PutOrder(1,Bid);
        }
     }

   if(CloseSig>0)
     {
      if(sell)
        {
         CloseAll(0);
        }
      if(buy)
        {
         CloseAll(1);
        }
     }

   Comment("\n Lot: ",Lots);
  }
//+------------------------------------------------------------------+

avatar

  16  ssg Сообщений: 817

  • 13 декабря 2021, 12:51
+
0
Или так, когда линии расположены в порядке возрастания или убывания:


//+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот

extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int TrailingStop  = 0;        // трал
extern int Delta         = 300;      // дельта

extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // бар индикатора
extern int CloseSig      = 1;        // 1-закрытие по сигналу
extern int Magic         = 123;      // магик

extern int MAControl     = 300;
extern int MAPeriod      = 40;
extern int MAMethod      = 0;
extern int MAPrice       = 0;

extern int TimeFrame1   =  240;
extern int TimeFrame2   =  1440;

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)
         sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)
         sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
      if(TakeProfit>0)
         tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   double sl=0;

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()<sl)
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()-Ask>TrailingStop*_Point)
                 {
                  sl=NormalizeDouble(Ask+TrailingStop*_Point,_Digits);
                  if(OrderStopLoss()>sl || (OrderStopLoss()==0))
                    {
                     Print("SL: ",sl, " TP: ",OrderTakeProfit());
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),sl,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma = iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double mac = iMA(NULL,0,MAControl,0,MAMethod,MAPrice,Shift);
   double h4ma = iMA(NULL,TimeFrame1,MAPeriod,0,MAMethod,MAPrice,Shift);
   double d1ma = iMA(NULL,TimeFrame2,MAPeriod,0,MAMethod,MAPrice,Shift);

   bool buy = Bid>ma && Bid>h4ma && Bid>d1ma && h4ma>d1ma;
   bool sell = Bid<ma && Bid<h4ma && Bid<d1ma && h4ma<d1ma;
   
   double delta = MathAbs(mac-Bid)/_Point;

   if(TrailingStop>0)
      Trailing();

   if(CountTrades()<1 && delta>Delta)
     {
      if(buy && (mac-Bid)/_Point>Delta)
        {
         PutOrder(0,Ask);
        }
      if(sell && (Bid-mac)/_Point>Delta)
        {
         PutOrder(1,Bid);
        }
     }

   if(CloseSig>0)
     {
      if(sell)
        {
         CloseAll(0);
        }
      if(buy)
        {
         CloseAll(1);
        }
     }

   Comment("\n Lot: ",Lots);
  }
//+------------------------------------------------------------------+

avatar

  16  ssg Сообщений: 817

  • 13 декабря 2021, 13:01

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий