especialista baseado na Teoria da Onda de Elliott - página 12

 
Yurixx:
Inteiro:
Yurixx:


Imagine um simples TS baseado em um oscilador normalizado. Nas alturas em que vendemos, e nas baixas compramos. Assim, é suficiente identificar o extremo na hora certa para negociar com sucesso. Simples, não é? E definitivamente o suficiente. Você pode fazer isso rapidamente (não muito rapidamente)? Ou, pelo menos, apenas faça isso?


Pode e muito e rápido.


Ótimo! Em seguida, insira um indicador RSI(14,Close) no EURUSD, M1 e resolva o problema de identificar sem atrasar os extremos RSI.

A amplitude da mudança da LER entre os extremos adjacentes deve ser de pelo menos 25.


Formular o problema de forma precisa e completa. Se teoricamente é solvível, é praticamente solvível também. Uma vez formulado corretamente o problema, todos eles podem ser resolvidos (e você mesmo pode fazer isso). Neste problema, o critério de identificação de um extremo é a redução de um valor em 25 unidades, ou seja, a identificação por tal critério sem um retardamento não pode ser resolvida teoricamente. Se você definir o critério - mais de 25 à esquerda e mais de 5 mas menos de 10 à direita - o atraso será menor, mas os sinais falsos serão mais.

 
//+------------------------------------------------------------------+
//|                                                     toYurixx.mq4 |
//|                                                                * |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "*"
#property link      "*"
 
#property indicator_separate_window
#property indicator_maximum 100
#property indicator_minimum 0
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 DeepSkyBlue
#property indicator_color3 Red
//---- input parameters
extern int       RightMore=5;
extern int       RightLess=10;
extern int       LeftMore=25;
 
 
//---- buffers
double rsi[];
double u[];
double l[];
 
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,rsi);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,159);
   SetIndexBuffer(1,u);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,159);
   SetIndexBuffer(2,l);
   SetIndexEmptyValue(2,0.0);
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    limit=Bars-IndicatorCounted();
      for(int i=0;i<limit;i++){
         rsi[i]=iRSI(NULL,0,14,0,i);
      }
      ArrayInitialize(u,EMPTY_VALUE);
      ArrayInitialize(l,EMPTY_VALUE);      
      for(i=Bars-1;i>=0;i--){
         double max=rsi[i];
         int maxb;
         for(int j=i;j<Bars;j++){
               if(rsi[j]>max){
                  max=rsi[j];
                  maxb=j;
               }
               if(max-rsi[i]>RightLess){
                  break;//не состоялся
               }
               if(max-rsi[j]>LeftMore){
                     if(max-rsi[i]>RightMore){//нашли
                        u[maxb]=rsi[maxb];
                     }
                  break;
               }
         }
         
         max=rsi[i];
         for(j=i;j<Bars;j++){
               if(rsi[j]<max){
                  max=rsi[j];
                  maxb=j;
               }
               if(rsi[i]-max>RightLess){
                  break;//не состоялся
               }
               if(rsi[j]-max>LeftMore){
                     if(rsi[i]-max>RightMore){//нашли
                        l[maxb]=rsi[maxb];
                     }
                  break;
               }
         }         
         
      }
      
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

Total 23.06.2007 01:45 - 23.06.2007 01:08 = 37 minutos que levei para resolver o problema, mas também tomei café por este tempo. Devo também introduzir o critério do número de barras à esquerda do extremo e à direita.

 
Integer:
Yurixx:


Ótimo! Então vamos jogar o indicador RSI(14,Close) no EURUSD, M1 e resolver o problema de identificação sem um atraso do RSI extrema.

A amplitude da mudança do RSI entre os extremos adjacentes deve ser de pelo menos 25.


Formular o problema de forma precisa e completa. Se teoricamente é solvível, é praticamente solvível também. Uma vez formulado corretamente o problema, todos eles podem ser resolvidos (e você mesmo pode fazer isso). Neste problema, o critério de identificação de um extremo é o rollback de 25 unidades, ou seja, a identificação por tal critério sem um atraso não pode ser resolvida teoricamente. Se você definir o critério - mais de 25 à esquerda e mais de 5 mas menos de 10 à direita - o atraso será menor, mas os sinais falsos serão mais.


Obrigado, é claro, pelo código, mas não é, como você mesmo entende, a solução e não é o problema.

