experto basado en la teoría de las ondas de Elliott - página 12

 
Yurixx:
Entero:
Yurixx:


Imagina un simple TS basado en un oscilador normalizado. En los máximos vendemos, y en los mínimos compramos. Por lo tanto, basta con identificar el extremo en el momento adecuado para operar con éxito. Simple, ¿no? Y definitivamente suficiente. ¿Puedes hacerlo rápido (no muy rápido)? ¿O al menos hacerlo?


Puede y muy y rápido.


¡Grandioso! Entonces lanza un indicador RSI(14,Close) en EURUSD, M1 y resuelve el problema de identificar sin retraso los extremos del RSI.

La amplitud del cambio del RSI entre los extremos adyacentes debe ser de al menos 25.


Formule el problema de forma precisa y completa. Si es solucionable en teoría, también lo es en la práctica. Una vez formulado el problema correctamente, todos ellos pueden resolverse (y usted mismo puede hacerlo). En este problema, el criterio de identificación de un extremo es retroceder un valor en 25 unidades, es decir, la identificación por dicho criterio sin retardo no puede resolverse teóricamente. Si se define un criterio -más de 25 a la izquierda y más de 5 pero menos de 10 a la derecha- el retraso será menor pero las señales falsas serán mayores.

 
//+------------------------------------------------------------------+
//|                                                     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 me llevó resolver el problema, pero también tomé café durante este tiempo. También debo introducir el criterio del número de barras a la izquierda del extremo y a la derecha.

 
Integer:
Yurixx:


¡Grandioso! Entonces lancemos el indicador RSI(14,Close) en EURUSD, M1 y resolvamos el problema de la identificación sin retardo de los extremos del RSI.

La amplitud del cambio del RSI entre extremos adyacentes debe ser de al menos 25.


Formule el problema de forma precisa y completa. Si es solucionable en teoría, también lo es en la práctica. Una vez formulado el problema correctamente, todos ellos pueden resolverse (y usted mismo puede hacerlo). En este problema, el criterio de identificación de un extremo es el retroceso de 25 unidades, es decir, la identificación por dicho criterio sin retardo no puede resolverse teóricamente. Si se define un criterio -más de 25 a la izquierda y más de 5 pero menos de 10 a la derecha- el retraso será menor pero las señales falsas serán mayores.


Gracias, por supuesto, por el código, pero no es, como tú mismo entiendes, la solución ni el problema.

Puede que lo haya expresado de forma demasiado sucinta, pero en realidad es una afirmación bastante correcta. Puede ser más largo. Lo que se necesita es un procedimiento de identificación de un extremo local que opere en tiempo real y no en la historia. Por identificación se entiende la determinación, al finalizar una barra, de si el punto correspondiente del gráfico del indicador es un punto de extremo local. Un extremo local es un extremo que tiene un cambio del valor del indicador tanto a la derecha como a la izquierda de al menos 25,0

En la medida en que se desconoce el próximo cambio del indicador a la derecha del punto extremo esperado en el momento de la finalización de la barra, se trata de una predicción óptima del comportamiento del indicador. Esta predicción no es una extrapolación, ya que los valores del indicador a la derecha del punto extremo no son de interés. La única condición es la condición de extremo, es decir, que los valores de los indicadores cambien por el valor condicionado. La predicción óptima se entiende en el sentido estadístico, es decir, el pronóstico debe tener una fiabilidad suficientemente alta.

Formalmente todo parece diferente, pero no he dicho nada nuevo para ti. Todo esto ya está en tres palabras "identificación sin retardo".

Me gustaría llamar la atención sobre el hecho de que un guión elemental para la búsqueda de extremos con propiedades dadas en una historia co-enmarcada podría haber sido escrito de forma más concisa y sencilla. Los bucles anidados son una exageración costosa y se convertirán en un cuello de botella para las matrices grandes. Todo esto se puede hacer de una sola vez, es decir, sólo se puede calcular un nuevo valor para cada nueva barra, sin bucles en absoluto. Y como ha diseñado su script como un indicador, hará un bucle en cada nueva barra a través de todo el historial anterior - el tiempo de cálculo aumenta en Bars*Bars/2 veces. Y, si se utiliza el bucle en el bucle, no tiene sentido iniciar el bucle sobre j desde j=i.

No he revisado su código en detalle y no lo he mirado en el gráfico, pero me parece que contiene un error importante: cambia su propio resultado. Si, por ejemplo, este punto es un punto extremo para algún i, puede dejar de serlo al pasar a (i+1) o más allá. Sin embargo, esto es resultado de la condición impuesta por usted: más de 5, menos de 10.

Durante la mayor parte de la historia no importa. Sin embargo, sí lo hace para el borde derecho, y eso importa mucho. Ese extremo identificado por su script a la izquierda de la barra cero puede desaparecer en la siguiente barra, lo cual no es bueno. :-))

 
Yurixx:


1. Gracias, por supuesto, por el código, pero eso, como tú mismo entiendes, no es la solución ni el problema.

Puede que lo haya expresado de forma demasiado sucinta, pero en realidad es una afirmación bastante justa. Podría ser más largo. Lo que se necesita es el procedimiento de identificación de un extremo local, que opera en tiempo real, no en el historial. Por identificación se entiende la determinación, al finalizar una barra, de si el punto correspondiente del gráfico del indicador es un punto de extremo local. Un extremo local es un extremo que tiene un cambio del valor del indicador tanto a la derecha como a la izquierda de al menos 25,0

En la medida en que se desconoce el próximo cambio del indicador a la derecha del punto extremo esperado en el momento de la finalización de la barra, se trata de una predicción óptima del comportamiento del indicador. Esta predicción no es una extrapolación, ya que los valores del indicador a la derecha del punto extremo no son de interés. La única condición es la condición de extremo, es decir, que los valores de los indicadores cambien por el valor condicionado. La predicción óptima se entiende en el sentido estadístico, es decir, el pronóstico debe tener una fiabilidad suficientemente alta.

Formalmente todo parece diferente, pero no he dicho nada nuevo para ti. Todo esto ya está en tres palabras "identificación sin retardo".

2. Me gustaría llamar la atención sobre el hecho de que un guión elemental para buscar extremos con propiedades dadas en una historia enmarcada podría haberse escrito de forma más sucinta y sencilla. Los bucles anidados son una exageración costosa y se convertirán en un cuello de botella para las matrices grandes. Todo esto se puede hacer de una sola vez, es decir, sólo se puede calcular un nuevo valor para cada nueva barra, sin bucles en absoluto. Y como ha diseñado su script como un indicador, hará un bucle en cada nueva barra a través de todo el historial anterior - el tiempo de cálculo aumenta en Bars*Bars/2 veces. Y si usas un bucle en un bucle, no tiene sentido empezar el bucle sobre j desde j=i.

3. No he tratado su código en detalle y no lo he mirado en el gráfico, pero me parece que contiene un error importante: cambia su propio resultado. Por ejemplo, si el punto es un punto extremo para algún i, puede dejar de serlo al pasar a (i+1) o más allá. Sin embargo, esto es resultado de la condición impuesta por usted: más de 5, menos de 10.

Durante la mayor parte de la historia no importa. Sin embargo, sí lo hace para el borde derecho, y eso importa mucho. Ese extremo identificado por su script a la izquierda de la barra cero puede desaparecer en la siguiente barra, lo cual no es bueno. :-))

1. La tarea consistía en identificar los extremos, no en PREVENIR su aparición. En resumen, ponzi barato .... ...no podía predecir... Es lo mismo que decir: dame un grial para que no haya ningún alce y 1000%. Eso es exactamente lo que estaba escribiendo: la tarea debe tener primero una única solución teórica y luego se implementa en código. Pero la predicción no tiene una solución de un solo valor.

Por identificación nos referimos a definir si el punto correspondiente del gráfico del indicador es un punto de extremo local después de que la barra termine - No confunda la bendición de Dios con un huevo - identificación y predicción.

"identificación sin retardo" - de nuevo también. La identificación sin retardo significa la identificación en el primer momento, en el que la situación se identifica inequívocamente.

2. Demuéstralo y lo veremos.

Bars*Bars/2 veces - obviamente no entiendes cómo funciona, o no sabes el significado del operador de ruptura;

no tiene sentido iniciar el bucle en j desde el valor j=i - ¿pero cuál entonces? ¡¡¡¡Esta es una pregunta muy interesante para usted!!!!

No he tratado tu código en detalle y no lo he mirado gráficamente, pero me parece que contiene un error importante: cambia su propio resultado.

3. Tenga en cuenta que sólo cambia sus lecturas en función de la barra de cero, aún no formada. Y todos los indicadores cambian su último valor según el valor de la barra cero. ¿Ha visto alguna vez el indicador de fractales (incorporado en MT (Menú principal - Indicadores - Bill Williams - Fractales)) - Échale un vistazo, es muy interesante y fascinante, e incluso puede que te sea útil algún día. El cálculo de los cambios en la barra de cero durante la programación de los indicadores es, al menos, una regla de buena educación, si no una regla inviolable de su programación. La primera barra suele estar limitada a personas muy inexpertas, que no profundizan mucho en la esencia del indicador.

Nunca he dicho que el algoritmo sea perfecto, hay una gran reserva para su aceleración, podemos limitar el cálculo de un indicador a una nueva barra solamente. Pero inicialmente la tarea era sólo identificar un extremo por el criterio de cambiar el valor del indicador por un valor especificado y se ha resuelto, si ignoramos tus bromas baratas con la sustitución de las nociones de identificación y predicción.

 
Integer:

... ponce barato ....


Como quieras. :-)

Entero:

Cuando uno sabe lo que quiere, lo hace muy rápidamente.

Al parecer, se ha sustituido "uno sabe lo que quiere" por "una solución teórica". Sus conceptos, por cierto.

 
Es un buen tema, es una pena que se haya agotado.
Para los programadores profesionales, recomendaría excavar la DLL de los productos Elliottician. Escriben sus creaciones en VisualBasic, pero las librerías tienen una descripción de ondas y paternas con las nociones habituales de alto, cerca, etc. Además, las últimas versiones de RET contienen un plugin para Forex. ¡Y desmontar el DLL con la base de olas de los últimos 15 años es muy tentador!
 
Bookkeeper:

Pregunta: ¿Es posible ajustar la estrategia a un pipsetting arriesgado y agresivo no en el real,

¿pero sólo en la demo? La pregunta no es sólo una pregunta. Es posible con una entrada prepotente o con todas las agallas.

Creo que es posible, echa un vistazo a la aplicación.

Aumenté mi depósito en un 900% en una semana.

Mis saludos,

Alex Niroba.

Archivos adjuntos:
statement.zip  9 kb
 
NYROBA >> :

Creo que es posible, echa un vistazo a la aplicación.

Aumenté mi depo en un 900% en una semana.

Saludos,

Alex Niroba.

Sí... Sin embargo, la historia es larga.

;)

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

RET es una mierda. Mejor modern75.nls para desensamblar desde ElWave (especialmente porque es un archivo abierto). RET es casi lo mismo que winwaves32 trivial.