가격 움직임 패턴: 1부. 가격 방향

 

이 게시물을 별도의 스레드로 이동하기로 결정했습니다...

1. 그것은 내가 Williams의 책을 다시 읽고 차트에서 내부 막대의 비율이 얼마인지 확인하기로 결정했다는 사실에서 시작되었습니다. 그런 다음 내부 막대의 비율과 외부 막대의 비율을 비교하기로 결정한 결과 규칙성이 드러났습니다. 내부 막대의 비율이 외부 막대의 비율보다 높습니다.

내부 및 외부 막대가 무엇인지 상기시켜 드리겠습니다.

위 화면에서: 막대 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)의 예:

하나). 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);          
 }

스크립트 결과의 예:



23.1배의 계산 정확도와 2%가 조금 넘는 차이를 패턴이라고 부르기 어렵다는 데 동의합니다.

이 모든 것에서 어떤 결론을 내릴 수 있습니까? 결론 - 가격에는 방향(방향)이 있습니다.

가격이 역전되면 많은 고문 의 작업 결과가 완전히 달라지고 아마도 상인에게 유리할 가능성이 큽니다.

누가 신경 쓰는지 - 읽고, 생각하고, 실험하십시오 ...
정규 분포에 있는 무작위 증분으로 차트에서 이 패턴을 확인하려는 사람 - 가십시오 :)
누군가가 건설적인 비판(무분별한 것이 아니라 정확히 건설적인)이나 제안이 있다면 기꺼이 듣겠습니다.

 

후자의 - 아마도 당신이 페이딩 삼각형이라고 부르는 것, 심지어 몇 시간 동안 - 그것은 단지 양초의 변동성의 일시적인 감소일 뿐입니다 :-)

그리고 더 나아가 지금까지 참조점을 찾았지만 그 뒤에는 막대의 동작(이동 방향)이 약 50/50이 됩니다. 그러면 이 모든 것이 실용적인 가치가 없습니다. :-) (MM 제외 :-) IMHO..

 
DmitriyN :

누군가가 건설적인 비판(무분별한 것이 아니라 정확히 건설적인)이나 제안이 있다면 기꺼이 듣겠습니다.

핸디캡에서 패턴을 찾고 있다면 괜찮습니다.

1. 데이터가 어느 DC에서 왔는지 표시하거나 비교를 위해 다른 DC에서 데이터를 가져옵니다. 저에게는 필터 패턴이 별로 관심이 없습니다.

2. 하나 이상의 통화 쌍과 TF를 지정하지만 더 나은 방법은 태블릿에서 다른 쌍과 다른 TF를 다시 지정하는 것입니다.

그러한 표 형식의 자료가 있으면 이미 이야기하는 것이 가능합니다 ...

;)

 
avatara :
조금 있다가 할게요, 시간이 필요해요. 이 경우 DC Alpari.
위의 오류를 수정했습니다.
 

십자가로 삼각형을 찾으면 SGDJPY와 같이 더 많을 것입니다.

불행히도 나는 그러한 이국적인 것에 대한 역사가 거의 없습니다.

 
표 1: 쌍 - EURUSD | 데모 계정 | 알파리 따옴표 | 7개의 막대 삼각형

기간
태도, 시간
정확성, %
역사의 기간, 년
M1
2.185
0.003
8.3
M5
3.849
0.038
8.9
M15
9.569
0.313
8.9
M30
14.39
0.836
8.9
H1
23.17
2.268
8.9


TF H4에서 오류는 허용할 수 없을 정도로 커집니다. 데이터가 거의 없습니다.
9년의 역사 동안 흐려지는 삼각형의 수는 143개이고, 번쩍이는 삼각형의 수는 1(하나)입니다.

아마도 정확도를 계산하는 방법과 삼각형을 공식화하는 알고리즘을 수정해야 할 것입니다.

 

그리고 스크립트가 많이 복잡하지 않다면 삼각형 모양의 시간적 반복 빈도를 확인하십시오.

예: 거래 월, 주, 일 동안

IMHO 더 실용적인 사용이있을 것입니다

 

표 2: 쌍 - GBPUSD | 데모 계정 | 알파리 따옴표 | 7개의 막대 삼각형

기간
태도, 시간
정확성, %
역사의 기간, 년
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. 그것은 내가 Williams의 책을 다시 읽고 차트에서 내부 막대의 비율이 얼마인지 확인하기로 결정했다는 사실에서 시작되었습니다. 그런 다음 내부 막대의 비율과 외부 막대의 비율을 비교하기로 결정한 결과 규칙성이 드러났습니다. 내부 막대의 비율이 외부 막대의 비율보다 높습니다.

이것은 경험이 없어도 명백합니다. 우리는 아이비에 3 개의 포플러를 가져갑니다 - 작음, 작음, 작음.

어느 포플러가 더 "내부" 또는 "외부"입니까? 물론 "내부"!

왜냐하면 바깥쪽에 있는 것들은 큰 것이고, 분명히 크고 긴 포플러가 더 적기 때문입니다. 긴 양초 - 덜 자주. 짧음 - 더 자주.

무늬? 네.

이제 질문에 주의를 기울이십시오. 이것이 우리에게 무엇을 주는가?

답: 그리드!

강화 레시피:

우리는 좁아지는 사슬에서 작은 막대를 가져 와서 양쪽에 그리드를 놓고 토핑이 많을수록 더 많이 토핑됩니다. 첫 번째가 이익을 위해 누구의 방향으로 플레이할지 - 그가 이겼습니다.

 
DmitriyN :

2. 또한 이 논리에 따라 내부 삼각형과 외부 삼각형의 비율을 조사하기로 결정했습니다. 나는 안쪽 삼각형이 희미해지고 바깥쪽 삼각형이 솟아오른다고 불렀다.
이를 위해 간단한 스크립트가 작성되었습니다.


이 삼각형의 크기에 대한 통계를 수집하는 것이 좋을 것이며 형성 시간 (일)에 매우 좋을 것입니다.

나는 희미해지는 삼각형이 뉴스에 나타난다고 가정할 것이다.