Как я собираю себе советника методом тыка - страница 51

 
Alexsandr San:

Да! ещё нужно и это добавить в Утилиту https://www.mql5.com/ru/code/23939


#property version     "1.009"

Добавил эту Функцию 

input string   t10="----- Price Line:     -----";                //
input string   InpFont0                     = "BUY";             // Obj: BUY (Obj:Name) ВЕРХУ
input ENUM_TRADE_COMMAND InpCSCommand       = close_open_b;      // Obj:  command:
input string   InpFont1                     = "SELL";            // Obj: SELL (Obj:Name) ВНИЗУ
input ENUM_TRADE_COMMAND InCSCommand        = close_open_s;      // Obj:  command:
input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
input ushort   InpIndentUp                  = 5;                 // Indent up, in pips (1.00045-1.00055=1 pips)
input ushort   InpIndentDown                = 10;                // Indent down, in pips (1.00045-1.00055=1 pips)
input int      InpSeconds                   = 3;                 // Number of seconds

под Индикатор, нужно одним именем - LOW

input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
Файлы:
 
Alexsandr San:

#property version     "1.009"

Добавил эту Функцию 

под Индикатор, нужно одним именем - LOW

Забыл! Отключать эту Функцию 

#property version     "1.010"

input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
input ushort   InpIndentUp                  = 5;                 // Indent up, in pips (1.00045-1.00055=1 pips)
input ushort   InpIndentDown                = 10;                // Indent down, in pips (1.00045-1.00055=1 pips)
input int      InpSeconds                   = 3;                 // Number of seconds
input bool     InpOnTimer                   = false;             // OnTimer "LOW Up" "LOW Down"
Файлы:
 

Что может эта Утилита!? - да! практически всё, все ваши фантазии в одном .

GBPUSDM30 

 
Alexsandr San:

Что может эта Утилита!? - да! практически всё, все ваши фантазии в одном .

 

Ну если цена в точку пересечения придет, тогда точно ДА))))

 
Alexsandr San:

Что может эта Утилита!? - да! практически всё, все ваши фантазии в одном . 

Просится в эту утилиту, ещё одна функция - трал, за горизонтальной синей линией

Просится в эту утилиту   1

Снимок2   2

Вот я вручную, подвинул жёлтую горизонтальную линию и сработал стоп

Снимок3   3 

 
Alexsandr San:

Просится в эту утилиту, ещё одна функция - трал, за горизонтальной синей линией

  1

  2

Вот я вручную, подвинул жёлтую горизонтальную линию и сработал стоп

  3 

Именно за Горизонтальными линиями тралится - Осталось разобраться - какой расчёт ведётся в индикаторе Low_Macd_Line.mq5  чтобы тралилась за синей 

Снимок

на картинке - верхняя синяя , коснувшись верхней жёлтой, срабатывает сигнал

а нижняя синяя , с нижней жёлтой, срабатывает сигнал   

 
Alexsandr San:

Именно за Горизонтальными линиями тралится - Осталось разобраться - какой расчёт ведётся в индикаторе Low_Macd_Line.mq5  чтобы тралилась за синей 

на картинке - верхняя синяя , коснувшись верхней жёлтой, срабатывает сигнал

а нижняя синяя , с нижней жёлтой, срабатывает сигнал   

Удалось разобраться с тралом в окне Индикатора  Low_Macd_Line.mq5  заработал - теперь в понедельник, на лажу правильно и обновлю Утилиту

  Снимок4

------------------------

вот сам трал 

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTickObjTrailingCS(void)
  {
//---
   if(InpSignalsFrequency>=10) // trailing no more than once every 10 seconds
     {
      datetime time_current=TimeCurrent();
      if(time_current-m_obj_last_trailingCS>10)
        {
         if(RefreshRates())
            ObjTrailingCS();
         else
            return;
         m_obj_last_trailingCS=time_current;
        }
     }
//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(m_symbol.Name(),Period(),0);
   if(time_0==m_prev_barsCS)
      return;
   m_prev_barsCS=time_0;
   if(InpSignalsFrequency<10) // trailing only at the time of the birth of new bar
     {
      if(RefreshRates())
         ObjTrailingCS();
     }
  }
//+------------------------------------------------------------------+
//| Object Trailing                                                  |
//|   InpObjTrailingStop: min distance from price to object          |
//+------------------------------------------------------------------+
void ObjTrailingCS(void)
  {
   double new_up_price        = -1;   //
   double new_down_price      = 1;   //
   double current_up_price    = ObjectGetDouble(0,InpFont0,OBJPROP_PRICE);
   double current_down_price  = ObjectGetDouble(0,InpFont1,OBJPROP_PRICE);
   double price_up            = ObjectGetDouble(0,InpFont2,OBJPROP_PRICE);
   double price_down          = ObjectGetDouble(0,InpFont3,OBJPROP_PRICE);

   if(current_up_price>new_up_price)
     {
      if(current_up_price>price_up+InpObjTrail)
        {
         m_obj_up_priceCS=price_up+InpObjTrail;
         HLineMove(0,InpFont0,m_obj_up_priceCS);
        }
     }
   if(current_down_price<new_down_price)
     {
      if(current_down_price<price_down-InpObjTrail)
        {
         m_obj_down_priceCS=price_down-InpObjTrail;
         HLineMove(0,InpFont1,m_obj_down_priceCS);
        }
     }
  }
//+------------------------------------------------------------------+
 
Alexsandr San:

Удалось разобраться с тралом в окне Индикатора  Low_Macd_Line.mq5  заработал - теперь в понедельник, на лажу правильно и обновлю Утилиту

 

------------------------

вот сам трал 

Может кому, Интересно поиграться в Тестере, с этой функцией - выкладываю утилиту, она чисто для тестера, нужен ещё и этот Индикатор   Low_Macd_Line.mq5 

сама функция Вот-

input string   t10="----- Price Line:     -----";                //
input string   InpFont0                     = "BUY";             // Obj: BUY (Obj:Name) ВЕРХУ
input ENUM_TRADE_COMMAND InpCSCommand       = close_open_b;      // Obj:  command:
input string   InpFont1                     = "SELL";            // Obj: SELL (Obj:Name) ВНИЗУ
input ENUM_TRADE_COMMAND InCSCommand        = close_open_s;      // Obj:  command:
input double   InpObjTrail                  = 0.0001;            // Obj: Trailing Stop MACD
input double   InpObjTrailStep              = 0.0001;            // Obj: Trailing Step MACD
input ushort   InpObjTrailingStopCS         = 15;                // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepCS         = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
input ushort   InpIndentUp                  = 5;                 // Indent up, in pips (1.00045-1.00055=1 pips)
input ushort   InpIndentDown                = 10;                // Indent down, in pips (1.00045-1.00055=1 pips)
input int      InpSeconds                   = 3;                 // Number of seconds
input bool     InpOnTimer                   = true;              // OnTimer "LOW Up" "LOW Down"

когда от Индикатора Low_Macd_Line.mq5  нужно задать этим Горизонтальным линиям, одно Имя "LOW"

input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
Файлы:
02_llliiiooo.mq5  255 kb
 
Alexsandr San:

Просится в эту утилиту, ещё одна функция - трал, за горизонтальной синей линией 

#property version     "1.011"

Трал нужно подбирать, под каждую пару (это под XAU/USD на 1 час) под одну минуту 0.1001

на GBPUSD под одну минуту 0.0001

input double   InpObjTrail                  = 1.0001;            // Obj: Trailing Stop MACD ("0" -> Off)
input double   InpObjTrailStep              = 1.0001;            // Obj: Trailing Step MACD

Самое Важное - когда от Индикатора Low_Macd_Line.mq5

нужно правильно вписать имя Горизонтальной линии (их там две) -  Ещё очень Важно!!! Что бы Индикатор Low_Macd_Line.mq5 находился в 1 окне Индикатора на Графике  

input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL

должно быть так !!!

input string   InpFont2                     = "LOW";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW";          // Obj: Name Price Line SELL

GBPUSDM1XX    1.

GBPUSDM1YY    2.

GBPUSDM1YY1    3.

GBPUSDM1YY2    4.

На картинках - трал отработал и сменил направление - теперь нужно вручную, опять выставить Горизонтальную линию SELL -на случай если опять сменится направление  

Файлы:
 
Alexsandr San:

#property version     "1.011"

Трал нужно подбирать, под каждую пару (это под XAU/USD на 1 час) под одну минуту 0.1001

на GBPUSD под одну минуту 0.0001

Самое Важное - когда от Индикатора Low_Macd_Line.mq5

нужно правильно вписать имя Горизонтальной линии (их там две) -  Ещё очень Важно!!! Что бы Индикатор Low_Macd_Line.mq5 находился в 1 окне Индикатора на Графике  

#property version     "1.012"

Немного усовершенствовал Функцию 

input string   t0="----- Price Line:        -----";              //
input string   InpFont0                     = "BUY";             // Obj: BUY (Obj:Name) ВЕРХУ
input ENUM_TRADE_COMMAND InpCSCommand       = close_open_b;      // Obj:  command:
input string   InpFont1                     = "SELL";            // Obj: SELL (Obj:Name) ВНИЗУ
input ENUM_TRADE_COMMAND InCSCommand        = close_open_s;      // Obj:  command:
input double   InpObjTrail                  = 1.0001;            // Obj: Trailing Stop MACD ("0" -> Off)
input double   InpObjTrailStep              = 1.0001;            // Obj: Trailing Step MACD
input bool     InpDub                       = false;             // "0.0":Price=false(Trail->Off) "LOW":Price=true(Trail->ON)
input bool     InpDubll                     = false;             // Duplicate "BUY""SELL" (ObjTrailStep)
input ushort   InpObjTrailingStopCS         = 15;                // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStepCS         = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
input bool     InpOnTimer                   = false;             // OnTimer "LOW Up" "LOW Down"
input ushort   InpIndentUp                  = 5;                 // Indent up, in pips (1.00045-1.00055=1 pips)
input ushort   InpIndentDown                = 10;                // Indent down, in pips (1.00045-1.00055=1 pips)

когда срабатывает, Горизонтальная линия SELL открывает позицию и выставляет Горизонтальную линию BUY и на оборот.

а также , линия выставляется или от "0" и расстояние задаётся  Obj: Trailing Step MACD

или от Горизонтальной линии "LOW"


input double   InpObjTrailStep              = 1.0001;            // Obj: Trailing Step MACD
input bool     InpDub                       = false;             // "0.0":Price=false(Trail->Off) "LOW":Price=true(Trail->ON)
input bool     InpDubll                     = false;             // Duplicate "BUY""SELL" (ObjTrailStep)

От OnTimer "LOW Up" "LOW Down" тоже самое , только расстояние задаётся (input ushort   InpObjTrailingStepCS = 5;// Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)

input ushort   InpObjTrailingStepCS         = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   InpFont2                     = "LOW Up";          // Obj: Name Price Line BUY
input string   InpFont3                     = "LOW Down";        // Obj: Name Price Line SELL
input bool     InpOnTimer                   = false;             // OnTimer "LOW Up" "LOW Down"

Как узнать расстояние, Горизонтальной линии в Индикаторе Low_Macd_Line.mq5 что бы задать в трале (на каждой паре, разное расстояние)

Копируете и вставляете в настройках Утилиты

input double   InpObjTrailStep              = 1.0001;            // Obj: Trailing Step MACD

Снимок

на картинке от "0" до Горизонтальной BUY 0.0064 и когда её коснётся Горизонтальная LOW, выставиться Горизонтальная SELL ( только ниже "0" -0.0064)

ВАЖНО!!! нельзя перед цифрами, ставить минус ( - ) которые вписываем в Утилиту

Снимок2 Один из Вариантов, работы этой функции   

Файлы: