Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2543

 
Игорь #:

добавил, при компиляции не рисуется зигзаг.

Все рисует! Вы опять невнимательны.


 
Tretyakov Rostyslav #:
А он рисовал когда был отдельно?

Да.


 
Tretyakov Rostyslav #:

Все рисует! Вы опять невнимательны.


Добрый день. Я заново проверил все таймы (с м5 до w1), не рисует)


Вопрос. Вы что то в коде исправляли?
 
Игорь #:

Добрый день. Я заново проверил все таймы (с м5 до w1), не рисует)


Вопрос. Вы что то в коде исправляли?
Вы лучше проверьте разрешение рисовать "DrawZZ"
 
Tretyakov Rostyslav #:
DrawZZ

Подправил. Всё работает. Только, вот зигзаг должен быть не от сигнального индикатора, а от второго индикатора:

#property indicator_label1  "ZigZag"
#property indicator_type1   DRAW_SECTION
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3

А не от  индюка со стрелками:

//--- plot 
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrWhite
#property indicator_width3  5
#property indicator_color3  clrLime
#property indicator_width3  2
#property indicator_color4  clrBlue //C'0,128,255'
#property indicator_width4  7
#property indicator_type4   DRAW_ARROW
#property indicator_color5  clrRed //C'192,0,192'
...............
-//-
--------------

Почему у меня так. Потому, что один индюк фильтрует сигналы второго индюка.

 
Игорь #:

Подправил. Всё работает. Только, вот зигзаг должен быть не от сигнального индикатора, а от второго индикатора:

А не от  индюка со стрелками:

Почему у меня так. Потому, что один индюк фильтрует сигналы второго индюка.

Это уже в коде смотрите откуда ZZ берет данные.
 
Tretyakov Rostyslav #:
Это уже в коде смотрите откуда ZZ берет данные.

Ладно, пойдём от простого к сложному (если у меня полная "каша" если более 3 индикаторных буферов). Сейчас взял другой индюк (Macd). При этом когда, всё коментирую, что относится к макди  сигнал рисуется, когда совместно два индикатора, рисуется только макди. Вопрос почему не рисует стрелки. Да, ещё хочу Вам сказать спасибо, за Вашу помощь. Есть кому направить по нужному вектору).

#include <MovingAverages.mqh>
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 6//4
#property indicator_plots   4//2
// /*
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_type2   DRAW_LINE
#property indicator_color1  clrBlue
#property indicator_color2  clrMediumVioletRed
#property indicator_width1  2
#property indicator_width2  1
#property indicator_label1  "MACD"
#property indicator_label2  "Signal"
// */
// //*
#property indicator_type4   DRAW_ARROW
#property indicator_color4  clrWhite
#property indicator_width4  4
#property indicator_label4  "Up signal"
#property indicator_type5   DRAW_ARROW
#property indicator_color5  clrRed
#property indicator_width5  4
#property indicator_label5 "Down signal"
//
// */
sinput string  AA_Params = "Параметры MACD"; 
input int                InpFastEMA=12;               // Fast EMA period
input int                InpSlowEMA=26;               // Slow EMA period
input int                InpSignalSMA=9;              // Signal SMA period
input ENUM_APPLIED_PRICE InpAppliedPrice=PRICE_CLOSE; // Applied price
// /*
sinput string  EA_Params = "Параметры дополнительного сигнала"; 
input uint GSv_range=12;
input int Shift=0; // сдвиг индикатора по горизонтали в барах
input uint  UpLable=170;//значёк верхнего фрактала
input uint  DnLable=170;//значёк нижнего фрактала
// */
//--- indicator buffers
double ExtMacdBuffer[];
double ExtSignalBuffer[];
double ExtFastMaBuffer[];
double ExtSlowMaBuffer[];

int    ExtFastMaHandle;
int    ExtSlowMaHandle;
//
double HighestBuffer[];
double LowestBuffer[];

int    min_rates_total;

// /*
double h,l;
bool cur_h,cur_l;
bool draw_up,draw_dn,initfl;
int  fPoint_i,sPoint_i,s_up,s_dn,drawf,lb;
// */
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
     min_rates_total=2;

//--- indicator buffers mapping
   SetIndexBuffer(0,ExtMacdBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtSignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ExtFastMaBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,ExtSlowMaBuffer,INDICATOR_CALCULATIONS);
//
   SetIndexBuffer(4,LowestBuffer,INDICATOR_DATA); 
   SetIndexBuffer(5,HighestBuffer,INDICATOR_DATA); 
//---- запрет на отрисовку индикатором пустых значений
   PlotIndexSetDouble(4,PLOT_EMPTY_VALUE,NULL);
   PlotIndexSetDouble(5,PLOT_EMPTY_VALUE,NULL);  
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,InpSignalSMA-1);
   PlotIndexSetInteger(4,PLOT_ARROW,DnLable);
   PlotIndexSetInteger(5,PLOT_ARROW,UpLable);
// /*
//---- установка позиции, с которой начинается отрисовка уровней Боллинджера
    PlotIndexSetInteger(4,PLOT_DRAW_BEGIN,min_rates_total);
    PlotIndexSetInteger(5,PLOT_DRAW_BEGIN,min_rates_total);
   //---- осуществление сдвига индикатора по горизонтали на Shift
   PlotIndexSetInteger(4,PLOT_SHIFT,Shift);//2
   PlotIndexSetInteger(5,PLOT_SHIFT,Shift);//3
//---- индексация элементов в буферах как в таймсериях   
   ArraySetAsSeries(LowestBuffer,true);
   ArraySetAsSeries(HighestBuffer,true);
//--- создание имени для отображения в отдельном подокне и во всплывающей подсказке
//    IndicatorSetString(INDICATOR_SHORTNAME,"GannZIGZAG_Arrows");
// */
//--- name for indicator subwindow label
 //  string short_name=StringFormat("MACD(%d,%d,%d)",InpFastEMA,InpSlowEMA,InpSignalSMA);
  // IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- get MA handles
   ExtFastMaHandle=iMA(NULL,0,InpFastEMA,0,MODE_EMA,InpAppliedPrice);
   ExtSlowMaHandle=iMA(NULL,0,InpSlowEMA,0,MODE_EMA,InpAppliedPrice);
      IndicatorSetInteger(INDICATOR_DIGITS,_Digits);

  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
 
Игорь #:

Ладно, пойдём от простого к сложному (если у меня полная "каша" если более 3 индикаторных буферов). Сейчас взял другой индюк (Macd). При этом когда, всё коментирую, что относится к макди  сигнал рисуется, когда совместно два индикатора, рисуется только макди. Вопрос почему не рисует стрелки. Да, ещё хочу Вам сказать спасибо, за Вашу помощь. Есть кому направить по нужному вектору).

SetIndexBuffer и PlotIndexSet имеют раздельные индексации. В первом - индекс буфера, во втором линии плот

у тебя рисуется 4 линии (в #property задано) и в PlotIndexSet(..) могут быть значения от 0 до 3. Макд - 0 и 1, стрелки 2 и 3

Не вполне очевидным образом сделано, но потом все привыкли

 

коллеги! доброе утро! кто с индикаторами дружен и более в теме! помогите плиз - разобраться  - поддается ли iCustom и если да т о вариантом для робота напишите,

по сути там идет разности МА 1 и МА 2 двух символов и рисуются на графике линиями. Мне надо, (пока сам код индикатора загоняю в робота) в роботе на 0 ом 1 от и втором баре смотреть значение и их сравнивать этих двух линий разностей МА на двух символах. Для принятия торговых решений в роботе нужно понимание как минимум какая линия зеленая (первого символа) или синяя (второго) находится выше или ниже.

По мотивам этой ветки  - индикатор в о   вложении. Индикатор ценовых линий. Разности МА каждого символа и сделаны для того с коэфф -ми соответствующими цене каждого символа спреда - чтобы их считать можно было в одной системе координат. Т.е. уйти от прямого сравнения цен спреда именно в разности МА 1 и МА 2.

ИНдикатор во вложении. 

вот он к примеру тут используется - второй индикатор сверху для металлов.

Пока напрямую переношу ф-ии и код расчета значений линий ценовых с индикатора в робота.

Хотелось бы поэлегантнее может есть  возможность с iCustom..... спс.

Торговля спредами в Meta Trader-е - В терминале МТ4 вижу, что волатильны CFD фьючерсы одного товара с разными месяцами поставки. Закройте позицию строго в точке схождения ценовых линий
Торговля спредами в Meta Trader-е - В терминале МТ4 вижу, что волатильны CFD фьючерсы одного товара с разными месяцами поставки. Закройте позицию строго в точке схождения ценовых линий
  • 2011.12.23
  • Alexey Burnakov
  • www.mql5.com
что волатильны CFD фюьчерсы одного товара с разными месяцами поставки. что если я собираюсь совершать арбитражные сделки на двух CFD futures на один товар. Многие ДЦ дают одновременно только один месячный future cfd
Файлы:
 
Roman Shiredchenko #:
по сути там идет разности МА 1 и МА 2 двух символов и рисуются на графике линиями. Мне надо, (пока сам код индикатора загоняю в робота) в роботе на 0 ом 1 от и втором баре смотреть значение и их сравнивать этих двух линий разностей МА на двух символах. Для принятия торговых решений в роботе нужно понимание как минимум какая линия зеленая (первого символа) или синяя (второго) находится выше или ниже.

удивительный талант постановки задач и точных технических формулировок :-)

так чего надо-то ?

---

просто посчитать средние от разных символов и получить разницу этих средних ??

это привести цены в один общий тайминг (заполнить пропущенные бары или убрать лишнее), посчитать там средние и получить разницу. всё.