Скачать MetaTrader 5

перенести действия индикатора ColorCandlesDaily в окно графика

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь написать торгового робота? Загляни в Справочник MQL5!
retired
83
retired 2014.11.20 11:19 

Подскажите пожалуйста, как заставить пользовательский индикатор ColorCandlesDaily раскрашивать свечи (бары) не в отдельном окне, как делает он сейчас, а в окне графика, то есть раскрашивать сам график.

 

смена кода #property indicator_separate_window

на #property indicator_chart_window

не помогла.

 

Заранее благодарю.

Sergey Dzyublik
4817
Sergey Dzyublik 2014.11.20 11:23  
Все прям обязаны знать что за ColorCandlesDaily
и для 4-ки или 5-ки вам это надо. 
Ссылку в студию.
retired
83
retired 2014.11.20 11:44  
ALXIMIKS:
Все прям обязаны знать что за ColorCandlesDaily
и для 4-ки или 5-ки вам это надо. 
Ссылку в студию.

Насчёт ссылки не знаю, поищу.

Но данный пользовательский индикатор есть только в МТ5. Там же можно увидеть и его код.

retired
83
retired 2014.11.20 11:47  
ALXIMIKS:
Все прям обязаны знать что за ColorCandlesDaily
и для 4-ки или 5-ки вам это надо. 
Ссылку в студию.

Вот его короткий код:

//+------------------------------------------------------------------+
//|                                            ColorCandlesDaily.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots   1
//---- plot ColorCandles
#property indicator_type1   DRAW_COLOR_CANDLES
#property indicator_label1  "Open;High;Low;Close"
//--- indicator buffers
double ExtOpenBuffer[];
double ExtHighBuffer[];
double ExtLowBuffer[];
double ExtCloseBuffer[];
double ExtColorsBuffer[];
//---
color  ExtColorOfDay[6]={CLR_NONE,MediumSlateBlue,DarkGoldenrod,ForestGreen,BlueViolet,Red};
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtOpenBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ExtHighBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,ExtLowBuffer,INDICATOR_DATA);
   SetIndexBuffer(3,ExtCloseBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,ExtColorsBuffer,INDICATOR_COLOR_INDEX);
//--- set number of colors in color buffer
   PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,6);
//--- set colors for color buffer
   for(int i=1;i<6;i++)
      PlotIndexSetInteger(0,PLOT_LINE_COLOR,i,ExtColorOfDay[i]);
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
   printf("We have %u colors of days",PlotIndexGetInteger(0,PLOT_COLOR_INDEXES));
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   int         i;
   MqlDateTime tstruct;
//----
   if(prev_calculated<1) i=0;
   else                  i=prev_calculated-1;
//----
   while(i<rates_total && !IsStopped())
     {
      ExtOpenBuffer[i]=open[i];
      ExtHighBuffer[i]=high[i];
      ExtLowBuffer[i]=low[i];
      ExtCloseBuffer[i]=close[i];
      //--- set color for every candle
      TimeToStruct(time[i],tstruct);
      ExtColorsBuffer[i]=tstruct.day_of_week;
      //---
      i++;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Vladimir Karputov
Модератор
46014
Vladimir Karputov 2014.11.20 11:48  
Этот индикатор?
ColorCandlesDaily
ColorCandlesDaily
  • голосов: 15
  • 2010.01.26
  • MetaQuotes Software Corp.
  • www.mql5.com
Индикатор ColorCandlesDaily рисует свечи различным цветом в зависимости от дня недели.
Vladimir Karputov
Модератор
46014
Vladimir Karputov 2014.11.20 11:58  

В общем смело ставьте

#property indicator_chart_window

 и будут цветные свечи прямо на графике. Задержки с отрисовкой могут быть связаны с подкачкой истории.

retired
83
retired 2014.11.20 12:15  
barabashkakvn:

В общем смело ставьте

 и будут цветные свечи прямо на графике. Задержки с отрисовкой могут быть связаны с подкачкой истории.

Перечитайте первый пост. Это первое, что я сделал. Не помогло.

Vladimir Karputov
Модератор
46014
Vladimir Karputov 2014.11.20 12:20  
retired:

Перечитайте первый пост. Это первое, что я сделал. Не помогло.

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

1 

Vladimir Karputov
Модератор
46014
Vladimir Karputov 2014.11.20 12:22  

Точно после редактирования компилировали?

Удалите индикатор с графика; в редакторе скомпилируйте еще раз; добавьте индикатор на график.

retired
83
retired 2014.11.20 12:30  
barabashkakvn:

Точно после редактирования компилировали?

Удалите индикатор с графика; в редакторе скомпилируйте еще раз; добавьте индикатор на график.

Так и делал с самого начала, но результат тот же - см. рисунок.


Vladimir Karputov
Модератор
46014
Vladimir Karputov 2014.11.20 12:55  

Вы точно делаете так:

  1. Удалить индикатор с графика
  2. Скомпилировать индикатор
  3. Добавить индикатор на график

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