インディケータ: Dserg - LinRegressionブレイクアウト

 

Dserg - LinRegressionブレイクアウト:

線形回帰に基づいた統合領域とチャネルの自動描画のための指標

図1 Dserg - LinRegression ブレイクアウト指標

作者: Nikolay Kositsin

 

インジケーターのレンダリングに問題があるのを見たのは一度や二度ではない。犬はどこ?


 
den2008224:

インジケーターのレンダリングに問題があるのを見たのは一度や二度ではない。犬はどこ?


インジケーターのコードは、当初考えられていた以上に厄介であることが判明した!しかし、何も修正されていない!あとはファイルが入れ替わるのを待つだけだ。

 

ブレイクアウトの取引 dailyfxの記事より 引用)

  • ブレイクアウトは、新たな情報が価格を押し上げたり下げたりする際に、レンジ相場から発生します。
  • このようなブレイクアウトは、多くの場合、壊滅的な打撃を与えるボラティリティの上昇を伴います。
  • リスクとリターンの比率が最も重要であるため、トレーダーは偽のブレイクアウトの損害を軽減する一方で、成功したエントリーの報酬を最大化することができます。

将来の値動きは本質的に予測不可能であるため、トレンドの方向を見極めて取引することで、トレーダーは市場に見られる可能性のあるバイアスの側に飛び乗ることができる。そして、そのようなバイアス(トレンド)が継続する場合、トレーダーはリスクを負った額の3倍、4倍、5倍の利益を得られる可能性がある。

残念ながら、トレンドは常に存在するわけではない。より一般的なのは、価格がバイアスの要素を示していない状態、つまり価格が長期間レンジ相場で動いている場合である。バイアスがないため、このような状況でどのように取引するかを知ることは、かなり難しくなります。しかし、トレーダーには2つの選択肢がある:レンジ相場が継続するものとして取引するか、レンジ相場のブレイクアウトを期待して取引するかです。


ブレイクアウト

価格がレンジからブレイクアウトするとき、その動きは速く、激しく、非常に大きくなることがある。ゴムバンドがずっと引っ張られ、最終的に弾けるのを想像してみてください。
ブレイクアウトの取引は気の弱い人には向かない。多くの場合、ブレイクアウトはニュース・イベントやデータ発表、あるいはトレーダーが以前に定義したサポート・レベルやレジスタンス・レベルを超えて価格を押し上げるような何らかの理由で発生する。

ブレイクアウトを捉えるには、一度以上の試みが必要なことが多い。


このようにボラティリティが極端に上昇することが、ブレイクアウトの取引を難しくしているのです。付随する値動きが両方向に危険なほど揺れ動き、サポートやレジスタンスをブレイクしても、価格が反転して反対方向に動くのを見るだけというケースが多々あるからです。これが恐ろしい「偽のブレイクアウト」である。

トレーダーは、リスクとリターンに重点を置きながら、より積極的に行動する必要があります。

確率

前述の理由から、トレーダーはブレイクアウト戦略の成功確率を低く設定することが多い。トレーダーが、通常トレンドトレードの2回に1回は勝てると考えている場合、ブレイクアウトトレードの4回に1回は勝てると考えることが多い。

また、ブレイクアウトは成功確率が低いため、トレーダーはそれに応じてリスクとリターンの比率を調整する必要がある:ストップはさらに厳しく、利益目標はさらに大きくする。

そこで、ブレイクアウト取引のリスクについて警告してきました。その後に続く論理的な質問として、「取引できるトレンドがどこかにあるかもしれないのに、なぜブレイクアウトを取引するのだろうか」というものがよくあります。

ブレイクアウトの魅力は、その可能性にあります。ブレイクアウトが機能すれば、上昇幅が大きくなる可能性がある(下降幅が大きくなるのと同じように、ストップ幅を絞ることで対処したり相殺したりすることができる)。

最初のブレイクアウトから新しいトレンドが形成されることはよくあり、これは金融市場において非常に自然なライフサイクルである。例を挙げて説明しよう。


ブレイクアウトのトレード方法

ブレイクアウトのトレードで重要なのは、サポートおよび/またはレジスタンスです。注文の流れが変化する可能性のあるこれらのレベルは、トレーダーがブレイク時にエントリーする価格と同じです。

ピボット・ポイントは、ブレイクアウト・トレーダーにとって非常に一般的なオプションです。トレーダーは、ブレイクアウトの可能性があるこれらの価格レベルに注目しながら、これらの価格のすぐ外側にエントリー注文を出すことができます。

ブ レ ー ク ア ウ ト を 取 引 す る た め の も う 一 つ の 一 般 的 な オ プ シ ョ ン と し て 、プ ラ イ ス ・ チ ャ ン ネ ル ズ ・ イ ン デ ィ ケ ー タ( ブ レ ー ク ア ウ ト・ト レーダーとして有名なリチャード・ドンチアンにちなんで「ドンチアン・チャ ン ネ ル ズ 」と 呼 ば れ る こ と が 多 い )があります。プライスチャネルは、過去x期間(xはトレーダーが入力したローソク足の本数)の最高値と最安値を表示します。価格がこれらのレベルに近づくと、高値を更新したり、安値を更新したりすることがあり、これがブレイクアウト・エントリーの本質である。

同じタイプのロジックは、心理的な整数、またはEURUSDの1.3500やAUDUSDの0.9000のようなラウンドレベルの周りで利用することができます。このようなラウンドナンバーの価格水準では、多くのストップやリミットが設定されることが多く、少なくとも一時的にトレンドが止まってしまうことがあります。しかし、その後にその水準への接近が起こると、ストップやリミットの数が売り(上昇トレンドの場合は買い)の急増を抑えきれないことがあります。

このため、ブレイクアウトを取引する一般的な方法の1つ、プライスアクションと過去の相場の動きを分析に取り入れることになる。

 
こんばんは
数日間Dsergを使用していますが、私には良いように思えます。 売りや買いのシグナルが 介入したときに警告が表示されると便利だと思います
よろしくお願いします。
Roberto

 

ニコライ

このインディケータはライブチャート上ではとてもよく機能しますが、Startegy Testerでテストすると矢印が描画されません。線形回帰の描画方法が間違っているようです。EAでiCustomを使用してみましたが、描画が正しくありません。

これを修正する方法があれば教えてください。

 
これをゴールドで 使えるようにする可能性は?
 





ブレイクアウトシグナルが2~3回表示された後、シグナルが停止して表示されなくなります。その後、チャネルラインは下の画像のように1本ずつつながり始めます。この問題のため、私の EA ではこのインディケータを使用できません。 ありがとうございます!




プリントスクリーン

 
Alastair Norman:

こんにちは、ニコライ

このインディケータはライブチャート上ではとてもよく機能しますが、Startegy Testerでテストすると矢印が描画されません。線形回帰の描画方法が間違っているようです。また、EAでiCustomを使用してみましたが、描画が正しくありません。

これを修正する方法があれば教えてください。

こんにちは、私はこのバグを解決しました。

コードの最後の行を変更しました:

変更前

            if(!j)
              {
               B3_Buffer[barj]=res2;
               B4_Buffer[barj]=res3;
              }
            B0_Buffer[barj]=res2;
            B1_Buffer[barj]=res3;
           }
        }
     }
//----
       
   return(rates_total);
  }

//+------------------------------------------------------------------+

変更後

            if(!j)
              {
               B3_Buffer[barj]=res2;
               B4_Buffer[barj]=res3;
              }
            B0_Buffer[barj]=res2;
            B1_Buffer[barj]=res3;
           }
        }
     }
//----
   int timeBar = timeBar();
   if(timeBar == true)
       ChartSetSymbolPeriod(ChartID(), _Symbol, PERIOD_M1); 
       
   return(rates_total);
  }
  
datetime newTime = 0;
bool timeBar()
{
   datetime lastBar = iTime(_Symbol, _Period, 0);
   
   if(newTime != lastBar)
   {  
      newTime = lastBar;
      return true;
   }
   else
      return false;
}

//+------------------------------------------------------------------+