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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от axe44



Крутые памм-счета Комментариев 6
2017-10-24 11:58:58Рейтинг 0

БКС Комментариев 8
2017-08-11 02:57:12Рейтинг 0

торги
2017-01-26 00:01:37Рейтинг 0

HelloDual v3.0 Комментариев 3
2017-11-19 02:21:03Рейтинг 0

Создание советников бесплатно Комментариев 2
2017-07-16 22:54:20Рейтинг 0

Нужно что бы советник(не индикатор) начертил немного линий. Требуется поручитель.

Всех приветствую.

Допустим есть размер свечки «Х» на расстоянии экстремум + спред выставляем первую линию, на втором уровне эктремум + расстояние «У» второй уровень + линия по центру.



С точки зрения логики ничего сложного, но стоит заглянуть на ресурс документации, как становиться понятным что всё непонятно. Это для индикатора или всё же для советника и потом как реализовать это в роботе?

Спасибо за любую помощь
  • 0
  • Просмотров: 1217
  • 22 августа 2021, 04:09
  • axe44
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
вот образец кода:


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

input int telo=250;
input int delta=20;
input int sigma=50;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,0);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(MathAbs(Close[1]-Open[1])>telo*_Point)
     {
      PutTrendLine("up1",Time[1],High[1]+delta*_Point,Time[1]+PeriodSeconds()*10,High[1]+delta*_Point,Red);
      PutTrendLine("up2",Time[1],High[1]+sigma*_Point,Time[1]+PeriodSeconds()*10,High[1]+sigma*_Point,Red);

      PutTrendLine("dn1",Time[1],Low[1]-delta*_Point,Time[1]+PeriodSeconds()*10,Low[1]-delta*_Point,Red);
      PutTrendLine("dn2",Time[1],Low[1]-sigma*_Point,Time[1]+PeriodSeconds()*10,Low[1]-sigma*_Point,Red);

      PutTrendLine("mid",Time[1],(High[1]+Low[1])/2,Time[1]+PeriodSeconds()*10,(High[1]+Low[1])/2,Aqua);
     }
  }
//+------------------------------------------------------------------+



avatar

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

  • 22 августа 2021, 09:11
+
0
Прям сразу спасибо большое!*zapoy* 
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 22 августа 2021, 11:04
+
0
Добавил функцию удаления всех объектов при смене символа или времени на графике

void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();             // удаляются все объекты с графика.

  }


Так же изменил отображение на графике. Теперь идёт поиск всех свечек по указанным параметрам и чертим линии.


   for(int i=24; i>=0; i--)
     {

      if(MathAbs(Close[i]-Open[i])>telo*_Point)
        {
         PutTrendLine("up1",Time[i],High[i]+delta*_Point,Time[i]+PeriodSeconds()*10,High[i]+delta*_Point,Red);
         PutTrendLine("up2",Time[i],High[i]+sigma*_Point,Time[i]+PeriodSeconds()*10,High[i]+sigma*_Point,Red);

         PutTrendLine("dn1",Time[i],Low[i]-delta*_Point,Time[i]+PeriodSeconds()*10,Low[i]-delta*_Point,Red);
         PutTrendLine("dn2",Time[i],Low[i]-sigma*_Point,Time[i]+PeriodSeconds()*10,Low[i]-sigma*_Point,Red);

         PutTrendLine("mid",Time[i],(High[i]+Low[i])/2,Time[i]+PeriodSeconds()*10,(High[i]+Low[i])/2,Aqua);
        }

     }


Но каждый раз их чертить наверно не стоит, если они уже есть
Поэтому сделал эту функцию через таймер в один час, а так же удаляю все объекты тоже каждый час.
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 22 августа 2021, 12:07
+
0
И сразу ошибка.

На графике по данным параметрам создаётся только один объект и только на последней свечке, хотя понятно, что с такими требованиями должны были бы создаваться объекты на каждой.



Как это можно исправить?
Редактирован: 22 августа 2021, 12:20
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 22 августа 2021, 12:19
+
0
Нашёл проблему. Проблема была в названии)))

if(ti!=iTime(NULL,TF1,0))
     {

      ti=iTime(NULL,TF1,0);

      ObjectsDeleteAll();             // удаляются все объекты с графика.
      
      for(int i=Step; i>=1; i--)
        {

         if(MathAbs(Close[i]-Open[i])>telo*_Point)
           {
            PutTrendLine("up1"+DoubleToStr(i,0),Time[i],High[i]+delta*_Point,Time[i]+PeriodSeconds()*10,High[i]+delta*_Point,Red);
            PutTrendLine("up2"+DoubleToStr(i,0),Time[i],High[i]+sigma*_Point,Time[i]+PeriodSeconds()*10,High[i]+sigma*_Point,Red);

            PutTrendLine("dn1"+DoubleToStr(i,0),Time[i],Low[i]-delta*_Point,Time[i]+PeriodSeconds()*10,Low[i]-delta*_Point,Red);
            PutTrendLine("dn2"+DoubleToStr(i,0),Time[i],Low[i]-sigma*_Point,Time[i]+PeriodSeconds()*10,Low[i]-sigma*_Point,Red);

            PutTrendLine("mid"+DoubleToStr(i,0),Time[i],(High[i]+Low[i])/2,Time[i]+PeriodSeconds()*10,(High[i]+Low[i])/2,Aqua);
           }

        }
     }
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 22 августа 2021, 12:23
+
0


Получилось как то так на битке.

Но опять понятно, что ничего не понятно.
Как торговать по этим данным? Есть ли польза?
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 22 августа 2021, 12:37
+
0
Полный обзор графика за 10 суток.



Если кто знает как торговать по данным, прошу оставить комментарии
avatar

  13  axe44 Автор Сообщений: 1149 - Алек

  • 22 августа 2021, 12:56
+
0
На голубой вход, на красной стоп и тейк
avatar

  5  Gatti Сообщений: 53

  • 23 августа 2021, 16:16

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