私たちのファンページに参加してください
- 発行者:
- Nikolay Kositsin
- ビュー:
- 1181
- 評価:
- パブリッシュ済み:
- 2016.05.24 12:34
- アップデート済み:
- 2018.05.31 11:48
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
実際の著者:
Witold Wozniak
このインディケータは、金融資産の価格変動周期を測定するために設計されています。
そのインジケータのバッファには、明白な理由によって安定することはできない現在の市場サイクル値が格納されます。 このインディケータはオシレータと一緒に使用されて、絶えず変化する市場サイクルへの適応と適応への変換を提供するために作成されます。
このインディケータは、2002年11月に「Technical Analysis Of Stock & Commodities(株式とコモディティーのテクニカル分析)」 誌で出版されたJohn Ehlersの記事「Using The Fisher Transform(フィッシャー変換の使用)」に触発されています。
インディケータを別のインディケータのコード内 (例えばRVIオシレータ)で使用するにはCyclePeriod インディケータのハンドル変数はグローバルレベルで宣言されてる必要があります。
//---- インディケータハンドルのための整数変数の宣言 int CP_Handle;
その後 CyclePeriodインディケータはハンドルはRVI インディケータの初期化ブロックで受け取られる必要があります。
//---- CyclePeriodインディケータハンドルの取得 CP_Handle=iCustom(NULL,0,"CyclePeriod",Alpha); if(CP_Handle==INVALID_HANDLE) { Print(" Failed to get the CyclePeriod indicator handle"); return(1); }
ここで、使用したインディケータの入力パラメータと期間平均比使用する新しいAlpha 変数の登場です。この変数は、開発されたインジケータ入力変数に変換する必要があります。
//+----------------------------------------------+ //| インディケータの入力パラメータ | //+----------------------------------------------+ input double Alpha=0.07; // インディケータの平滑化比
ひとつ前のLength入力パラメータは入力パラメータのリストから取り除かれOnCalculate()関数の内側でローカル変数に変換される必要があります。
インディケータの平滑化に使われた配列のサイズはLength パラメータの値で固定されます。
//---- 変数の配列のメモリ分布 ArrayResize(Count,Length); ArrayResize(Value1,Length); ArrayResize(Value2,Length);
このパラメータの値は、現在変更されています。したがって、配列のサイズはこの変数の仮定された高値以上であるほうがよいです。
指標チャートを分析すると、この値は100を超えていないことがわかります。したがって、配列のサイズは同じ値を持ちます。
//---- 変数の配列のメモリ分布 ArrayResize(Count,MAXPERIOD); ArrayResize(Value1,MAXPERIOD); ArrayResize(Value2,MAXPERIOD);
その後OnCalculate()ブロックでの現在のバーの期間の値はLength 入力パラメータからの代わりにCyclePeriod カスタムインディケータバッファからとられて使われる必要があります。
//---- 主要インディケータの計算ループ for(bar=first; bar<rates_total && !IsStopped(); bar++) { //---- 新しく出てきたデータを配列にコピーする if(CopyBuffer(CP_Handle,0,rates_total-1-bar,4,period)<=0) return(RESET); Length=int(MathFloor((4.0*period[0]+3.0*period[1]+2.0*period[2]+period[3])/20.0)); if(bar<Length) Length=bar; // バーの実数に平滑化を引き下げる
この場合最後の4つの値はCyclePeriod インディケータバッファから取られて直線的に重み付けした平滑化が行われ、取得した値はLength平滑化期間として使われます。そして最後に、インジケータのコードの最後の行を変更する必要があります。
if(bar<rates_total-1) Recount_ArrayZeroPos(Count,MAXPERIOD);
結果としてAdaptive RVI オシレータが受け取られます。
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/562
![StepMA_Line](https://c.mql5.com/i/code/indicator.png)
StepMAは移動平均として実行されます。
![StepMA_NRTR](https://c.mql5.com/i/code/indicator.png)
Nick Rypock Trailing Reverse (NRTR) インディケータとして作成されたStepMA 。
![LeManTrend](https://c.mql5.com/i/code/indicator.png)
LeManTrendは、3期間の現在の価格と高安値に基づきてトレンド位置を決定します。
![Daily Range Projections(日中の価格帯の予想)](https://c.mql5.com/i/code/indicator.png)
日チャート上の次のローソク足の変更範囲を予測します。