Posso ter colocado isso de forma muito sucinta, mas na verdade é uma afirmação bastante correta. Pode ser mais longo. O que é necessário é o procedimento para a identificação de um extremo local que opera em tempo real e não na história. Identificação significa determinação, ao completar uma barra, se o ponto apropriado do gráfico indicador é um ponto de extremo local. Um extremo local é um extremo que tem uma alteração do valor do indicador tanto à direita como à esquerda de pelo menos 25,0

Quanto à próxima mudança do indicador à direita do ponto extremo esperado é desconhecida no momento da conclusão da barra, é uma questão de previsão ótima do comportamento do indicador. Esta previsão não é uma extrapolação, pois os valores do indicador à direita do ponto extremo não são de interesse. A única condição é a condição de extremo, ou seja, os valores indicadores mudarão pelo valor condicionado. A previsão ótima é entendida no sentido estatístico, ou seja, a previsão deve ter uma confiabilidade suficientemente alta.

Formalmente, tudo parece diferente, mas eu não disse nada de novo para você. Tudo isso já está lá em três palavras "identificação sem atraso".

Gostaria de chamar sua atenção para o fato de que um roteiro elementar de busca de extrema com determinadas propriedades em uma história emoldurada poderia ter sido escrito de forma mais concisa e simples. Os loops aninhados são um exagero caro e se tornarão um gargalo para grandes matrizes. Tudo isso pode ser feito de uma só vez, ou seja, apenas um novo valor pode ser calculado para cada nova barra, sem nenhum laço. E como você projetou seu roteiro como um indicador, você fará um loop em cada nova barra através de todo o histórico anterior - o tempo de cálculo aumenta por barras*barras/2 vezes. E, se você usar o loop no loop, não faz sentido iniciar o loop sobre j de j=i.

Não analisei seu código em detalhes e não o vi no gráfico, mas me parece que ele contém um erro significativo - ele muda seu próprio resultado. Se, por exemplo, este ponto é um ponto extremo para alguns i, pode não ser mais um ponto extremo ao passar para (i+1) ou mais longe. Isto é, entretanto, resultado da condição imposta por você: mais de 5, menos de 10.

Para a maior parte da história isso não importa. No entanto, isso faz pelo lado certo, e isso importa muito. Esse extremo identificado por seu roteiro à esquerda da barra zero pode desaparecer na barra seguinte, o que não é bom. :-))

 
Yurixx:


1. Obrigado, claro, pelo código, mas isso, como você mesmo entende, não é a solução e não é o problema.

Eu posso ter colocado isso de forma muito sucinta, mas na verdade é uma afirmação bastante justa. Poderia ser mais longo. O que é necessário é o procedimento para identificação de um extremo local, que opera em tempo real, e não no histórico. Identificação significa determinação, ao completar uma barra, se o ponto apropriado do gráfico indicador é um ponto de extremo local. Um extremo local é um extremo que tem uma alteração do valor do indicador tanto à direita como à esquerda de pelo menos 25,0

Quanto à próxima mudança do indicador à direita do ponto extremo esperado é desconhecida no momento da conclusão da barra, é uma questão de previsão ótima do comportamento do indicador. Esta previsão não é uma extrapolação, pois os valores do indicador à direita do ponto extremo não são de interesse. A única condição é a condição de extremo, ou seja, os valores indicadores mudarão pelo valor condicionado. A previsão ótima é entendida no sentido estatístico, ou seja, a previsão deve ter uma confiabilidade suficientemente alta.

Formalmente, tudo parece diferente, mas eu não disse nada de novo para você. Tudo isso já está lá em três palavras "identificação sem atraso".

2. gostaria de chamar sua atenção para o fato de que um roteiro elementar de busca de extrema com determinadas propriedades sobre uma história sofrida poderia ter sido escrito de forma mais sucinta e simples. Os loops aninhados são um exagero caro e se tornarão um gargalo para grandes matrizes. Tudo isso pode ser feito de uma só vez, ou seja, apenas um novo valor pode ser calculado para cada nova barra, sem nenhum laço. E como você projetou seu roteiro como um indicador, você fará um loop em cada nova barra através de todo o histórico anterior - o tempo de cálculo aumenta por barras*barras/2 vezes. E se você usa um loop em loop, não faz sentido iniciar o loop sobre j de j=i.

3. não lidei com seu código em detalhes e não o olhei no gráfico, mas me parece que ele contém um erro significativo - ele muda seu próprio resultado. Se, por exemplo, o ponto é um ponto extremo para alguns i, pode não ser mais um ponto extremo ao passar para (i+1) ou mais longe. Isto é, entretanto, resultado da condição imposta por você: mais de 5, menos de 10.

