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

 

mql4で一番簡単なインジケータを書いたので、それをmql5に翻訳しようと思い、1週間ほど格闘していますが、うまくいきませんイライラする!mql5が憎い!なぜなら、mql5で34行の簡単なインジケータをすでに88行も書いてしまったからだ。

以下は、mql4でのコードです。

#property indicator_separate_window
#property  indicator_level1 0
#property indicator_buffers 3

extern int kol_vo_bar = 15;
extern string Symbol_1 = "GBPJPY";
extern string Symbol_2 = "EURJPY";

double SpreadA[];
double SpreadB[];
double Spread[];

int init()
{
   SetIndexBuffer(0,SpreadA);
   SetIndexBuffer(1,SpreadB);
   SetIndexBuffer(2,Spread);
   SetIndexStyle(0,DRAW_SECTION,EMPTY,2,Red);
   SetIndexStyle(1,DRAW_SECTION,EMPTY,2,Blue);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Gray);
   return(0);
}

int start()
{
   int k;
   for(k = 0; k < iBars(Symbol_1,0); k++)
   {
            SpreadA[k] = iClose(Symbol_1,0,k)*100/iOpen(Symbol_1,0,k+kol_vo_bar)-100;
            SpreadB[k] = iClose(Symbol_2,0,k)*100/iOpen(Symbol_2,0,k+kol_vo_bar)-100;                  
            Spread[k] = SpreadA[k]-SpreadB[k];
   }
   return(0);
}

そして、以下はmql5でのコードです。

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Label1
#property  indicator_label1  "Label1"
#property  indicator_type1   DRAW_SECTION
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  2
//--- plot Label2
#property  indicator_label2  "Label2"
#property  indicator_type2   DRAW_SECTION
#property  indicator_color2  clrBlue
#property  indicator_style2  STYLE_SOLID
#property  indicator_width2  2

#property  indicator_label3  "Label3"
#property  indicator_type3   DRAW_HISTOGRAM
#property  indicator_color3  clrGray
#property  indicator_style3  STYLE_SOLID
#property  indicator_width3  1

//--- input parameters
input int kol_vo_bar=96;
input string   Symbol_1="GBPJPY";
input string   Symbol_2="EURJPY";
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
double         Label3Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
   SetIndexBuffer(1,Label2Buffer,INDICATOR_DATA);
   SetIndexBuffer(2,Label3Buffer,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[])
  {
//---
   for(int k=0; k<Bars(_Symbol,_Period); k++)
   {
            Label1Buffer[k] = iClose(Symbol_1,PERIOD_CURRENT,k)*100/iOpen(Symbol_1,PERIOD_CURRENT,k)-100;
            Label2Buffer[k] = iClose(Symbol_2,PERIOD_CURRENT,k)*100/iOpen(Symbol_2,PERIOD_CURRENT,k)-100;                  
            Label3Buffer[k] = Label1Buffer[k]-Label2Buffer[k];
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
double iClose(string symbol,ENUM_TIMEFRAMES tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyClose(symbol,tf,index,1,Arr)>0)
        return(Arr[0]);
   else return(-1);
}
double iOpen(string symbol,ENUM_TIMEFRAMES tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyOpen(symbol,tf,index+kol_vo_bar,1,Arr)>0)
        return(Arr[0]);
   else return(-1);
}

MT5でインジケーターラインが 正しく表示されない。

私は何か悪いことをしたのだろうか?

善良な人たちよ、助けてくれ、哀れんでくれ、正直、壊れかけているんだ。ここで悪口が言えないのは残念!?

司会者、私を禁止しないで、まず、何かあったら警告してください。

 

利用可能なすべてのバーをティック ごとに再計算しているため、非常に最適とは言えず、ひどく時間がかかります。

 
zlodei:


MT5でインジケーターの線が 正しく表示されない。

何を書き間違えたのだろう?

PlotIndexXXXを使った作品はどこにあるのでしょうか?

