0
Ясно, спасибо что не отказали.
avatar

alex30774

  • 20 мая 2021, 05:38
0
Извините запямятовал, в виде кода подойдёт

//+------------------------------------------------------------------+
//|                                                  MACD Signal.mq4 |
//|                              Copyright © 2011, Khlystov Vladimir |
//|                                         http://cmillion.narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, cmillion@narod.ru"
#property link      "http://cmillion.narod.ru"
#property  indicator_separate_window
#property  indicator_buffers 6
#property  indicator_color1  Black
#property  indicator_color2  Gray
#property  indicator_color3  Green
#property  indicator_color4  Red
#property  indicator_color5  Blue
#property  indicator_color6  Red
#property  indicator_width7  2

extern int FastEMA   = 12;
extern int SlowEMA   = 26;
extern int SignalSMA = 9;

double     MacdBuffer[];
double     MacdBufferRed[];
double     MacdBufferBlue[];
double     SignalBuffer[];
double     SignalBufferRed[];
double     SignalBufferBlue[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,SignalSMA);
   IndicatorDigits(Digits+1);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexStyle(4,DRAW_ARROW,0,2);
   SetIndexArrow(4,233);
   SetIndexStyle(5,DRAW_ARROW,0,2);
   SetIndexArrow(5,234);

   SetIndexBuffer(0,MacdBuffer);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexBuffer(2,MacdBufferRed);
   SetIndexBuffer(3,MacdBufferBlue);
   SetIndexBuffer(4,SignalBufferRed);
   SetIndexBuffer(5,SignalBufferBlue);

   IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)  return(-1);
   if(counted_bars > 0)   counted_bars--;
   int limit = Bars - counted_bars;
   if(counted_bars==0) limit-=1+1;

   for(int i=0; i<limit; i++)
      MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

   for(i=0; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

   for(i=0; i<limit; i++)
      if(MacdBuffer[i+1]<MacdBuffer[i]) MacdBufferRed[i]=MacdBuffer[i];
   else MacdBufferBlue[i]=MacdBuffer[i];

   for(i=0; i<limit; i++)
     {
      if(SignalBuffer[i+1]<MacdBuffer[i+1]&& SignalBuffer[i]>MacdBuffer[i]) SignalBufferBlue[i]=SignalBuffer[i];
      if(SignalBuffer[i+1]>MacdBuffer[i+1] && SignalBuffer[i]<MacdBuffer[i]) SignalBufferRed[i]=SignalBuffer[i];
     }

   return(0);
  }
//+------------------------------------------------------------------+
avatar

alex30774

  • 18 мая 2021, 05:49
0
Если это сложно, то хотя бы сделайте по двум условиям:
индикатор должен выставлять стрелки на покупку при условии, что индикатор MACD_Signal ниже нуля, текущая стрелка выше предыдущей.На продажу зеркально.
avatar

alex30774

  • 17 мая 2021, 05:18
0
Я тоже не понял, как опрелелить когда открывать селл, а когда бай.И не один индикатор это не показывает, так зачем его покупать.
По подробнее на скриншотах разЪясни.

avatar

alex30774

  • 18 апреля 2021, 20:37
0
А как бы нам мониторинг с реального счёта увидить. Уж очень хочется убедится что этим советником можно на реальных счетах зарабатывать, а не только с комиссий на партнёрках.
avatar

alex30774

  • 16 апреля 2021, 18:50
0
если вы сказали не надо доделывать, править не буду

самый простой вариант
avatar

alex30774

  • 14 апреля 2021, 20:14
0
Тогда почему у меня на 1Н и 15М не работает


настройки по умолчанию

А если параметр Flet поставить больше 12, то на большенстве таймфреймов не показывает, хотя условия выполняются.
avatar

alex30774

  • 14 апреля 2021, 19:30
0
Спасибо за вашу работу, но индикатор ставит стрелки не по моей задумке.А на некоторых таймфреймах вообще не ставит стрелки.
Ну и чёрт с ним.Раз не получается как надо то и не нужно с ним возится(доделывать).
У меня ещё вопрос: а функцию BarsBetweenLastFractals нельзя к индикаторам прикручивать или она только для советников.
avatar

alex30774

  • 14 апреля 2021, 13:49
0
Нет, мне надо, чтоб после закрытия бара или даже двух стрелки не убирались. А то индикатор наставит несколько стрелок, а потом после смены тайфрейма (на новый и обратно)оставляет только последнию стрелку.
И мне кажется RSI по цене open не рисует.А по остальным ценам точно рисует.

Вобщем мне нужен индикатор отфильтровывающий флет.То есть появился сигнал (бай или сел не важно) и с момента предпоследнего сигнала(не важно кокого) прошло не меньше N-го количества баров то тогда сигнал учитывается и ставится стрелка.

P.S.Может Кимовская функция вам как-то даст подсказку или облегчит работу.
<code>//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 10.06.2008                                                     |
//|  Описание : Возвращает количество баров между двумя последними фракталами. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    tf - таймфрейм                       (    0       - текущий ТФ)         |
//+----------------------------------------------------------------------------+
int BarsBetweenLastFractals(string sy="", int tf=0) {
  double fu=0, fd=0;
  int    i, nu=0, nd=0;

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=2; i<100; i++) {
    fu=iFractals(sy, tf, MODE_UPPER, i);
    if (fu!=0) {
      if (nu==0) nu=i;
    }
    fd=iFractals(sy, tf, MODE_LOWER, i);
    if (fd!=0) {
      if (nd==0) nd=i;
    }
    if (nu>0 && nd>0) return(MathAbs(nu-nd));
  }
  Print("BarsBetweenLastFractals(): Фракталы не найдены");
  return(-1);
}
</code>


avatar

alex30774

  • 13 апреля 2021, 10:08
0
Протестировал и на демо и в тестере, не устраивает меня такой вариант, потому что рисует и оставляет только последнию стрелку.
А мне надо чтоб не рисовал и выводил все стрелки которые соответствуют условиям.
avatar

alex30774

  • 12 апреля 2021, 14:41
0
Спасибо, буду ждать.
avatar

alex30774

  • 10 апреля 2021, 21:14
0
Индикатор RSI_Divergence_2 поишите в интернете. Там есть и класическая и скрытая дивергенция, причём отключаемые.Можно выбрать одну из двух или сразу обе.
avatar

alex30774

  • 2 апреля 2021, 17:17
0
Да нет, теперь всё понятно: если нет столбика на предыдущей свече то пробитие уровней(хай/лоу) предыдущей свечи.Только есть ли в этом толк.
avatar

alex30774

  • 18 марта 2021, 13:35
0
А как ты сигналы бай и селл отличаешь между собой.
avatar

alex30774

  • 15 марта 2021, 21:27
0
Игрун, у тебя на первом скриншоте верхний левый патерн противоречит трём остальным, из-за этого тех.задание становится непонятным(сбивает столку).Если же у тебя там всё верно, тогда мне тоже ни фига нечего не понятно(что уж говорить про программистов, которые трейдингом вообще не занимаются)
avatar

alex30774

  • 4 марта 2021, 13:02