alex30774

 
Уровень 20

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Индикатор: сигнал на максимальном/минимальном столбике индикаиора MACD

Здравствуйте, Андрей.

Напишите пожалуйста стрелочный индикатор, который бы ставил стрелку на максимальном и минимальном столбике гистограммы индикатора MACD.
Стрелка вниз(на продажу)ставится на самом высоком столбике, при условии: MACD выше нуля, третий столбик(можно четвёртый или больше, но не меньше трёх) справа выше остальных с момента пересечения нулевой линии вверх.То есть должно быть подтверждении.Допускается перерисовка по мере роста индикатора.Но между пересечениями всегда должна быть одна стрелка

Для покупок зеркально:
Стрелка вверх(на покупку)ставится на самом низком столбике, при условии: MACD ниже нуля, третий столбик(можно четвёртый или больше, но не меньше трёх) справа ниже остальных с момента пересечения нулевой линии вверх.То есть должно быть подтверждении.Допускается перерисовка по мере роста индикатора.Но между пересечениями всегда должна быть одна стрелка

И у стрелок должны быть буферы.Если сложно сделать стрелки в окне индикатора(хотя мне этот вариант предпочтительней), то можно и на основном графике.

  • 0
  • Просмотров: 2023
  • 14 июня 2021, 20:21
  • alex30774
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
+1
на 18-е
avatar

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

  • 15 июня 2021, 20:45
+
0
Спасибо.
avatar

  20  alex30774 Автор Сообщений: 748

  • 15 июня 2021, 21:21
+
0
сделал то что можно было быстро сделать:




//+------------------------------------------------------------------+
//|                                                  Custom MACD.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Averages Convergence/Divergence"
#property strict

#include <MovingAverages.mqh>

//--- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Silver
#property  indicator_color2  Red
#property  indicator_width1  2

//--- indicator parameters
input int InpFastEMA=12;   // Fast EMA Period
input int InpSlowEMA=26;   // Slow EMA Period
input int InpSignalSMA=9;  // Signal SMA Period

//--- indicator buffers
double    ExtMacdBuffer[];
double    ExtSignalBuffer[];
double    up[];
double    dn[];

//--- right input parameters flag
bool      ExtParameters=false;

bool b=1,s=1;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   IndicatorDigits(Digits+1);
//--- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,InpSignalSMA);

//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMacdBuffer);
   SetIndexBuffer(1,ExtSignalBuffer);

   SetIndexStyle(2,DRAW_ARROW,0,1,Aqua);
   SetIndexArrow(2,233);
   SetIndexBuffer(2,up);

   SetIndexStyle(3,DRAW_ARROW,0,1,Red);
   SetIndexArrow(3,234);
   SetIndexBuffer(3,dn);

//--- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD("+IntegerToString(InpFastEMA)+","+IntegerToString(InpSlowEMA)+","+IntegerToString(InpSignalSMA)+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
//--- check for input parameters
   if(InpFastEMA<=1 || InpSlowEMA<=1 || InpSignalSMA<=1 || InpFastEMA>=InpSlowEMA)
     {
      Print("Wrong input parameters");
      ExtParameters=false;
      return(INIT_FAILED);
     }
   else
      ExtParameters=true;
//--- initialization done
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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[])
  {
   int i,limit;
//---
   if(rates_total<=InpSignalSMA || !ExtParameters)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit++;
//--- macd counted in the 1-st buffer
   for(i=0; i<limit; i++)
      ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
                       iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated,0,InpSignalSMA,ExtMacdBuffer,ExtSignalBuffer);

   for(int i=0; i<1111; i++)
     {
      if(ExtMacdBuffer[i]<0 && ExtMacdBuffer[i]>ExtMacdBuffer[i+1] && ExtMacdBuffer[i+1]<ExtMacdBuffer[i+2] && b)
        {
         up[i]=ExtMacdBuffer[i+1];
         b=0;s=1;
        }

      if(ExtMacdBuffer[i]>0 && ExtMacdBuffer[i]<ExtMacdBuffer[i+1] && ExtMacdBuffer[i+1]>ExtMacdBuffer[i+2] && s)
        {
         dn[i]=ExtMacdBuffer[i+1];
         b=1;s=0;
        }
     }
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

avatar

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

  • 17 июня 2021, 21:44
+
0
Спасибо, протестируем
avatar

  20  alex30774 Автор Сообщений: 748

  • 17 июня 2021, 22:24
+
0
Протестировал, совсем не то получилось.
avatar

  20  alex30774 Автор Сообщений: 748

  • 18 июня 2021, 18:31
+
0
я в выходные еще посмотрю
avatar

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

  • 18 июня 2021, 18:38
+
0
Хорошо, спасибо.

Может из какого-нибудь рисовальщика сумеете переписать.
Редактирован: 18 июня 2021, 20:08
avatar

  20  alex30774 Автор Сообщений: 748

  • 18 июня 2021, 19:58
+
0
по макди буду делать как в тз, только буду писать функцию чтобы считала максимум минимум до пересечения
avatar

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

  • 18 июня 2021, 20:31
+
0
по макди буду делать как в тз, только буду писать функцию чтобы считала максимум минимум до пересечения

Я только за.

Может из какого-нибудь рисовальщика сумеете переписать.


Похоже я не удачно попробовал дать совет
avatar

  20  alex30774 Автор Сообщений: 748

  • 18 июня 2021, 21:57
+
0
Андрей, вы наверное про мой индикатор забыли?
avatar

  20  alex30774 Автор Сообщений: 748

  • 22 июня 2021, 20:28
+
0
не забыл. быстро не сделаешь. не ко мне
avatar

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

  • 22 июня 2021, 22:49

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