Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1229

 
Elena Baranova:

Уважаемые профи, подскажите пожалуйста, можно в ли коде советника каким-то образом получить значения RSI для недельного таймфрейма, но чтобы значения рассчитывались за неделю, начинающуюся не с понедельника, а например со среды(то есть за  неделю со среды до след среды)  . С помощью iRSI как я понимаю это не получится?

Пока я вижу только способ самой писать код для рассчета. А есть ли более простое или уже готовое решение?

Если Вы создаёте хендл индикатора на таймфрейме W1 - это означает, что индикатор будет рассчитываться на барах W1: один бар, то одна неделя.

Вам же нужно создавать хендл индикатора на таймфрейме D1 (дневном таймфрейме).


А вообще смысл фразы "(то есть за  неделю со среды до след среды)" - вообще не ясен. Нет никакой разницы с какого дня начинается неделя - индикатор рассчитывается на барах.

 
Vladimir Karputov:

Если Вы создаёте хендл индикатора на таймфрейме W1 - это означает, что индикатор будет рассчитываться на барах W1: один бар, то одна неделя.

Вам же нужно создавать хендл индикатора на таймфрейме D1 (дневном таймфрейме).


А вообще смысл фразы "(то есть за  неделю со среды до след среды)" - вообще не ясен. Нет никакой разницы с какого дня начинается неделя - индикатор рассчитывается на барах.

Да я про бары понимаю все. Но  все недельные бары начинаются с понедельника. Поэтому чтобы получить например за неделю со среды до среды, видимо нужно самой писать код на основе дневных баров 

Я тоже не до конца понимаю смысл такого рассчета, но заказчик попросил. 

 
Elena Baranova:

Да я про бары понимаю все. Но  все недельные бары начинаются с понедельника. Поэтому чтобы получить например за неделю со среды до среды, видимо нужно самой писать код на основе дневных баров 

Я тоже не до конца понимаю смысл такого рассчета, но заказчик попросил. 

У него Советник открывает сделки основываясь на показателях RSI. А для недельного таймфрейна получается, что сделки открываются только по понедельникам, с открытием нового недельного бара, а его видимо это не устраивает.

 
Elena Baranova:

Да я про бары понимаю все. Но  все недельные бары начинаются с понедельника. Поэтому чтобы получить например за неделю со среды до среды, видимо нужно самой писать код на основе дневных баров 

Я тоже не до конца понимаю смысл такого рассчета, но заказчик попросил. 

Не могу понять физический смысл. Посему удаляюсь.

 

Помогите решить проблему с отображением графиков в MT5.  График постоянно обновляется и перетаскивается влево. И это на всех инструментах. 

Дальше он продолжает смещение на максимальную историю. В общем не может он нормально отобразить информацию за последнюю неделю. постоянно исчезают свечи последнего дня, он мигает и двигается влево. Как исправить?

 
Александр:

Помогите решить проблему с отображением графиков в MT5.  График постоянно обновляется и перетаскивается влево. И это на всех инструментах. 

Дальше он продолжает смещение на максимальную историю. В общем не может он нормально отобразить информацию за последнюю неделю. постоянно исчезают свечи последнего дня, он мигает и двигается влево. Как исправить?

Это машина времени просто :)

Может у Вас запущены какие скрипты/советники/индикаторы - они могут смещать график.

 
Александр:

Помогите решить проблему с отображением графиков в MT5.  График постоянно обновляется и перетаскивается влево. И это на всех инструментах. 

Дальше он продолжает смещение на максимальную историю. В общем не может он нормально отобразить информацию за последнюю неделю. постоянно исчезают свечи последнего дня, он мигает и двигается влево. Как исправить?

Удалите запущенные индикаторы и советники. Уберите кошку с клавиатуры. Очистите клавиатуру от пролитого кофе.

 
Vladimir Karputov:

Удалите запущенные индикаторы и советники. Уберите кошку с клавиатуры. Очистите клавиатуру от пролитого кофе.

Спасибо за совет. Проблема решена, нужно было просто выбрать сервер с большим пингом.

 

Объясните, пожалуйста, почему не заштрихована синяя область? И как это исправить?
Возможно ли вообще в одном индикаторе выдать две гистограммы?

#property indicator_chart_window                   
#property indicator_buffers   8                    
#property indicator_plots     8                    

#property indicator_color1    clrRed                
#property indicator_style1    STYLE_SOLID          
#property indicator_color2    clrRed               
#property indicator_style2    STYLE_SOLID          
#property indicator_color3    clrRed               
#property indicator_style3    STYLE_DOT            

#property indicator_color5    clrDodgerBlue        
#property indicator_style5    STYLE_SOLID          
#property indicator_color6    clrDodgerBlue        
#property indicator_style6    STYLE_SOLID          
#property indicator_color7    clrDodgerBlue        
#property indicator_style7    STYLE_DOT            

double
   Line_High_Up[], Line_High_Dn[], Hist_High_Up[], Hist_High_Dn[],
   Line_Low_Up[],  Line_Low_Dn[],  Hist_Low_Up[],  Hist_Low_Dn[];
   

void OnInit() 
   { 
   SetIndexBuffer     (0, Line_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(0, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (1, Line_High_Dn,      INDICATOR_DATA); 
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (2, Hist_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(2, PLOT_DRAW_TYPE,    DRAW_HISTOGRAM2);
   SetIndexBuffer     (3, Hist_High_Dn,      INDICATOR_DATA);

   SetIndexBuffer     (4, Line_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(4, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (5, Line_Low_Dn,       INDICATOR_DATA);
   PlotIndexSetInteger(5, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (6, Hist_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(6, PLOT_DRAW_TYPE,    DRAW_HISTOGRAM2);
   SetIndexBuffer     (7, Hist_Low_Dn,       INDICATOR_DATA);
   }


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;
   for(i=prev_calculated; i<=rates_total-1; i++)      
      {
      Line_High_Dn[i] = Hist_High_Dn[i] = high[i];
      Line_High_Up[i] = Hist_High_Up[i] = Line_High_Dn[i] + 20*_Point;

      Line_Low_Up[i]  = Hist_Low_Up[i]  = low[i];
      Line_Low_Dn[i]  = Hist_Low_Dn[i]  = Line_Low_Up[i] - 20*_Point;
      }
   return(i-1);
   }           
 
User_mt5:

Объясните, пожалуйста, почему не заштрихована синяя область? И как это исправить?
Возможно ли вообще в одном индикаторе выдать две гистограммы?

если толщину для обоих гистограмм выставить '3'

//+------------------------------------------------------------------+
//|                                                            2.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   2
//--- plot Hist_High
#property indicator_label1  "Hist_High"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Hist_Low
#property indicator_label2  "Hist_Low"
#property indicator_type2   DRAW_HISTOGRAM2
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double         Hist_HighBuffer1[];
double         Hist_HighBuffer2[];
double         Hist_LowBuffer1[];
double         Hist_LowBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Hist_HighBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Hist_HighBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Hist_LowBuffer1,INDICATOR_DATA);
   SetIndexBuffer(3,Hist_LowBuffer2,INDICATOR_DATA);
//---
   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[])
  {
//---
   int limit=prev_calculated-1;
   if(prev_calculated==0)
      limit=0;
   for(int i=limit; i<rates_total; i++)
     {
      Hist_HighBuffer1[i]=high[i]+20.0*Point();
      Hist_HighBuffer2[i]=high[i];
      Hist_LowBuffer1[i]=low[i];
      Hist_LowBuffer2[i]=low[i]-20.0*Point();
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



Файлы:
2.mq5  3 kb
Причина обращения: