9

shiftの関数の両方のパラメーターの違いは何ですか? ドキュメントによると:iMA
MQL4

ma_shift - 移動平均シフト。インディケータのライン オフセットは、時間枠ごとのチャートに関連しています。

shift - 指標バッファから取得した値のインデックス (指定された期間前の現在のバーに対するシフト)

標準の MA インジケーターはどのパラメーターを使用しますか?

4

2 に答える 2

19
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

パッケージ化された標準インジケーター「移動平均」の場合、「Shift」フィールドは「ma_shift」パラメーターを修正します。

インジケータ

パッケージ化されたカスタム指標「移動平均」の場合、「MA_Shift」フィールドは「ma_shift」パラメータを修正します。

カスタム インジケーター

どちらのインジケーターでも、最後の「シフト」パラメーターを修正することはできません。

比較


グラフィカルに、標準インディケータ「移動平均」の場合、「シフト」フィールドを変更すると、整数値で定義された期間数だけ移動平均線が右 (+ve の数値) および左 (-ve の数値) にシフトします。

ma_shift = 0: デフォルト

ma_shift = 4: ma_shift +4

ma_shift = -4: ma_shift -4

コード的には、iMA() をポーリングし、ma_shift を 4 に設定する場合、たとえば

double iMA("EURUSD", PERIOD_H1, 8, 4, MODE_SMA, PRICE_CLOSE, 0)

4 周期前の移動平均値が得られます。


これは、iMA() 値を示す単純なテキスト インジケーターであり、期間、ma_shift、およびシフト パラメーターを編集できます。それを試して、「移動平均」インジケーターに対して検証します (データ ウィンドウを表示します)。

#property indicator_chart_window

extern int period   = 8;
extern int ma_shift = 0;
extern int shift    = 0;

void start(){
   string A1=StringConcatenate("Stat: ", DoubleToStr(MA(),5));
   Comment(A1);
   return (0);
}

double MA(){
   return(iMA(NULL, 0, period, ma_shift, 0, 0, shift));
}

iMA() 関数の最後の 'shift' パラメータは、計算に使用される期間をシフトし、+ve 数値のみにすることができます。-ve 番号は、将来の存在しない期間を要求します。上のテキスト インジケータに -ve 番号を入力して、何が得られるかを確認できます。(0.00000) 上記のように、インジケーターは事実上同じであるため、このパラメーターを編集することはできません。

double iMA("EURUSD", PERIOD_H1, 8, 4, MODE_SMA, PRICE_CLOSE, 0)

と同じ

double iMA("EURUSD", PERIOD_H1, 8, 0, MODE_SMA, PRICE_CLOSE, 4)

では、なぜそこにあるのでしょうか。他のインジケーターとの標準化として最も可能性が高いです。たとえば、http: //docs.mql4.com/indicators/iAlligator では、「シフト」パラメーターがどの期間から計算するかを決定する包括的な決定要因であり、個別のあご_シフト、歯のシフト、唇のシフトが独立しています。描画された線をグラフィカルにシフトするパラメーター。

于 2013-10-03T09:56:38.903 に答える
3

ma_shift」は、表示される「線」のグラフィカルなシフトです。これは、配列値の表示にのみ関連します。コーディングにはあまり関係ありませんEA

shift」は計算に取り入れた要素の値です。デフォルトでは、シフトの値はゼロ (ゼロ バー (最後のバー)) です。のバーのシフトはMQL4最後のバーから逆方向です。

:
2 つを比較しSMAます。1 つは 20 ピリオド/0 シフト、もう 1 つは 10 ピリオド/4 シフトです。s間のすべての比較は、配列の最後のバーSMAの 20 期間と配列の4 期間前の 10 期間の間で行われます。 数字で言えば...最後のバーの 20 が であるとしましょう。 10が次のようであるとしましょう: 0 バー (最後のバー) 1 バー (前のバー) 2 バー (2 バー戻る) 3 バー (3 バー戻る)SMASMA

SMA1.1000
SMA
1.1050
1.1000
1.0950
1.0900

結果:である=> いいえ
で ある=> はい20SMA( shift0 ) > 10SMA( shift0 )
20SMA( shift0 ) > 10SMA( shift3 )

要約すれば。これMA_shiftは、行の前後へのシフトです。これshiftはバー値の後方へのシフトです (0/最後のバーから)。

つまり、4 シフトはMA4 バー前の値を表します。このオプションは、アルゴリズム構築の目的で、コーディングでのみ使用できます。コンピュータが交差を計算するとき、線自体ではなく配列の値を使用するため、 は sとma_shiftは無関係です。EAMA

頑張ってください!

于 2016-01-29T22:16:26.907 に答える