エラー、バグ、質問 - ページ 1393

 
galustyan10:

mt5でリアル口座を 開設した場合、社員から電話がかかってきて口座開設の手続きが完了するまで、どのくらいかかるのか、教えてください。

なぜ叫ぶのですか?アカウント登録の際に、ログイン名とパスワードをお知らせします。通常、ブローカーのウェブサイト上の個人アカウントになります。

 
コンパイルエラー:'a' - は静的メンバではありません。
class A     { int a; };
class B : A { void a(); };
void B::a() {}
然なくば
class A     { int a; };
class B : A { void a() {} };
は大丈夫です。何が違うの?
 

MT5 1159です。個人設定で中・大のフォントが設定されている場合、横方向の縮尺が不一致となる。Win7、32b

 

MT5でインディケータを別ウィンドウでオートスケールする方法を教えてください。

インジケータを別ウィンドウで表示

端末は0.5603を最大値としているが、全履歴上の どの指標バッファも 実際の最大値は0.0605である。もちろん、MT4ではそのような問題はありません。

 
Ilya Malev:

MT5でインディケータを別ウィンドウでオートスケールする方法を教えてください。


端末は0.5603を最大値としているが、全履歴上の どの指標バッファも 実際の最大値は0.0605である。もちろん、MT4ではそのような問題はありません。

インジケーターバッファーにある値を確認します。Crosshair」を使って手動で行うこともできますし、「MQL5」を使って行うこともできます。
 
Karputov Vladimir:
インジケーターバッファーにある値を確認します。Crosshair」を使って手動で行うこともできますし、「MQL5」を使って行うこともできます。

全歴史上の最大値は0.0605と申し上げました。OnCalculateで、各バッファーの最大値を各バーで比較することにより確認。

P.S. 実は、何が問題なのか、もうわかっているんです。MT4とMT5で最大値計算のアルゴリズムが異なる。このアルゴリズムを変更することの合理性を理解したいのですが、それは暴論です。

この問題はMT4で発生しました。データウィンドウに 表示されるインジケータバッファの値は、チャートへの表示が無効(DRAW_NONEスタイル)であっても、別のインジケータウィンドウのスケールに影響します。その結果、最小値(0)以上のインジケータ値のみがスケール計算に参加するようになり、すべてが完璧に表示されるようになりました。固定された最小値以下の値は、スケール計算に参加するようになりました。つまり、バッファの値をスケールの計算から外す機能は追加されていない(というか、その方法がまだわかっていない)が、最小値や最大値以下に追い込んでスケーリングから除外する機能は削除されているのである。(これはすべて表示されていないDRAW_NONEバッファに適用されます)

 
Ilya Malev:

全歴史上の最大値は0.0605と申し上げました。OnCalculateで、各バッファーの最大値を各バーで比較することにより確認。

P.S. 実は、何が問題なのか、もうわかっているんです。MT4とMT5で最大値計算のアルゴリズムが異なる。このアルゴリズムを変更することの合理性を理解したいのですが、それは暴論です。

インジケータ・バッファに どのような値が渡されようとも、それは同じものである。別のバリエーション:開始時にインジケータバッファの各要素を分析せず、結果としてバッファにランダムな値を取得します。

だから、コードを見ないとダメなんです。

 
Karputov Vladimir:

もう一つの選択肢:スタートの最初に、インジケータバッファのすべての要素をカウントせず、バッファにランダムな値を入れてしまう。

もうわかったんだ。ちなみに、MT5の予想外のサプライズでもありました :)
 
Karputov Vladimir:

とにかく、ここのコードを見ないとやっていけない。

OK、以下はそのコードです。

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_minimum 0
#property  indicator_color1 clrRed
#property  indicator_type1 DRAW_LINE
#property  indicator_label1 "Стд.Откл."

double buffer1[], buffer2[];

int i_std=INVALID_HANDLE;

void OnInit(){
   SetIndexBuffer(0, buffer1);
   SetIndexBuffer(1, buffer2);
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE, DRAW_NONE);
   PlotIndexSetInteger(1, PLOT_SHOW_DATA, true);
   ArraySetAsSeries(buffer1, true);
   ArraySetAsSeries(buffer2, true);
   i_std=iStdDev(Symbol(), Period(), 20, 0, MODE_SMA, PRICE_CLOSE);
}

void OnDeinit(const int reason){
   if(i_std!=INVALID_HANDLE)  IndicatorRelease(i_std);
}

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 i=rates_total-MathMax(1, prev_calculated); i>=0; i--){
      buffer1[i]=_ind(i_std, 0, i);
      buffer2[i]=-MathRand()%5;
   }
   return(rates_total);
}

double _ind(int hnd, int buf, int index){
   if(index < 0) return(EMPTY_VALUE);
   double Arr[];
   return(CopyBuffer(hnd, buf, index, 1, Arr)==1?Arr[0]:EMPTY_VALUE);
}
 

バグなのか不思議な挙動なのかわかりませんが、MT4のストラテジーテスターでは、インジケーターのバッファのサイズは約1000±3セルです。

他のタイプのテスト(デモまたは実機)では、バッファ内のセル数はターミナル 設定で許可されたバー数とほぼ同じです。

バグなのか、そういうものだったのか聞きたいのですが、テスターを止めずにテスト中にインジケータが編集できることにも気がつきました。エキスパートアドバイザーに関する情報はまだどこにもありませんが、ありがとうございました !

理由: