Задать алгоритм вручную и автоматизировать эксперта. - страница 2

 
SanAlex:

Владимир Вы о чём? Все труды раздаю бесплатно. Пользуйтесь на Здоровья! 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Здесь можно скачать https://www.mql5.com/ru/code/34046  

Поторопился с Экспертом выложив его в кодобазу - кое какие недостатки нужно Исправить, уже всё исправил но нужно ещё одну  Функцию добавить 

ещё две линии, которые открывают в разные стороны при пересечении и сигнал поступал на новом баре.

\\\\\\\\\\\\\\\\

вот так с помощью кнопок выставил линии - которые можно запускать в автомате.

XAUUSDH1 ммм 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

так для тренировки - пока до делаю до конца Полноценного помощника в торговле. 

Файлы:
EXP_0006.mq5  247 kb
 
SanAlex:

Поторопился с Экспертом выложив его в кодобазу - кое какие недостатки нужно Исправить, уже всё исправил но нужно ещё одну  Функцию добавить 

ещё две линии, которые открывают в разные стороны при пересечении и сигнал поступал на новом баре.

\\\\\\\\\\\\\\\\

вот так с помощью кнопок выставил линии - которые можно запускать в автомате.

 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

так для тренировки - пока до делаю до конца Полноценного помощника в торговле. 

В Кодобазе обновил https://www.mql5.com/ru/code/34046добавил ещё от 4 линии Горизонтальных или Трендовых 

sinput group "----------------- Trade Line UP ------------------------"
sinput ENUM_MODE          FilterLine_13              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Up               = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedUp         = open_buy;         // Trade command:
sinput string             InpNameAverageUp           = "Line Up";        // Line Name UP(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedUpLow      = open_sell;        // Trade command:
sinput bool               InpDelLineUp               = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeUp          = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrUp         = clrBlue;          // EA only monitors this lines color
sinput group "----------------- Trade Line_2 UP ----------------------"
sinput ENUM_MODE          FilterLine_15              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Up_2             = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedUp_2       = open_buy;         // Trade command:
sinput string             InpNameAverageUp_2         = "Line_2 Up";      // Line Name UP(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedUpLow_2    = open_sell;        // Trade command:
sinput bool               InpDelLineUp_2             = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeUp_2        = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrUp_2       = clrBlue;          // EA only monitors this lines color
sinput group "----------------- Trade Line DOWN ----------------------"
sinput ENUM_MODE          FilterLine_14              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Down             = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedDown       = open_buy;         // Trade command:
sinput string             InpNameAverageDown         = "Line Down";      // Line Name DOWN(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedDownLow    = open_sell;        // Trade command:
sinput bool               InpDelLineDown             = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeDown        = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrDown       = clrRed;           // EA only monitors this lines color
sinput group "----------------- Trade Line_2 DOWN --------------------"
sinput ENUM_MODE          FilterLine_16              = mode_All;         // FILTER: ВКЛ.ВЫКЛ.
sinput ENUM_TIMEFRAMES    InpPeriod_Down_2           = PERIOD_CURRENT;   // Period
sinput ENUM_TRADE_COMMAND InpCommandOpenedDown_2     = open_buy;         // Trade command:
sinput string             InpNameAverageDown_2       = "Line_2 Down";    // Line Name DOWN(Horizontal Line or Trend Line)
sinput ENUM_TRADE_COMMAND InpCommandOpenedDownLow_2  = open_sell;        // Trade command:
sinput bool               InpDelLineDown_2           = false;            // Delete (Horizontal Line or Trend Line)
sinput double             InpObjStepTradeDown_2      = 0;                // Obj: Distance from price to object, in pips
sinput color              InpObjAverageclrDown_2     = clrRed;           // EA only monitors this lines color
Algorithm manually automate
Algorithm manually automate
  • www.mql5.com
Эксперт для Автоматизации Ручной торговли.
 

Налепил что сам путаюсь. - Путает фильтр, надо его изучить!

//+------------------------------------------------------------------+
//| main function returns true if any position processed             |
//+------------------------------------------------------------------+
void CSampleExpert::ProcessingUp(void)
  {
   if(InpIndicators_1 && Processing_1()) - это верхний Индикатор 
     {
      return;
     }
   ObjVLinetime(); ----------------------- это верхняя Вертикальная линия
   OnTickInpNameRx(); -------------------- это верхняя Линия от Трала 1
   OnTickInpNameRz(); -------------------- это верхняя Линия от Трала 2
   ProcessingBuy(); ---------------------- это Линия BUY по цвету
   ProcessingClosBuy(); ------------------ это Линия CLOSE BUY по цвету
   TrendOpenedUp(); ---------------------- это 2 верхние Линии туда сюда 
   TrendOpenedUp_2();
  }
//+------------------------------------------------------------------+
//| main function returns true if any position processed             |
//+------------------------------------------------------------------+
void CSampleExpert::ProcessingDown(void)
  {
   if(InpIndicators_2 && Processing_2()) - это нижний Индикатор
     {
      return;
     }
   ObjVLinetimeD(); ---------------------- это нижняя Вертикальная линия
   OnTickInpNameSx(); -------------------- это нижняя Линия от Трала 1
   OnTickInpNameSz(); -------------------- это нижняя Линия от Трала 2
   ProcessingSell(); --------------------- это нижняя SELL по цвету
   ProcessingClosSell(); ----------------- это нижняя CLOSE SELL по цвету
   TrendOpenedDown(); -------------------- это 2 нижний Линии туда сюда
   TrendOpenedDown_2();
  }
//+------------------------------------------------------------------+

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Важно теперь запомнить - что бы на отскок определённой линии, правильно  у казать на неё и задать дистанцию 

 

Все линии подключены к Команде 

Верхние к OPEN UP - Нижние к OPEN  DOWN ------------ это те линии которые относятся к UP

Верхние к CLOSE UP - Нижние к CLOSE  DOWN ---------- это те линии которые относятся к  DOWN

      case  UpName:// Line Open UpName
         ExtUpName=true;
         Obj_BUYOpen();
         ExtUpNameColor=true;
         Obj_BUYOpenColor("BUYOpenColor");
         ExtUpNameUp=true;
         Obj_AverageUp();
         break;
      case  DownName:// Line Open DownName
         ExtDownName=true;
         Obj_SELLOpen();
         ExtDownNameColor=true;
         Obj_SELLOpenColor("SELLOpenColor");
         ExtDownNameDown=true;
         Obj_AverageDown();
         break;
      case  UpName_s:// Line Open UpName + Open Sell
         ExtUpName=true;
         Obj_BUYOpen();
         ExtUpNameColor=true;
         Obj_BUYOpenColor("BUYOpenColor");
         ExtUpNameUp=true;
         Obj_AverageUp();
         ExtNeedOpenSell=true;
         NotifyCrossingSell("");
         break;
      case  UpName_b:// Line Open UpName + Open Buy
         ExtUpName=true;
         Obj_BUYOpen();
         ExtUpNameColor=true;
         Obj_BUYOpenColor("BUYOpenColor");
         ExtUpNameUp=true;
         Obj_AverageUp();
         ExtNeedOpenBuy=true;
         NotifyCrossingBuy("");
         break;
      case  DownName_b:// Line Open DownName + Open Buy
         ExtDownName=true;
         Obj_SELLOpen();
         ExtDownNameColor=true;
         Obj_SELLOpenColor("SELLOpenColor");
         ExtDownNameDown=true;
         Obj_AverageDown();
         ExtNeedOpenBuy=true;
         NotifyCrossingBuy("");
         break;
      case  DownName_s:// Line Open DownName + Open Sell
         ExtDownName=true;
         Obj_SELLOpen();
         ExtDownNameColor=true;
         Obj_SELLOpenColor("SELLOpenColor");
         ExtDownNameDown=true;
         Obj_AverageDown();
         ExtNeedOpenSell=true;
         NotifyCrossingSell("");
         break;
      case  ClUpName:// Line Close UpName
         ClExtUpName=true;
         Obj_BUYClos();
         ClExtUpNameColor=true;
         Obj_BUYClosColor("BUYClosColor");
         ExtUpNameUp_2=true;
         Obj_AverageUp_2();
         break;
      case  ClDownName:// Line Close DownName
         ClExtDownName=true;
         Obj_SELLClos();
         ClExtDownNameColor=true;
         Obj_SELLClosColor("SELLClosColor");
         ExtDownNameDown_2=true;
         Obj_AverageDown_2();
         break;
      case  ClUpName_s:// Line Close UpName + Open Sell
         ClExtUpName=true;
         Obj_BUYClos();
         ClExtUpNameColor=true;
         Obj_BUYClosColor("BUYClosColor");
         ExtUpNameUp_2=true;
         Obj_AverageUp_2();
         ExtNeedOpenSell=true;
         NotifyCrossingSell("");
         break;
      case  ClUpName_b:// Line Close UpName + Open Buy
         ClExtUpName=true;
         Obj_BUYClos();
         ClExtUpNameColor=true;
         Obj_BUYClosColor("BUYClosColor");
         ExtUpNameUp_2=true;
         Obj_AverageUp_2();
         ExtNeedOpenBuy=true;
         NotifyCrossingBuy("");
         break;
      case  ClDownName_b:// Line Close DownName + Open Buy
         ClExtDownName=true;
         Obj_SELLClos();
         ClExtDownNameColor=true;
         Obj_SELLClosColor("SELLClosColor");
         ExtDownNameDown_2=true;
         Obj_AverageDown_2();
         ExtNeedOpenBuy=true;
         NotifyCrossingBuy("");
         break;
      case  ClDownName_s:// Line Close DownName + Open Sell
         ClExtDownName=true;
         Obj_SELLClos();
         ClExtDownNameColor=true;
         Obj_SELLClosColor("SELLClosColor");
         ExtDownNameDown_2=true;
         Obj_AverageDown_2();
         ExtNeedOpenSell=true;
         NotifyCrossingSell("");
         break;

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