は、ドキュメントやサンプルを読むことを許さなかったのですか?



司会者、私を禁止しないで、まず、何かあったら警告してください。

コードベースを見て、読んでみてください。 何百もの例があります。
 
sergeev:

PlotIndexXXXの動作環境は?

ドキュメントやサンプルを読むのが面倒くさい?


Codebaseにアクセスし、読んでみてください。

なぜ、このようなことがコードの最初に必要なのか疑問です。

#property  indicator_label1  "Label1"
#property  indicator_type1   DRAW_SECTION
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  2

#property  indicator_label2  "Label2"
#property  indicator_type2   DRAW_SECTION
#property  indicator_color2  clrBlue
#property  indicator_style2  STYLE_SOLID
#property  indicator_width2  2

#property  indicator_label3  "Label3"
#property  indicator_type3   DRAW_HISTOGRAM
#property  indicator_color3  clrGray
#property  indicator_style3  STYLE_SOLID
#property  indicator_width3  1

各ラインのすべてのプロパティをここで指定するのですか?それともmql5では不十分で、PlotIndexで線のプロパティを記述する必要があるのでしょうか?

たくさんの例やドキュメントを読みましたが、80%は理解できません。たとえば、なぜ単純なことを複雑にしなければならないのでしょうか?

例えばmql4で。

   SetIndexStyle(0,DRAW_SECTION,EMPTY,2,Red);
   SetIndexStyle(1,DRAW_SECTION,EMPTY,2,Blue);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Gray);

今のmql5では、ラインスタイルの指定にどれだけ時間がかかるか想像もつきません、おそらく50行はかかるでしょう、そして結果は1と同じです。

MQL5はプログラマー向け、MQL4はトレーダー向けです。システムを確認したいのであればmql4でプログラミングし、mt5で同じことをしたいのであればプログラマーに依頼するか、トレードをやめてmql5の勉強に時間を割くことです。

MT5がリリースされ、トレーダーである私が気づいた改善点はただ一つ、64bitテスターで全てのCPUコアを使えるようになったことです。

mql言語の洗練度は、手動または自動売買の結果に何ら影響を与えることはありません。言語の複雑さは、確かにプログラマーにとっては重要です。素敵なボタンやパネルを作ったり、あらゆる種類の奇妙なWinAPIと統合したり、でもそれは取引の結果に影響を及ぼしていないのです。mql4でプログラムし、それをチェックすることができるのに、なぜこのような困難があるのでしょうか。ただ、1つ大きなマイナスがあります。この2つをやってくれれば、MT4の価格はゼロになるはずです。しかし、MT5と競合して私のような人が苦しんだりお金を払ったりすることがないように、わざと作らないのでしょう。

とにかく、ご配慮、「お手伝い」ありがとうございました。私はコメントしません、私はとにかく支店に行くことはありません、それは私の意見だけです、より多くの、私は行かなければなりません。

 
私は新参者です。mt5でrts指数先物を取引する場合、教えてもらえますか?2009年から今日までの気配値チャートを表示するにはどうしたらいいですか?
 
sbr080:
私は新参者です。mt5でrts指数先物を取引する場合、教えてもらえますか?2009年から今日までの相場表を印刷するにはどうしたらいいですか?
証券会社に頼んで付箋のついた チャートを出してもらう必要があります。
 
barabashkakvn:
ブローカーに頼んで、のりしろのある チャートを出してもらう。
自分で接着することはできますか?
 
sbr080:
自分で接着できる?
いいえ、ブローカーだけです。自分でやる場合は、自分でインジケータを書く必要があります。
 
barabashkakvn:
いいえ、ブローカーだけです。自分でやる場合は、自分でインジケータを書かないといけない。
ありがとうございます。
 
Expert Advisorが使用するパラメータを使用して、チャートにテクニカル指標を 表示することが可能かどうか教えてください。つまり、ストラテジーテスターでビジュアライゼーションを使用するときと同じ方法です。この情報がどこにもないのです。
Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
理由: