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

Рейтинг 2081



РЕКОМЕНДУЮ



Сделать советник

Здравствуйте. Сможете сделать советник, такой же, как на этом видео. www.opentraders.ru/tag/%D0%A1%D0%BE%D0%B2%D0%B5%D1%82%D0%BD%D0%B8%D0%BA%20LevelsPainter/
  • 0
  • Просмотров: 4115
  • 25 ноября 2018, 13:28
  • igordar
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
советник на стохастике плюс 2 свечи
Следующая запись в группе  
Добавление функции в советник
24 ноября 2018
26 ноября 2018

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

+
0
тз рассмотрю
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 14:22
+
0
по клику строит уровень и ставит метку: www.opentraders.ru/downloads/2173/

avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 16:20
+
0
Андрей можно чтобы была возможность
1)регулировать в право длину линии и метки и она автоматически продлевалась при подходе к ней цены.
2)можно сделать чтобы при клике на уровне к нему подтягивался уровень и уровень становился точно как надо. А то когда я пытаюсь подкорректировать уровень кликаю два раза чтобы его выделить строятся лишние и их сложно удалить.
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 17:02
+
0
опишите целиком алгоритм
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 19:17
+
0
1) кликаю мышкой в любом месте и появляется уровень с меткой, я его перетаскиваю на любое место в данном инструменте. Например выставляю по хай или лоу. Экстремумы должны как присоска точно притягиваться.
2) в функциях советника поставить: отступ от правого края, бары кол-во — например 35. Для автоматического регулирования в право уровня и метки.
3) Возможность удаления не нужного уровня прям с графика.
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 19:57
+
0
такой вариант я не представляю как сделать, а если сразу не видно решение, то это долго и значит не ко мне
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 20:11
+
0
Сделайте хотя-бы это
1) в функциях советника поставить: отступ от правого края, бары кол-во — например 35. Для автоматического регулирования в право уровня и метки.
2) Возможность удаления не нужного уровня прям с графика.
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 20:13
+
0
смещение на указанное число баров вправо сделал:



www.opentraders.ru/downloads/2173/
Редактирован: 25 ноября 2018, 20:56
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 20:52
+
0
Возможность удаления не нужного уровня прям с графика эту функцию очень сложно сделать?
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 21:01
+
0
нужно все переписывать, делать установку уровня не по клику а каким то другим образом.
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 21:06
+
0
Сейчас если случайно мышкой кликнул по графику строятся не нужные уровни и их не возможно удалить.
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 21:10
+
0
удалите в списке объектов
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 21:15
+
0
ну тогда смещение баров в право не будет автоматически обновляться
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 21:23
+
0
узнайте у артема каким образом реализуется этот момент и тогда в следующем топе можно будет доделать
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 21:32
+
0
Я с ним не знаком, он мне не скажет.
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 21:33
+
0
тогда надо будет писать функцию которая будет пробегаться по графическим объектам и изменять координату по времени на каждом открытии бара
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 21:41
+
0
Сможете сделать?
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 21:42
+
0
в следующем топе
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 21:43
+
0
ok
avatar

  7  igordar Автор Сообщений: 147

  • 25 ноября 2018, 21:55
+
0
пока тормознулся на том что функция модифицирует линию но метку не берет. можешь пока узнать на мкл почему так, чтобы процесс быстрей пошел.




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

input int LineWidth=1;
input int LineStyle=3;
input color LineColor=Red;

input int LabelWidth=1;
input color LabelColor=Red;

input int BarsCount=10;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ModeObjects();
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2)
  {
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,LineColor);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,LineStyle);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,LineWidth);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ModeObjects()
  {
   for(int i=ObjectsTotal()-1;i>=0;i--)
     {
      if(ObjectType(ObjectName(i))==OBJ_TREND) ObjectSet(ObjectName(i),OBJPROP_TIME2,Time[0]+PeriodSeconds()*BarsCount);
      if(ObjectType(ObjectName(i))==OBJ_ARROW_RIGHT_PRICE) ObjectSet(ObjectName(i),OBJPROP_TIME,Time[0]+PeriodSeconds()*BarsCount);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRightLabel(string name,datetime time,double price)
  {
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,time,price);
//--- установим размер метки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,LabelWidth);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,LabelColor);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- если это события клика мышки на графике
   if(id==CHARTEVENT_CLICK)
     {
      //--- подготовим переменные
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
      //--- преобразуем координаты X и Y  в терминах дата/время
      if(ChartXYToTimePrice(0,x,y,window,dt,price))
        {
         PutTrendLine("Line"+(string)price,dt,price,Time[0]+PeriodSeconds()*BarsCount,price);
         PutRightLabel("Label"+(string)price,Time[0]+PeriodSeconds()*BarsCount,price);
         ChartRedraw(0);
        }
     }
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 25 ноября 2018, 22:32
+
0
извини, но я не знаю как это делается.
avatar

  7  igordar Автор Сообщений: 147

  • 26 ноября 2018, 05:21
+
0
пробовал на мкл узнать, пока нет ответа: www.mql5.com/ru/forum/292012
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 26 ноября 2018, 17:52
+
0
там уже есть ответ
Исправил
<code>
void ModeObjects()
  {
   for(int i=ObjectsTotal()-1;i>=0;i--)
     {
      if(ObjectType(ObjectName(i))==OBJ_TREND) ObjectSet(ObjectName(i),OBJPROP_TIME2,Time[0]+PeriodSeconds()*BarsCount);
      if(ObjectType(ObjectName(i))==OBJ_ARROW_RIGHT_PRICE) ObjectSet(ObjectName(i),OBJPROP_TIME1,Time[0]+PeriodSeconds()*BarsCount);
     }
  }
</code>

вместо
OBJPROP_TIME надо OBJPROP_TIME1 это координата 1-ой точки

Редактирован: 26 ноября 2018, 19:33
avatar

  16  cerber04 Сообщений: 409

  • 26 ноября 2018, 19:33
+
0
снова совместными усилиями :)  www.opentraders.ru/downloads/2173/
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 26 ноября 2018, 19:56
+
0
Спасибо большое.
Сейчас если случайно мышкой кликнул по графику строятся не нужные уровни и их не возможно удалить.Это сложно подправить?
avatar

  7  igordar Автор Сообщений: 147

  • 26 ноября 2018, 20:23
+
0
я уже писал что нужно будет всю логику перекраивать. удаляйте ненужные в списке объектов.
avatar

  34  AM2 Сообщений: 15862 - Андрей

  • 26 ноября 2018, 20:33
+
0
Спасибо вам. Очень хороший получился индикатор для построения уровней. Жалко только, что сильно пачкает экран, много лишних следов.
avatar

  7  igordar Автор Сообщений: 147

  • 26 ноября 2018, 20:45

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