Para a maior parte da história isso não importa. No entanto, isso faz pelo lado certo, e isso importa muito. Esse extremo identificado por seu roteiro à esquerda da barra zero pode desaparecer na barra seguinte, o que não é bom. :-))

1. A tarefa era identificar os extremos, não PREVENIR sua aparência. Em resumo, ponzi barato .... ... não conseguia prever. ... É o mesmo que dizer: dê-me um graal, para que não haja nenhum alce e 1000%. É exatamente sobre isso que eu estava escrevendo - a tarefa deve primeiro ter uma única solução teórica e depois é implementada em código. Mas a previsão não tem uma solução de valor único.

Por identificação entendemos definir se o ponto correspondente do gráfico indicador é um ponto de extremo local após o fim da barra - Não confundir a bênção de Deus com um ovo - identificação e previsão.

"identificação sem atraso" - mais uma vez também. Identificação sem atraso significa identificação logo no primeiro momento, no qual a situação é inequivocamente identificada.

2. Demonstre e veremos.

Barras*Barras/2 vezes - obviamente você nem entende como funciona, ou você não sabe o significado do operador do intervalo;

não faz sentido iniciar o loop em j a partir do valor j=i - mas qual deles então? Esta é uma pergunta muito interessante para você!!!!

Eu não lidei com seu código em detalhes e não o analisei graficamente, mas me parece que ele contém um erro significativo - ele muda seu próprio resultado.

3. note que ele só muda suas leituras dependendo da barra zero, ainda não formada. E todos os indicadores mudam seu último valor de acordo com o valor na barra zero. Você já viu o indicador Fractals (construído em MT (Menu Principal - Indicadores - Bill Williams - Fractals)) - Dê uma olhada, é muito interessante e fascinante, e pode até ser útil para você algum dia. O cálculo das mudanças na barra zero durante a programação dos indicadores é pelo menos a regra das boas maneiras, se não uma regra inviolável de sua programação. A primeira barra é normalmente limitada a muito inexperiente, não muito profunda na essência do indicador.

Nunca disse que o algoritmo é perfeito, há uma grande reserva para sua aceleração, podemos limitar o cálculo de um indicador apenas a uma nova barra. Mas inicialmente a tarefa era apenas identificar um extremo pelo critério de alterar o valor do indicador por um valor especificado e isso foi resolvido, se ignorarmos suas piadas baratas com a substituição das noções de identificação e previsão.

 
Integer:

... ponce barato ....


Como você quiser. :-)

Inteiro:

Quando se sabe o que se quer, isso é feito muito rapidamente.

Aparentemente, houve uma substituição de "sabe-se o que se quer" e "uma solução teórica". Seus conceitos, a propósito.

 
É um bom tópico, é uma pena que tenha ficado sem vapor.
Para programadores profissionais, eu recomendaria cavar a DLL de produtos Elliottician. Eles escrevem suas criações em VisualWasic, mas as bibliotecas têm uma descrição de ondas e padrões com as noções usuais de alto, próximo, etc. Além disso, as últimas versões do RET contêm um plugin para Forex. E desmontar a DLL com a base das ondas durante os últimos 15 anos é muito tentador!
 
Bookkeeper:

Pergunta: É possível ajustar a estratégia a um pipsetting arriscado e agressivo, não no real,

mas somente em demonstração? A questão não é apenas uma pergunta. É possível com uma entrada insistente ou com toda a coragem.

Penso que é possível, dê uma olhada na aplicação.

Aumentei meu depósito em 900% em uma semana.

Cumprimentos,

Alex Niroba.

Arquivos anexados:
statement.zip  9 kb
 
NYROBA >> :

Acho que é possível, dê uma olhada no aplicativo.

Aumentei meu depoimento em 900% em uma semana.

Cumprimentos,

Alex Niroba.

Sim... longa história, no entanto.

;)

 
divenetz >>:
Хорошая тема, жаль выдохлась.
Для профпрограммистов я бы порекомендовал поковырять DLL от продуктов Elliottician. Они пишут свои творения на ВижуалВасике, но в библиотеках есть описание волн и патернов обычными понятиями high, close и пр. Тем более что последние версии RET содержат плагин для Forex. А разобрать DLL с базой волн за последние 15 лет - очень заманчиво!

O RET é uma merda. Melhor moderno75.nls para desmontar da ElWave (especialmente por ser um arquivo aberto). O RET é quase o mesmo que ondas de vento triviais32.