можно на кнопках Выставить команды - И задать везде дистанцию , только разную прописать что бы они выскочили на разном расстоянии 

команды

команды 2

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

когда сработает линия она автоматически отпрыгнет, опять на туже дистанцию 

 

С Помощью этого Индикатора https://www.mql5.com/ru/code/32395 можно организовать не плохую стратегию

команды 3 

Фильтр Жёлтая - первая ближняя линии от жёлтой открываем, за пределы вышла не открываем. Самая последняя линия (отключаем фильтр для линии - в противоположную сторону открываем) 

Trio Color
Trio Color
  • www.mql5.com
Сигнальный Индикатор
 

Пример как передать с одной линии команду на другую линию.

Ведь если удалить Линию которую рисует Индикатор и переместить её в другое место Индикатор вернёт её на своё место.

- Тогда можно из одной линии, передать другой линии выполнять дальнейшие действия, задав на другой линии нужною команду, и задать дистанцию.

gthtlfnm 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Предупреждение! ещё же есть линии в эксперте, которым тоже можно выставить дистанцию - и если там установлена дистанция , линия тоже установится - при этом нужно задать желаемую команду.
 

Пример - как я задал Эксперту работу с помощью фильтра от Pivot Индикатора - правда я добавил в индикатор ещё две линии   "S0"  "R0"  - которые фильтруют и запрещают действия(на картинке крестики)

"P" - Фильтр: Выше BUY - Ниже SELL

"R2" - противоположно откроет вниз - при этом отскочит линия на заданное расстояния вверх 

"S2"  - противоположно откроет верх - при этом отскочит линия на заданное расстояния вниз 

XAUUSDM1 0000

 

Пример фильтра - другой метод 

"R2" - Выше линии команды работают 

"S2" - Ниже линии команды работают 

Между этими линиями команды не работают.

XAUUSDH1 000

 

Обновил до версии "1.002" https://www.mql5.com/ru/code/34046

- Есть один недостаток, Когда Индикатор с линиями и Вы его используете в Эксперте - при смене шаблона с сохранённым Экспертом, линии почему-то удаляются.

Выход - нужно перезагрузить терминал.  

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\   Или есть способ по лучше - нужно в OnDeinit(const int reason) запретить удаления объектов  (в Индикаторе не в Эксперте)

//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   /*
      for(int i=0; i<ArraySize(m_name); i++)
        {
         ObjectDelete(0,m_name[i]);
        }
   */
//--- removes all objects of the specified type using prefix in object names
  }
//+------------------------------------------------------------------+

обновил

Algorithm manually automate
Algorithm manually automate
  • www.mql5.com
Эксперт для Автоматизации Ручной торговли.
 

на форуме про функцию напомнили https://www.mql5.com/ru/forum/365617#comment_21489434 я её не подключил, если кто пользуется Экспертом - может её сам подключить

вырезать её отсюда 

//+------------------------------------------------------------------+
ushort   InpSignalsFrequency=1;  // Search signals, in seconds (min value "1")
uint     maxLimits=1;            // Кол-во Позиции Открыть в одну сторону
uint     SLEEPTIME=1;            // Время паузы между повторами в секундах
uint     Deviation=10;           // Отклонение цены
bool     ObjRevers=false;        // Revers
//+------------------------------------------------------------------+

и вставить её сюда - только ещё добавить sinput

что бы получилось так 

sinput group "----------------- Lots Parameters ----------------------"
sinput uint               maxLimits                  = 1;                // Кол-во Позиции Открыть в одну сторону
sinput double             InpLots1                   = 0.01;             // : Lots 1
sinput int                InpLots_01                 = 3000;             // In currency the amount
sinput double             InpLots2                   = 0.02;             // : Lots 2
sinput int                InpLots_02                 = 6000;             // In currency the amount
sinput double             InpLots3                   = 0.04;             // : Lots 3
sinput int                InpLots_03                 = 12000;            // In currency the amount
sinput double             InpLots4                   = 0.08;             // : Lots 4


 

Причина обращения: