初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1229

 
Elena Baranova:

親愛なるプロフェッショナル、アドバイザーのコードで一週間のタイムフレームのRSIの値を取得することが可能かどうか助言してください、しかし、例えば水曜日から始まる週の値を計算する(つまり水曜日から次の水曜日までの週です)。私の知る限り、iRSIではできないのでしょうか?

今のところ、自分でコードを書いて計算する方法しか見当たりません。もっとシンプルな解決策、既成の解決策はないのでしょうか?

W1タイムフレームでインディケータハンドルを作成 した場合、インディケータはW1バーで計算されることを意味します:1バー、1週間です。

D1タイムフレーム(日足タイムフレーム)でインジケーターのハンドルを作成する必要があります。


一般に、「(つまり、水曜日から来週の水曜日までの1週間)」の意味は明確ではありません。どの曜日から始まるかは関係なく、インジケータはバーで計算されます。

 
Vladimir Karputov:

W1タイムフレームでインディケータハンドルを作成 した場合、インディケータはW1バーで計算されることを意味します:1バー、そして1週間。

D1タイムフレーム(日足タイムフレーム)でインジケーターのハンドルを作成する必要があります。


一般に、「(つまり、水曜日から来週の水曜日までの1週間)」の意味は明確ではありません。曜日は関係なく、棒グラフで計算されます。

バーのことはすべて理解しています。しかし、ウィークリーバーはすべて月曜日から始まります。したがって、例えば水曜日から1週間を取得するためには、日足バーをベースに自分でコードを書く必要があると思います。

私もこの計算の意味を十分理解しているわけではありませんが、お客様からご質問をいただきました。

 
Elena Baranova:

バーのことはよくわかりました。しかし、ウィークリーバーはすべて月曜日から始まります。ですから、例えば水曜日から一週間を取得するためには、日足バーをベースに自分でコードを書かなければならないのでしょう。

私もこの計算の意味を十分理解しているわけではありませんが、クライアントから依頼されたものです。

Expert AdvisorはRSIの値に基づいて取引を開始します。私はこの計算の全体的なポイントを理解していませんが、クライアントはそれを要求し、EAは新しい週のバーを開くと、月曜日だけに注文を開きます。

 
Elena Baranova:

バーのことはよくわかりました。しかし、ウィークリーバーはすべて月曜日から始まります。ですから、例えば水曜日から一週間を取得するためには、日足バーをベースに自分でコードを書かなければならないのでしょう。

私もこのような計算の意味を十分理解しているわけではありませんが、お客様から依頼されたことなので、やってみました。

物理的な意味が理解できない。ですから、私は帰ります。

 

MT5でチャートを表示する際の問題を解決してください。 チャートが更新され続け、左にドラッグされます。しかも、これはすべての楽器で。

さらにその先には、最大限の履歴を残すために、どんどんシフトしていきます。一般に、先週分の情報が正しく表示されません。最終日のローソク足が常に消え、点滅し、左に移動します。どうすれば直るのか?

 
Александр:

MT5のチャート表示に関する問題を解決してください。 チャートが更新され続け、左にドラッグされます。しかも、これはすべての楽器で。

最大履歴にシフトし続ける。一般に、直近1週間の情報が正常に表示されず、直近のローソク足が常に消え、点滅し、左に移動してしまいます。どうすれば直るのか?

まさにタイムマシンです :)

スクリプトやアドバイザー、インジケーターが動作している場合、チャートがずれることがあります。

 
Александр:

MT5のチャート表示に関する問題を解決してください。 チャートが更新され続け、左にドラッグされます。しかも、これはすべての楽器で。

最大履歴にシフトし続ける。一般に、直近1週間の情報が正常に表示されず、直近のローソク足が常に消え、点滅し、左に移動してしまいます。どうすれば直るのか?

動作中のインジケーターやEAを削除する。キーボードから猫を外す。キーボードにこぼれたコーヒーを掃除する。

 
Vladimir Karputov:

ランニングインジケーターとアドバイザーを取り外す。キーパッドからネコを外す。キーボードにこぼれたコーヒーを掃除する。

アドバイスありがとうございました。問題は、Pingの 高いサーバーを選択することでした。

 

青い部分に影がないのはなぜか、説明してください。そして、それを解決する方法は?
1つのインジケーターで2つのヒストグラムを作成することは可能なのでしょうか?

#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:

青い部分に影がない理由を教えてください。そして、それを解決する方法は?
1つのインジケータで2つのヒストグラムを出力することは可能なのでしょうか?

両方のヒストグラムの厚さを「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
理由: