Las regularidades de los movimientos de los precios: Parte 1. Orientación de precios

 

Decidí mover los mensajes a un hilo separado...

1. Todo empezó cuando estaba releyendo el libro de Williams y decidí comprobar la proporción de barras interiores en el gráfico. Entonces decidí comparar la porción de barras interiores y exteriores y, como resultado, detecté el siguiente patrón: la porción de barras interiores es mayor que la porción de barras exteriores.

Permítame recordarle lo que son las barras interiores y exteriores:

En la captura de pantalla anterior: la barra B de la barra A es externa y la barra F de la barra R es interna.

Se escribió un sencillo guión para la investigación en este ámbito:

// Скрипт для подсчёта доли внешних и внутренних бар //
#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);          
 }

Ejemplo del resultado del script:

2. Entonces, siguiendo esta lógica, decidí investigar la relación de los triángulos internos y externos. Llamé a los triángulos internos desvanecidos y a los externos acampanados.
Para ello escribí un sencillo script:

// Скрипт для подсчёта соотношения чисел затухающих и разгорающихся треугольников //
// 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);          
 }

El script anterior analizó triángulos de tamaño seis (6) barras. En este script se ha añadido una forma muy sencilla de calcular el error de cálculo.

Un ejemplo del resultado del script:

Permítanme recordarles lo que son los triángulos desvanecidos y acampanados. Ejemplo de un triángulo desvanecido (1) y de un triángulo ensanchado (2):

1). 2).

 

3. A continuación, decidí aumentar el número de barras en los triángulos a 7, así que rehice un poco el guión:

// Скрипт для подсчёта соотношения чисел затухающих и разгорающихся треугольников //
// 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);          
 }

Un ejemplo del resultado del script:



Estará de acuerdo en que la diferencia de 23,1 veces con una precisión de cálculo de poco más del 2% difícilmente puede llamarse regularidad.

¿Qué conclusión se puede sacar de todo esto? La conclusión es que el precio tiene una orientación (dirección).

Es muy posible que si el precio se invierte, los resultados obtenidos por muchos Asesores Expertos serán muy diferentes y muy probablemente estarán a favor de los operadores:

Si te interesa, lee, piensa, experimenta...
Si quieres comprobar este patrón en un gráfico con incrementos aleatorios que estén en la distribución normal, adelante :)
Si alguien tiene una crítica constructiva (constructiva, no indiscriminada) o sugerencias, estaré encantado de escucharlas.

 

de este último - lo más probable es que lo que usted llama triángulos de desvanecimiento e incluso en el reloj - es sólo una disminución Sessional en la volatilidad de velas :-)

y además, hasta ahora - por así decirlo - has encontrado los puntos de referencia - pero más allá de ellos - el comportamiento de las barras (dirección del movimiento) - será aproximadamente 50/50... por lo tanto - todo esto no tiene ningún valor práctico :-) (sin tener en cuenta a MM :-) IMHO.

 
DmitriyN:

Si alguien tiene alguna crítica constructiva (constructiva, no indiscriminada) o sugerencias, estaré encantado de escucharlas.

Si está buscando patrones en forex, entonces sea decente:

Si buscas un patrón, sé decente. 1.Indica los datos de una empresa de corretaje o compara los datos de diferentes empresas de corretaje, ya que para mí, los patrones de los filtros son de poco interés.

2) Indicar no sólo un par de divisas y TF, pero mejor - en la tabla de nuevo diferentes pares y diferentes TFs.

Si tenemos una mesa así, podemos hablar de ella...

;)

 
avatara:
Un poco más tarde, necesitaré tiempo para eso. En este caso - Alpari DC.
Se han corregido los errores anteriores.
 

Creo que si buscas triángulos en los cruces habrá aún más como el SGDJPY

Lamentablemente no tengo mucha historia con estos exóticos

 
Tabla 1: Par - EURUSD | Cuenta demo| Cotizaciones Alpari | Triángulos de 7 barras

Marco temporal
Ratio, veces
Precisión, %
Período de la historia, años
М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


En el TF H4 el error se vuelve inaceptablemente grande: no hay suficientes datos.
El número de triángulos que se desvanecen es de 143, y el número de triángulos que se desvanecen es de 1 (uno) por historia de 9 años.

Lo más probable es que haya que revisar el método de cálculo de la precisión y el algoritmo de formalización de los triángulos.

 

Y si complicamos un poco más tu script, podemos comprobar la frecuencia temporal de los triángulos

por ejemplo, en un mes, una semana o un día de negociación

En mi opinión, el uso práctico sería más

 

Tabla 2: Par - GBPUSD | cuenta demo| cotizaciones Alpari | triángulos de 7 barras

Plazo de tiempo
Ratio, veces
Precisión, %
Período de la historia, años
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

En el TF H4 el error es grande: alrededor del 17,3%. El número de triángulos en los historiales de 9 años es de 161 pcs /6 pcs = 26,8 veces.

 
DmitriyN:

Decidí mover los mensajes a un hilo separado...

1. Empecé releyendo el libro de Williams y decidí comprobar la proporción de barras interiores en el gráfico. Entonces decidí comparar la cuota de bares interiores y exteriores y, como resultado, detecté el siguiente patrón: la cuota de bares interiores es mayor que la de bares exteriores.

Esto es obvio incluso sin ningún experimento.

¿qué álamos están más "dentro" o "fuera"? ¡Por supuesto que "dentro"!

Porque los exteriores son los grandes, y los grandes y largos álamos... ugh, bares - obviamente menos estadísticamente que los pequeños y cortos. Las velas largas son menos frecuentes. Los cortos más a menudo.

¿Un patrón? Sí.

Y ahora presta atención a la pregunta: ¿Y qué nos da esto?

la respuesta: ¡una red!

receta de enriquecimiento:

Tomamos una pequeña barra en la cadena de estrechamiento, y poner la red a ambos lados, con un relleno, el más lejos - el más relleno. En cuya dirección jugará el primero en la ganancia - ganó.

 
DmitriyN:

2. Entonces, siguiendo esta lógica, decidí investigar la proporción de triángulos internos y externos. Llamé a los triángulos interiores amortiguados, y a los exteriores acampanados.
Para ello se escribió un sencillo guión:


También sería bueno recoger estadísticas sobre el tamaño en puntos de estos triángulos, y muy bien sobre el tiempo (días) de su formación.

Asumiré que los triángulos que se desvanecen ocurren en las noticias.