指標の動的期間

 
多くの指標は、その値を算出するために「期間」を用いています。これは通常、次の値の計算に関与するバーの数 である。例えば、RSI。大雑把に言えば、価格の上昇の長さと下降の長さの比率を示す指標である。周期が非常に短い場合は大きな乱流を与え、周期が非常に長い場合はゼロ付近の弱い脈動を与える。しかし、市場は必ずしも一様ではありません。正確には、常にムラがある。ニュースリリース後、取引セッションの変更と短時間で、すべての動きをキャッチするために、期間が長すぎるべきではありません。一方、長い「長期」トレンド(またはフラット)においては、この期間を延長して、チャネル内の変動ではなく、トレンドの傾向をトレースすることができます。
誰か、状況の変化に応じて期間の長さを適応さ せるような指標を作ろうとした人はいますか?例えば、 "ここで"、そのような範囲内の別の指標(または現在の指標の内部にいくつかの計算)、我々は比例してこのバーの期間の長さを減少させ、そのような条件(別のバーで) - 逆。
また、一般的に、このアイデア(周期長のオートチューニング)には常識があるのでしょうか?
 
もし誰かが、長い横ばいと長いトレンドを見分ける方法、あるいは横ばいが終わってトレンドが始まったかどうかを判断する方法を知っていて、それに応じて指標を調整したり、TSを適応させたりしていたら。
それこそ聖杯 でしょう。
 
試してみました。非常に面白いバリアントが出てきました。例えば、MAとストキャスティックのハイブリッドなど。つまり、MAの角度がストキャスティクスの周期に影響を与えるのです。しかし、どれだけのバリエーションがあるか想像がつきますか?結果は一貫しておらず、感覚的なものに至っていない。
 
ForexTools >>:
да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

穀物はあるが、適切な粉砕機が必要である。

このアイデアは新しいものではなく、コードベースやフォーラムを検索してください。MT5付属のインジケーターにも。

// アダプティブ・デジタル・フィルタ」という巧妙な名称も、基本的には同じ意味です。より正確には、その考えを少し一般化したものです。

 
ForexTools >>:
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

基準高調波との相関で試してみました。

しかし、一旦大きくジャンプした後、元に戻ってしまうことがあり、全体像が見えなくなってしまうのです。

しかも、この方法は非常に長く、リアルタイムならまだしも、テスターでは使えますが、最適化では完全に失敗してしまいます。

まあ、一般的には有望なテーマではある。

 
ForexTools >>:
Очень много индикаторов используют для рассчета своих значений так называемый "период". Обычно это количество баров которое учавствует в расчете очередного значения. Возьмем например RSI. Если очень грубо - этот индикатор показывает отношение длинны "пробега" цены вверх по отношению к аналогичной длине пробега цены вниз. При очень маленьких периодах получается жуткая болтанка, при очень длинных - нечто слабопульсирующее около нуля. Однако рынок не всегда равномерен. Точнее всегда не равномерен. После выхода новостей смены торговых сессий да еще на коротких таймах, чтобы поймать все движения период нужно выбирать не очень большой. С другой стороны во время длинного "затяжного" тренда (или флэта) этот период вполне разумно увеличить чтобы отслеживать тенденцию самого тренда, а не колебаний внутри его канала.
Кто нибудь пробовал строить индикаторы которые сами адаптируют длину периода под меняющиеся условия? Вот, например "здесь", когда какойто другой индикатор (или какието вычисления внутри текущего индикатора) в таком то диапазоне мы пропорционально сокращаем длинну перода для этого бара, а при таких то условиях (уже на другом баре) - наоборот увеличиваем.
Если да - то какие получались результаты? да и вообще - есть ли здравое зерно в этой идее (автоподстройки длинны периода)?

はい、あります。何度も、いろいろな形で。確かに(標準的な用途では)改善されますが、それでも、すでに何度か書いているように、一連のパルスではなくBPを考慮しているため、タコのフレーズペアのフィッティングになってしまいます。例えば、非常にシンプルな方法(コードベースですでに紹介したものとは別に):バーの振幅が指定されたしきい値よりも小さい場合、インジケータの周期は1増加します。もちろん、条件は(もちろん論理的に)さまざまに発案できる。

例えば、この基本的な選択のためのRSIは次のようになります:彼らは2ピップ(必要なminが到達するまで、期間が増加するよりも大きいスイングでバーを選択します。下のウィンドウは、期間がどのように変化したかを示しています。

0番目のウィンドウを見ないでください - それはちょうどインジケータを消去しませんでした。それは関係ない。EMA係数による周期適応も行っているが // )).

===
はい、しかし - 私は繰り返し - それは何もしないよりも優れていますが、...)))
ちなみに、ご存知ないかもしれませんが、RSIの期間も変化しますが、RMSによって変化する、いわゆるDMI(Dynamic Momentum Index)というものがあります。Williams and Chandに記載があります。
===
そして、私が説明したシンプルなアプローチは、サンプリング長があるものなら何にでも適用できます。もっと複雑なものが必要な場合は、特別なステアリングインジケーターであるMsterSlaveがあります(ベースにあるものを参照)。

===========
そして、ここでは、期間の長さの上限が実質的に無制限であるところです。つまり、RSIは2ピップス以上のスプレッドで14本に達するまで増加します。ご覧のように、原則として、指定された商品と時間枠の100本で十分です。言い換えれば、期間は100本を超えません。
ファイル:
_rsi_tr.mq4  3 kb
 
Svinozavr >>:

но все же это - как уже неодн. писал - примерка фрачной пары на осьминога, т.к....

一つの不確実性(どの期間を選ぶか)の代わりに、もう一つの不確実性(期間の長さを変える仕組みをどう選ぶか)を導入し、それによって最初の不確実性を排除しようと考えているのです。
しかし、ある不確実性を別の 不確実性に置き換えることは、質的な結果をもたらさないようです。
回答してくれた皆さん、ありがとうございました。消化し、考え、何かを思いつくようにします。
 
哲学と書いたのは冗談ですが、もしかしたら価格やその動きに適用される一般的な法則、例えば物理学で言えばハイゼンベルクの不確定性原理 があるのではないかと思ったのです。多分それは本当に "異なるグループから2つのパラメータ "を同時に測定する(と我々の場合には - 予測する)ことは不可能である。 すなわち、我々は正確な時間と価格を知ることができますが、価格の動きの方向、インパルス(1キャンドルはMAを構築しない)知ることができない。
 

期間適応型インジケータは、システムの一部と取引アイデアをそのコードに移し替えたものです。つまり、タイミングは指標ではなく、取引のアイディアに依存し、指標は価格の変形に過ぎないのです。
TAは、市場で客観的に起こっているプロセスを特定し、それがまだ存在している間に利用することを可能にしようとするものです。つまり、最初のプロセスであり、チャート上の事象は、それがどの段階にあるかを検出する機会である。このように、適応のためには、期間の値を計算するのではなく、新しい基準点を計算する必要があるのです。すなわち、あるTAイベント(ブレークスルー、インパルスなど)がある-そこから参照される新しい時点があるのです。実はこれ、新しいT字型ストップウォッチなんです。指標は、基準t-caseから現在の時間の瞬間のシフトに等しい周期で適応的なウィンドウ上でカウントされます。新しいデータムが特定された場合、そのデータムから周期を計算する。しかし、新しいTAイベントの出現時にインジケータの期間があるデフォルト値になる場合、そのイベントの形成の価格の捕捉を実際に意味する、この変形は有用かもしれません。または、最も近いTAイベント間の時間を使用して、指標の期間を計算します。

 

私も科学者たちの会話に混じって、自分の料理のレシピを投稿してみることにしました。ここ数年、私はほとんどすべての指標に適応的にパラメータを変化させるものを作っています。原始的なソリューションでは市場で通用しない、この結論に達したのはずいぶん前のことで、完全な適応型システムを作るアイデアを温めていたのですが、まだ時間がなく、指標で適応の断片を分けて作っています。以下は、最新のインジケータの断片の例です。一般的に、インジケーターはいくつかの機能ブロックから構成されており、各ブロックはターゲットとなるシグナルを形成しています、全部で24のシグナルがありますが、ここではチャンネルを形成する一つのブロックのみを引用します。時間軸やシンボルの変更に伴うオートチューニングはまだ行っていませんので、各バリアントを個別に調整する必要があります。

//=====================================================================================================================================
extern int PIB= 33;
extern int PIS= 37;
extern double PMB= 3.98;
extern double PMS= 3.98;
//====================================================================================================================================

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() {

        PPB=NormalizeDouble(PIB*Point,Digits);
        PPS=NormalizeDouble(PIS*Point,Digits);
        PMB=NormalizeDouble(PMB*Point,Digits);
        PMS=NormalizeDouble(PMS*Point,Digits);
           }
エキスパートスタート機能:

     PR=NormalizeDouble((High[1]-Low[1])+(High[2]-Low[2])+(High[3]-Low[3])+(High[4]-Low[4])+(High[5]-Low[5])+(High[6]-Low[6])+(High[7]-Low[7]),Digits);
     PRB=NormalizeDouble(PMB/PR,Digits); 
     PRS=NormalizeDouble(PMS/PR,Digits); 
      
      BTH[0]=High[0]-PR/17-PRB/2;
  if ((MathAbs(BTH[0]-BTH[1])<=PPB))
      BTH[0]=BTH[1];
      
      BTC[0]=Close[0]-PR/10;
  if ((MathAbs(BTC[0]-BTC[1])<=PPB))
      BTC[0]=BTC[1];
      
      BTC[0]=0.4*BTC[0]+0.6*BTC[1];
      
      BTL[0]=Low[0]-PR/17+PRB/2;
  if ((MathAbs(BTL[0]-BTL[1])<=PPB))
      BTL[0]=BTL[1];
  
      STH[0]=High[0]+PR/17-PRS/2;
  if ((MathAbs(STH[0]-STH[1])<=PPS))
      STH[0]=STH[1];
      
      STC[0]=Close[0]+PR/10;
  if ((MathAbs(STC[0]-STC[1])<=PPS))
      STC[0]=STC[1];
      
      STC[0]=0.4*STC[0]+0.6*STC[1];
      
      STL[0]=Low[0]+PR/17+PRS/2;
  if ((MathAbs(STL[0]-STL[1])<=PPS))
      STL[0]=STL[1];
ご覧のように、チャンネルのパラメータは、過去数本のバーの平均的な動的指標によって適応的に調整されます。
その結果、次のような絵が出来上がりました。


VTN-青、BTL-黄、BTL-ピンク、STH-青、STC-赤、STL-紫。
もちろん、これは単純化されたアプローチであり、変化する市場の局面により正確に適応するためには、より複雑なソリューションが必要ですが、それでもこのバリエーションは指標の特性を著しく向上させます。
 
私の最近の開発状況 )))