As regularidades de movimentos de preços: Parte 1. Orientação de preços

 

Decidiu mover os postes para um fio separado.

1. Tudo começou quando eu estava relendo o livro de Williams e decidi verificar a proporção de barras interiores na tabela. Então decidi comparar a porção de barras internas e externas e, como resultado, detectei o seguinte padrão: a porção de barras internas é maior do que a porção de barras externas.

Deixe-me lembrá-lo do que são barras interiores e exteriores:

Na imagem acima: a barra B para a barra A é externa e a barra F para a barra R é interna.

Um roteiro simples foi escrito para pesquisas nesta área:

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

Exemplo do resultado do roteiro:

2. Então, seguindo esta lógica, decidi investigar a relação dos triângulos internos e externos. Eu chamei os triângulos internos de "fading" e os triângulos externos de "flaring".
Para este fim, escrevi um roteiro simples:

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

O roteiro acima analisou triângulos de tamanho seis (6) barras. Neste script foi adicionada uma forma muito simples de calcular o erro de cálculo.

Um exemplo do resultado do roteiro:

Deixe-me lembrá-lo do que são triângulos de desbotamento e de queima. Exemplo de um triângulo em desvanecimento (1) e um triângulo em chamas (2):

1). 2).

 

3. Em seguida, decidi aumentar o número de barras nos triângulos para 7, por isso reditei um pouco o roteiro:

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

Um exemplo do resultado do roteiro:



Você deve concordar que a diferença de 23,1 vezes com precisão de cálculo de um pouco mais de 2% dificilmente pode ser chamada de regularidade.

Que conclusão se pode tirar de tudo isso? A conclusão é que o preço tem uma orientação (direção).

É bem possível que se o preço for revertido, os resultados obtidos por muitos Consultores Especialistas serão bastante diferentes e muito provavelmente serão a favor dos comerciantes:

Se você estiver interessado - leia, pense, experimente...
Se você quiser verificar este padrão em um gráfico com incrementos aleatórios estando na distribuição normal - vá em frente :)
Se alguém tem uma crítica construtiva (construtiva, não indiscriminada) ou sugestões - terei prazer em ouvir.

 

dos últimos - muito provavelmente o que você chama de triângulos de desbotamento e até mesmo no relógio - é apenas uma diminuição da volatilidade do castiçal :-)

e, além disso, você encontrou até agora - por assim dizer - os pontos de referência - mas além deles - o comportamento das barras (direção do movimento) - será de cerca de 50/50... portanto - tudo isso não tem nenhum valor prático :-) (sem considerar o MM :-) IMHO.

 
DmitriyN:

Se alguém tiver alguma crítica construtiva (construtiva, não indiscriminada) ou sugestões, eu ficaria feliz em ouvir.

Se você está procurando por padrões em forex, então seja decente:

Se você está procurando um padrão, seja decente. 1.Indique os dados de uma corretora ou compare os dados de diferentes corretoras, como para mim, os padrões de filtros são de pouco interesse.

2) Indicar não apenas um par de moedas e TF, mas melhor - na tabela novamente pares diferentes e TFs diferentes.

Se tivermos tal mesa, podemos falar sobre ela...

;)

 
avatara:
Precisarei, um pouco mais tarde, de tempo para isso. Neste caso - Alpari DC.
Corrigidos os erros acima.
 

Acho que se você procurar triângulos em cruzes haverá ainda mais como o SGDJPY

Infelizmente eu não tenho muita história com esses exóticos

 
Tabela 1: Par - EURUSD | Conta demo| Citações Alpari | Triângulos de 7 barras

Cronograma
Razão, vezes
Precisão, %
Período da história, anos
М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


Na TF H4, o erro torna-se inaceitavelmente grande - não há dados suficientes.
O número de triângulos de queima é 143, e o número de triângulos de queima é 1 (um) por história de 9 anos.

Muito provavelmente, o método de cálculo da precisão e o algoritmo de formalização dos triângulos terá que ser revisto.

 

E se complicarmos um pouco mais seu roteiro, podemos verificar a freqüência de tempo dos triângulos

por exemplo, dentro de um mês, semana, dia

imho o uso prático seria mais

 

Tabela 2: Par - GBPUSD | conta demo| Citações Alpari | Triângulos de 7 barras

Prazo
Razão, vezes
Precisão, %
Período histórico, anos
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

Na TF H4 o erro é grande - cerca de 17,3%. O número de triângulos nos históricos de 9 anos é 161 pcs /6 pcs = 26,8 vezes.

 
DmitriyN:

Decidiu mover as mensagens para uma linha separada.

1. Tudo começou quando eu estava relendo o livro de Williams e decidi verificar a proporção de barras interiores na tabela. Então decidi comparar a proporção de barras internas e externas e, como resultado, detectei o seguinte padrão: a proporção de barras internas é maior do que a proporção de barras externas.

Isto é óbvio, mesmo sem nenhuma experiência.

quais choupos são mais "dentro" ou "fora"? claro que "dentro"!

Porque os exteriores são os grandes, e os grandes e longos choupos. ugh, barras - obviamente menos estatisticamente que as pequenas e curtas. As velas longas são menos freqüentes. Os curtos com mais freqüência.

Um padrão? Sim.

E agora preste atenção à pergunta: E o que isso nos dá?

a resposta: uma rede!

receita de enriquecimento:

Pegamos uma pequena barra na cadeia de estreitamento e colocamos a rede de ambos os lados, com um refil, quanto mais distante - mais refil. Em cuja direção o primeiro vai jogar no lucro - ele ganhou.

 
DmitriyN:

2. Então, seguindo esta lógica, decidi investigar a proporção de triângulos internos e externos. Chamei os triângulos internos de úmidos, e os triângulos externos de queimados.
Um roteiro simples foi escrito para este fim:


Também seria bom coletar estatísticas sobre o tamanho em pontos destes triângulos, e muito bem sobre o tempo (dias) de sua formação.

Suponho que os triângulos desbotados ocorram nas notícias.