値動きの規則性:その1。価格志向

 

書き込みを別スレッドに移動することにした・・・。

1.きっかけは、ウィリアムズの本を読み返したときに、チャートでインテリアバーのシェアを確認しようと思ったことです。そこで、内側と外側の棒グラフを比較してみたところ、内側の棒グラフが外側の棒グラフより高いというパターンを発見しました。

インテリアバーとエクステリアバーとは何か、思い出してみてください。

上のスクリーンショットでは、バーAのバーBは外部、バーRのバーFは内部です。

この分野の研究のために、簡単なスクリプトを書きました。

// Скрипт для подсчёта доли внешних и внутренних бар //
#property  copyright "Copyright © Svinotavr-2000"
#property  link      "DmitriyN"

int start()
 {
   double n;                // Количество бар всего, шт
   double KolVneshBar;      // Количество внешних бар, шт
   double KolVnutrBar;      // Количество внутренних бар, шт
   double ProcentVneshBar;  // Процент внешних бар, %
   double ProcentVnutrBar;  // Процент внутренних бар, %
   double OtnoshVnutKVnesh; // Отношение числа внутренних бар к числу внешних бар, раз
   // Берём число бар на единицу меньшее, чем всего
   n=Bars-1; 
   // Цикл по всем барам
        for(int j = 0; j < n; j++)
        {      
               // Считаем количество внешних бар
               if ((High[j+1] < High[j]) && (Low[j+1] > Low[j]))
               {
               KolVneshBar=KolVneshBar+1;
               }  
               // Считаем количество внутренних бар
               if ((High[j+1] > High[j]) && (Low[j+1] < Low[j]))
               {
               KolVnutrBar=KolVnutrBar+1;
               }      
         }
  // Считаем отношение числа внутренних бар к числу внешних бар
  OtnoshVnutKVnesh=KolVnutrBar/KolVneshBar;
  // Переводим в проценты
  ProcentVneshBar=KolVneshBar/n*100;
  ProcentVnutrBar=KolVnutrBar/n*100;
  // Формируем строки для печати
   string S0 = "\n" + "=============== Результаты расчётов ===============" + "\n" + "\n";  
   string S1 = "Исследовано бар = " + DoubleToStr(n,0)+ " шт" + "\n"; 
   string S2 = "Процент внешних бар = " + DoubleToStr(ProcentVneshBar,3) +" %" + "\n"; 
   string S3 = "Процент внутренних бар = " + DoubleToStr(ProcentVnutrBar,3)+ " %" +"\n";
   string S4 = "Отношение числа внутренних бар к числу внешних бар = " + DoubleToStr(OtnoshVnutKVnesh,2);
  // Выводим на экран     
   Comment(S0, S1, S2, S3, S4);          
 }

スクリプトの結果例。

2.そこで、このロジックに従って、内三角形と外三角形の関係を調べてみることにしたのです。内側の三角形はフェードアウト、外側の三角形はフレアリングと呼んでいました。
そのために簡単なスクリプトを書きました。

// Скрипт для подсчёта соотношения чисел затухающих и разгорающихся треугольников //
// Skript OtnoshZatRazTreug, июнь 2012
// Примечание: скрипт может немного подвисать на ТФ M1.
#property  copyright "Copyright © Svinotavr-2000"
#property  link      "DmitriyN"

int start()
 { 
   // Декларация
   double DliPer;           // Длительность периода исследования, лет
   double n;                // Количество бар, шт
   double KolZatTre;        // Количество затухающих треугольников, шт
   double KolRazTre;        // Количество разгорающихся треугольников, шт   
   double OtnoshZatRaz;     // Отношение числа затухающих треугольников к числу разгорающихся, раз
   double Pogreshnost;      // Погрешность исследования, %
   // Берём число бар на 5 меньшее, чем всего
   n=Bars-5; 
        // Цикл по всем барам
        for(int j = 0; j < n; j++)
        {             
               // Считаем количество ЗАТУХАЮЩИХ треугольников    ===========              
               
               // Проверяем, являются ли High баров после начального бара (j+5) 
               // _ меньше либо равными High начального бара (j+5)
               if (High[j+5] >= High[j+4]) {
               if (High[j+5] >= High[j+3]) {
               if (High[j+5] >= High[j+2]) {
               if (High[j+5] >= High[j+1]) {
               if (High[j+5] >= High[j])   {
               // Проверяем, являются ли Low баров после начального бара (j+5) 
               // _ больше либо равными Low начального бара (j+5)
               if (Low[j+5] <= Low[j+4])   {
               if (Low[j+5] <= Low[j+3])   {
               if (Low[j+5] <= Low[j+2])   {
               if (Low[j+5] <= Low[j+1])   {
               if (Low[j+5] <= Low[j])     {
               KolZatTre=KolZatTre+1;               
               }}}}}  }}}}}
               
               // Считаем количество РАЗГОРАЮЩИХСЯ треугольников ===========                
               
               // Проверяем, являются ли High баров после начального бара (j+5) 
               // _ больше либо равными High начального бара (j+5)
               if (High[j+5] <= High[j+4]) {
               if (High[j+5] <= High[j+3]) {
               if (High[j+5] <= High[j+2]) {
               if (High[j+5] <= High[j+1]) {
               if (High[j+5] <= High[j])   {
               // Проверяем, являются ли Low баров после начального бара (j+5) 
               // _ меньше либо равными Low начального бара (j+5)
               if (Low[j+5] >= Low[j+4])   {
               if (Low[j+5] >= Low[j+3])   {
               if (Low[j+5] >= Low[j+2])   {
               if (Low[j+5] >= Low[j+1])   {
               if (Low[j+5] >= Low[j])     {
               KolRazTre=KolRazTre+1;               
               }}}}}  }}}}}                          
         }
  // Вычисляем длительность периода истории исследования (календарный)
  DliPer = n*Period()/(1440*365);         
  // Считаем отношение числа затухающих треугольников к разгорающимся
  OtnoshZatRaz=KolZatTre/KolRazTre;
  // Вычисляем погрешность расчётов
  Pogreshnost=(1/(KolZatTre) + 1/(KolRazTre))*100;
  // Формируем строки для печати
   string S0 = "\n" + "================= Результаты расчётов =================" + "\n" + "\n";  
   string S1 = "Исследовано бар = " + DoubleToStr(n,0)+ " шт" + "\n";
   string S2 = "Длительность периода исследования = " + DoubleToStr(DliPer,1)+ " лет" + "\n";
   string S3 = "Погрешность расчётов = " + DoubleToStr(Pogreshnost,3)+ " %"+ "\n";  
   string S4 = "Отношение числа затухающих треугольников к разгорающимся = " + DoubleToStr(OtnoshZatRaz,3)+ " раз";
  // Выводим строки на экран     
   Comment(S0, S1, S2, S3, S4);          
 }

上記のスクリプトは、6本の棒の大きさの三角形を分析した。このスクリプトでは、計算誤差を算出する非常にシンプルな方法が追加されている。

スクリプトの結果の一例です。

ここで、フェードトライアングルとフレアトライアングルとは何かを思い出してみよう。フェードトライアングル(1)とフレアトライアングル(2)の例。

1). 2).

 

3.次に、三角形のバーの本数を7本に増やそうと思い、スクリプトを少し作り直しました。

// Скрипт для подсчёта соотношения чисел затухающих и разгорающихся треугольников //
// Skript OtnoshZatRazTreug, июнь 2012
// Примечание: скрипт может немного подвисать на ТФ M1.
#property  copyright "Copyright © Svinotavr-2000"
#property  link      "DmitriyN"
//#property show_inputs     

int start()
 { 
   // Декларация
   double DliPer;           // Длительность периода исследования, лет
   double n;                // Количество бар, шт
   double KolZatTre;        // Количество затухающих треугольников, шт
   double KolRazTre;        // Количество разгорающихся треугольников, шт   
   double OtnoshZatRaz;     // Отношение числа затухающих треугольников к числу разгорающихся, раз
   double Pogreshnost;      // Погрешность исследования, %
   // Берём число бар на 6 меньшее, чем всего
   n=Bars-6; 
        // Цикл по всем барам
        for(int j = 0; j < n; j++)
        {             
               // Считаем количество ЗАТУХАЮЩИХ треугольников    ===========              
               
               // Проверяем, являются ли High баров после начального бара (j+5) 
               // _ меньше либо равными High начального бара (j+5)
               if (High[j+6] >= High[j+5]) {
               if (High[j+6] >= High[j+4]) {
               if (High[j+6] >= High[j+3]) {
               if (High[j+6] >= High[j+2]) {
               if (High[j+6] >= High[j+1]) {
               if (High[j+6] >= High[j])   {
               // Проверяем, являются ли Low баров после начального бара (j+5) 
               // _ больше либо равными Low начального бара (j+5)
               if (Low[j+6] <= Low[j+5])   {
               if (Low[j+6] <= Low[j+4])   {
               if (Low[j+6] <= Low[j+3])   {
               if (Low[j+6] <= Low[j+2])   {
               if (Low[j+6] <= Low[j+1])   {
               if (Low[j+6] <= Low[j])     {
               KolZatTre=KolZatTre+1;               
               }}}}}}  }}}}}}
               
               // Считаем количество РАЗГОРАЮЩИХСЯ треугольников ===========                
               
               // Проверяем, являются ли High баров после начального бара (j+5) 
               // _ больше либо равными High начального бара (j+5)
               if (High[j+6] <= High[j+5]) {
               if (High[j+6] <= High[j+4]) {
               if (High[j+6] <= High[j+3]) {
               if (High[j+6] <= High[j+2]) {
               if (High[j+6] <= High[j+1]) {
               if (High[j+6] <= High[j])   {
               // Проверяем, являются ли Low баров после начального бара (j+5) 
               // _ меньше либо равными Low начального бара (j+5)
               if (Low[j+6] >= Low[j+5])   {
               if (Low[j+6] >= Low[j+4])   {
               if (Low[j+6] >= Low[j+3])   {
               if (Low[j+6] >= Low[j+2])   {
               if (Low[j+6] >= Low[j+1])   {
               if (Low[j+6] >= Low[j])     {
               KolRazTre=KolRazTre+1;               
               }}}}}}  }}}}}}                          
         }
  // Вычисляем длительность периода истории исследования (календарный)
  DliPer = n*Period()/(1440*365);         
  // Считаем отношение числа затухающих треугольников к разгорающимся
  OtnoshZatRaz=KolZatTre/KolRazTre;
  // Вычисляем погрешность расчётов
  Pogreshnost=(1/(KolZatTre) + 1/(KolRazTre))*100;
  // Формируем строки для печати
   string S0 = "\n" + "================= Результаты расчётов =================" + "\n" + "\n";  
   string S1 = "Исследовано бар = " + DoubleToStr(n,0)+ " шт" + "\n";
   string S2 = "Длительность периода исследования = " + DoubleToStr(DliPer,1)+ " лет" + "\n";
   string S3 = "Погрешность расчётов = " + DoubleToStr(Pogreshnost,3)+ " %"+ "\n";  
   string S4 = "Отношение числа затухающих треугольников к разгорающимся = " + DoubleToStr(OtnoshZatRaz,3)+ " раз"+ "\n";
   string S5 = "Число затухающих треугольников = " + DoubleToStr(KolZatTre,0)+ " шт"+ "\n";
   string S6 = "Число разгорающихся треугольников = " + DoubleToStr(KolRazTre,0)+ " шт";
  // Выводим строки на экран     
   Comment(S0, S1, S2, S3, S4, S5, S6);          
 }

スクリプトの結果の一例です。



2%強の計算精度で23.1倍の差は、規則性とは言い難いことに納得していただけるはずです。

これらのことから、どのような結論が導き出されるのでしょうか。結論は、価格には向き(方向性)があるということです。

価格が反転した場合、多くのExpert Advisorが 得る結果は全く異なり、おそらくトレーダーに有利になる可能性があります。

もし興味があるなら - 読んで、考えて、実験して・・・。
このパターンを、正規分布の中にあるランダムな増分でチャート上で確認したい場合は、どうぞ :)
もし誰かが建設的な批判(無差別ではなく、建設的な)や提案をしてくれるなら、喜んで耳を傾けるでしょう。

 

後者の - あなたがフェードトライアングルと呼んでいる可能性が最も高く、さらに時計に - ちょうどローソク足のボラティリティ:-)のSessional減少である。

さらに、ここまでは、いわば基準点を見つけたわけですが、その先のバーの挙動(動きの方向)は、ほぼ半々でしょう......。というわけで、このようなことは実用的な価値はありません。)(MMは関係なく :-) IMHO。

 
DmitriyN:

もし、どなたか建設的な批判(無差別ではなく、建設的な)、提案があれば、喜んでお聞きします。

FXでパターンを探すなら、まっとうなものを。

1.証券会社のデータを表示したり、異なる証券会社のデータを比較したり、私のために、フィルタのパターンはほとんど興味があるとして、あなたがパターンを探している場合は、まともなこと。

2)1つの通貨ペアとTFだけでなく、より良い - 再び異なるペアと異なるTFを表で示す。

そんなテーブルがあれば、話も弾むのですが...。

;)

 
avatara:
もう少ししたら、そのための時間が必要です。今回は-アルパリDCです。
上記の誤りを修正しました。
 

クロスで三角形を探すと、SGDJPYのようにさらに多くなると思います。

残念ながら、私はこのようなエキゾチックな作品にはあまり縁がないのです。

 
表1:ペア - EURUSD|デモ口座|Alpariの相場|7-bar triangles

タイムフレーム
比率、倍
精度、%
歴史の期間、年
М1
2,185
0,003
8,3
М5
3,849
0,038
8,9
М15
9,569
0,313
8,9
М30
14,39
0,836
8,9
Н1
23,17
2,268
8,9


TF H4では誤差が許容できないほど大きくなり、データが不足している。
そこにある消えゆく三角形の数は143個で、燃え上がる三角形の数は9年の歴史につき1個(1個)である。

おそらく、精度の計算方法や三角形の公式化アルゴリズムの見直しが必要になると思われます。

 

また、もう少しスクリプトを複雑にすると、三角形の時間的な頻度を確認することができます

例えば、月、週、日などの取引期間中に

実用的な使い方は、もっと

 

表2:ペア - GBPUSD|デモ口座|Alpariの相場|7-barの三角形

タイムフレーム
比率、倍
精度、%
歴史期間、年
M1
2,844
0,004
8,1
M5
4,289
0,041
8,8
M15
7,688
0,243
8,9
M30
10,84
0,642
8,9
H1
17,25
1,793
8,9

TF H4では、約17.3%と大きな誤差があります。9年史の三角形の数は、161個÷6個=26.8倍となる。

 
DmitriyN:

メッセージを別スレッドに移動させることにした...。

1.ウィリアムズの本を読み直すことから始め、チャートでインテリアバーのシェアを確認することにしました。そこで、インテリアバーとエクステリアバーのシェアを比較することにした。その結果、インテリアバーのシェアがエクステリアバーより高いというパターンを発見した。

これは、実験をしなくても明らかなことです。

どちらのポプラが "内 "か "外 "かというと、"内 "に決まっている。

だって、外側にあるのは、大きくて長いポプラだから...。うっ、バーか......明らかに小さく短いものよりも統計的に少ないな。ロングキャンドルの頻度が少ない。短いものをより頻繁に。

パターン?はい。

そして、「 これは 何を意味するのか?

その答えは、「ネット 」です。

エンリッチメントレシピ

私たちは、狭窄チェーンに小さなバーを取り、網を左右に置き、詰め替えで、遠くへ行くほど、-詰め替えが多くなります。その方向で、最初の利益で再生されます - 彼は勝った。

 
DmitriyN:

2.そこで、このロジックに従って、内三角形と外三角形の比率を調べてみることにしたのです。内側の三角形はダンピング、外側の三角形はフレアと呼びました。
そのために簡単なスクリプトを書きました。


また、この三角形の各点の大きさや、形成された時間(日数)についても統計を取るとよいでしょう。

ニュースでフェードアウトする三角形が発生することを想定する。

理由: