una estrategia de negociación basada en la teoría de las ondas de Elliott - página 58

 
Hay muchas cosas en la vida que parecen importantes o sin importancia al principio. Como los resultados de un EA primitivo, que según la estimación de Avals tiene que ser justificado al principio, aunque la idea intuitiva es correcta. Pero me resultó más fácil ponerlo a prueba en la realidad que intentar refutarlo. Si dura hasta final de año, probablemente lo pondré a prueba :)
<br / translate="no">
Resumen:
Depósito/retirada: 5.000,00 Línea de crédito: 0,00
Operación cerrada P/L: 1 186,63 P/L flotante: 560,29 Margen: 961,62
Saldo: 6 186,63 Patrimonio neto: 6 746,92 Margen libre: 5 785,30

Beneficio bruto: 3 669,45 Pérdida bruta: 2 482,82 Beneficio neto total: 1 186,63
Factor de ganancia: 1,48 Resultado esperado: 23,27
Reducción absoluta: 143,75 Reducción máxima (%): 858,39 (13,20%)

Total de operaciones: 51 Posiciones cortas (% de won): 26 (42,31%) Posiciones largas (% de won): 25 (56,00%)
Operaciones con beneficios (% del total): 25 (49,02%) Operaciones con pérdidas (% del total): 26 (50,98%)
Operación de mayor beneficio: 540,94 Operación de pérdida: -292,62
Beneficio medio de la operación: 146,78 pérdida de la operación: -95,49
Máximo de victorias consecutivas ($): 6 (1.099,13) pérdidas consecutivas ($): 4 (-744,95)
Ganancia máxima consecutiva (recuento): 1.099,13 (6) pérdida consecutiva (recuento): -744,95 (4)
Promedio de victorias consecutivas: 2 derrotas consecutivas: 2
 
Ajusté mi Asesor Experto un poco en términos de relajar las condiciones de entrada al mercado y añadí un lote variable.
Los resultados están aquí https://c.mql5.com/mql4/forum/2006/06/new_results.zip
El tamaño del lote variaba de 5 a 80 dólares.
El algoritmo de entrada/salida fue desarrollado teniendo en cuenta el EURUSD, por lo que el Asesor Experto mostró resultados considerables en el historial durante 3 años. Debido a los grandes cálculos, simplemente limité la muestra en la que se estiman los canales a sólo 300 bares en tiempo previsible. Son 12,5 días de negociación. De hecho, deberíamos considerar muestras mucho más largas para aumentar la fiabilidad de un punto de entrada. Ejecutaré el Asesor Experto una vez más en muestras largas con el fin de obtener una prueba experimental de mi suposición, pero requerirá algún tiempo de cálculo. Después de obtener el resultado que se muestra en el archivo para el EURUSD, ejecuté el Asesor Experto con los mismos parámetros (¡incluso el parámetro de trailing stop!) con los que se optimizó para el EURUSD en el GBPUSD y el USDCAD. Por supuesto, no conseguimos obtener un resultado apreciable en otros 2 pares, pero creo que el resultado obtenido sigue teniendo un sesgo positivo. Por lo tanto, puedo sacar dos conclusiones. La primera es que el sistema propuesto por Vladislav bien puede ser rentable con una realización técnica precisa. Tal vez Vladislav logró encontrar las características universales que funcionan en todos los pares de divisas sin corrección. Si comparamos estos 3 pares de divisas, podemos detectar las siguientes diferencias. El USDCAD tiene movimientos más rápidos en comparación con el EURUSD. Si el EURUSD tarda 3 horas en pasar por las cifras de 1,5, el USDCAD puede tardar 1 hora en pasar por las cifras de 1,5, lo que conlleva el grave problema de un desfase, al menos para el periodo H1, para el que obtuvimos el resultado. En general, voy a seguir investigando en esta dirección. Ahora considero primordial un endurecimiento razonable de los topes. Cuándo y cuánto hay que subirlos al negociar. Ya que es obvio que el trailing stop estándar no permitirá tomar mucho. Lo analizaremos más a fondo.
 
¡Buenas tardes Solandr!

¿Podría decirme qué condiciones ha relajado?
 
¿Podría decirme qué condiciones ha relajado?

He reducido el tamaño de la muestra para el cálculo y también el periodo para el cálculo del indicador de niveles de Murray. Si el tamaño de la muestra es corto, hay más máximos y mínimos locales que satisfacen el punto de entrada. Además, si los niveles de Murray se calculan para un periodo más corto, se sitúan más cerca unos de otros, aumentando la probabilidad de entrar en el mercado. Compara 31 operaciones del archivo anterior y 80 del nuevo. Como resultado, el número de acuerdos ha aumentado, pero su calidad ha disminuido en consecuencia. Sin embargo, introduciendo un tamaño de lote variable como el de Vladislav se pudo superar el resultado obtenido en el archivo anterior para el mismo periodo de tiempo con la misma cantidad de riesgo.
 
He publicado nuevos resultados de las pruebas del Asesor Experto https://c.mql5.com/mql4/forum/2006/06/new_results2.zip
Los resultados muestran los datos obtenidos sobre el EURUSD en diferentes longitudes de muestra, sobre las que se realiza la búsqueda de canales. He probado en 300 y 1000 barras en el período H1. Como se esperaba, una muestra más larga ha mejorado el informe sobre la prueba del Asesor Experto. Sin embargo, no es muy significativo. El aumento de la longitud de la muestra en más de 3 veces sólo ha aumentado el beneficio final en un 4%. Como era de esperar, el número de operaciones en una muestra más larga se ha reducido (un 19%), pero la calidad de las operaciones ha mejorado, como demuestra el crecimiento del 14% en el índice de rentabilidad. Sin embargo, la disminución del número de operaciones y el aumento de la rentabilidad han provocado un cierto incremento del beneficio total.

Este archivo también contiene los resultados del Asesor Experto desarrollado para el EURUSD, operado en el USDCHF y el USDJPY en un marco de tiempo de 300 barras en H1. En el par de divisas USDCHF el resultado tiene un claro giro positivo. Y el resultado del USDJPY ha vagado alrededor de cero durante todo el periodo de prueba. Al mismo tiempo, la cantidad de transacciones realizadas fue aproximadamente 3 veces menor que cuando se probó en el mismo período en otros pares de divisas. Basándome en esto, puedo concluir que la naturaleza del USDJPY tiene una diferencia significativa con respecto a los pares en los que ya se han realizado pruebas. Por lo tanto, si mi versión de la estrategia funciona para el USDJPY, necesitará algún esfuerzo y posiblemente un algoritmo de entrada/salida revisado para este par.
Por cierto, por alguna razón Vladislav no está operando en todos los pares en la demo (aunque no hay problemas técnicos o son solucionables), pero está operando sólo en 3 pares - EURUSD, USDCHF, GBPUSD. Y creo que tal vez no sea sólo por diversión, pero tiene algunas razones para ello.
 
Hola a todos, ya he terminado con MTSinka ;) - Como he dicho antes, el lunes cerraré el acceso directo a la cuenta de Lites, la que se utiliza para subir al Empire. Puede que sólo cambie la contraseña del inversor y que incluso la deje para hacer pruebas - no tiene sentido hacer funcionar el ordenador para nada: voy a hacer pruebas en la cuenta real. Lo que sucederá después, ya lo veremos.
Espero que muchos hayan progresado hasta la realización práctica.

Buena suerte y buenas tendencias.
 
¡Buenas tardes Vladislav!

Muy amable por volver a este hilo.
Durante su ausencia se discutió mucho sobre varias cuestiones:

1.
Jhonny 16.06.06 16:48 <br / translate="no">
Vladislav, ¿podría responder a algunas preguntas? ....
1) El nivel de importancia de los criterios de selección de canales es el mismo (es decir, se encuentra la combinación óptima de estos criterios), o existe una selección consistente de los criterios más significativos a los menos significativos.
2) Después de leer un montón de libros inteligentes, olvidé lo que buscaba :). ¡Si he entendido bien que te refieres a un concepto de energía potencial funcional, no está claro por qué lo buscamos, ya que el resultado de la búsqueda será la ecuación (¡no el valor, sino la función!) de una trayectoria en movimiento a lo largo de la cual el cambio de energía potencial (durante el movimiento, en lugar de en la consecución de un punto final!Entiendo que el precio se mueve a lo largo de esta misma trayectoria y ya hemos elegido la ecuación que se aproxima a esta trayectoria (ecuación de regresión), sólo queda concluir lo bien que nos aproximamos a esta trayectoria. Pero si lo buscamos de todos modos, es posible que encontremos realmente una función cuadrática y si los coeficientes В y С en la ecuación Ах^2+Вх+С son iguales (o muy cercanos) a los de la ecuación de regresión, quizás sea el canal necesario, aunque ya he entrado en la duda :)


2. La cuestión de la distribución en el canal...

Vladislav 13.03.06 21:38

....También hay un teorema del límite central, que dice que cualquier distribución convergente con grados de libertad crecientes converge a una distribución normal (así que realmente no nos importa lo que hay dentro, mientras converja ;)....

Entendí esta frase como que aceptamos la distribución en el canal como normal y calculamos los intervalos de confianza utilizando la función de distribución normal. Pero había otras opiniones lógicas...


solandr 18.06.06 08:42

Sinceramente, lo que me interesa es la diferencia a diferentes valores de N. La distribución de Student, siendo cualitativamente la misma en su forma, cambia sus parámetros cuantitativos con diferentes grados de libertad. Cuando el número de grados de libertad es muy grande, debería coincidir con la distribución normal. Cuando el número de grados de libertad es pequeño, difiere de la distribución normal.
La distribución de Student tiene diferentes grados de libertad:
Para una probabilidad del 99%:
q(30 bares)=2.750
q(100 bares)=2,626
q(300 bares)=2,593
q(1000 bares)=2,581
Si cree que la diferencia del 6% entre el valor cuantílico de 30 barras y el de 1000 barras no merece la pena el esfuerzo adicional, entonces es su elección personal. Yo tengo una opinión ligeramente diferente.


3. Y una pregunta más sobre el coeficiente de Hurst


Jhonny 17.06.06 16:49

...En realidad tengo un valor de Hearst >1 para los canales con muestras menores a 80, así que debe haber un error en alguna parte...

Pero en la página http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380, hay una declaración al respecto:
Es que hay un error al encontrar el índice por aproximación lineal, piensa que es 1

¿Podemos considerar que esta afirmación es cierta o es más probable que tenga un error en mi algoritmo?

P.D. Espero no molestarle demasiado con estas preguntas y espero su respuesta.
 
¡Buenas tardes Vladislav!

Muy amable de tu parte por volver a buscar en este hilo.
Mientras no estabas, hubo algunas preguntas que se discutieron activamente en el hilo:

1.
Jhonny 16.06.06 16:48

Vladislav, ¿podría responder a algunas preguntas? ....
1) El nivel de importancia de los criterios de selección de los canales es uniforme (es decir, se encuentra una combinación óptima de estos criterios), o hay una selección consecutiva de los criterios más significativos a los menos significativos.

No, cada uno tiene su propio factor de ponderación.

2) Después de leer un montón de libros inteligentes me olvidé de lo que debía encontrar :). Si he entendido bien que te refieres a un concepto de funcional de la energía potencial, no está claro por qué lo buscamos, ya que el resultado de la búsqueda será la ecuación (¡no el valor, sino la función!) de una trayectoria en la que el movimiento cambia de energía potencial (¡durante el movimiento, en lugar de en la consecución de un punto final!Entiendo que el precio se mueve a lo largo de esta misma trayectoria y ya hemos elegido la ecuación que se aproxima a esta trayectoria (ecuación de regresión), sólo queda concluir lo bien que nos aproximamos a esta trayectoria. Pero si lo buscamos de todos modos, puede que encontremos una función cuadrática y si los coeficientes B y C de la ecuación Ah^2+Bx+C son iguales (o muy cercanos) a los de la ecuación de regresión, quizás sea el canal necesario, aunque ya he empezado a sentir la duda :)


Ya he escrito sobre esto muchas veces. Cuando busque una muestra para construir un canal de regresión, verá que esta muestra puede no estar construida de la única manera en este momento. De alguna manera hay que hacer una selección. He elegido este criterio como el principal; la justificación se ha expuesto más arriba en el hilo. El algoritmo es sencillo: construirlo, comprobarlo, seleccionar el extremo.

2. Pregunta sobre la distribución en el canal...

Vladislav 13.03.06 21:38

....También hay un teorema del límite central que dice que cualquier distribución convergente converge a la distribución normal con grados de libertad crecientes (así que realmente no nos importa lo que hay dentro, mientras converja ;)....

Entendí la frase como que tomamos la distribución en el canal como normal y calculamos los intervalos de confianza utilizando la función de distribución normal. Pero había otras opiniones lógicas...


No - se considera el peor convergente :) (también converge a la normalidad al aumentar los grados de libertad). Escribí sobre ello y solandr lo entendió correctamente.

solandr 18.06.06 08:42

Sinceramente, lo que me interesa es la diferencia a diferentes valores de N. La distribución de Student, siendo cualitativamente la misma en su forma, cambia sus parámetros cuantitativos con diferentes grados de libertad. Cuando el número de grados de libertad es muy grande, debería coincidir con la distribución normal. Cuando el número de grados de libertad es pequeño, difiere de la distribución normal.
La distribución de Student tiene diferentes grados de libertad:
Para una probabilidad del 99%:
q(30 bares)=2.750
q(100 bares)=2,626
q(300 bares)=2,593
q(1000 bares)=2,581
Si cree que la diferencia del 6% entre el valor cuantílico de 30 barras y el de 1000 barras no merece la pena el esfuerzo adicional, entonces es su elección personal. Yo tengo una opinión ligeramente diferente.



3 Y una pregunta más sobre el coeficiente de Hurst


Jhonny 17.06.06 16:49

...En realidad tengo un valor de Hearst >1 para los canales con muestras menores a 80, así que debe haber un error en alguna parte...

Pero en http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380, hay esta declaración al respecto:
es que hay un error al encontrar el índice por aproximación lineal, piensa que es 1

¿Podemos considerar que esta afirmación es cierta o es más probable que tenga un error en mi algoritmo?

P.D. Espero no molestarle demasiado con estas preguntas y espero su respuesta.



En los cálculos, por supuesto, surge un error. El criterio principal es un valor superior o inferior a 0,5 (en la versión de la fórmula con valor k 0,5, si se desplaza a cero o a uno, entonces relativo al parámetro de desplazamiento, respectivamente). En cuanto al error en su algoritmo - puede ser ;). ¿Quién más puede comprobarlo sino tú?

Buena suerte y buenas tendencias.
 
Gracias Vladislav. Me vas a perdonar, y ya soy tan descarado...
Pero la pregunta sobre el funkitsonal, al menos para mí, sigue abierta. Intentaré inventar algo en este ámbito yo mismo :). Gracias de nuevo.
 
Hace tiempo que vengo a este hilo, pero entonces no había todavía un cuarto hilo, que es donde empezó todo lo interesante. Gracias a todos los participantes, aprendí muchas cosas interesantes para mí. Pero, como se dice, mucho conocimiento es mucho, no tanta desgracia, sino más bien preguntas.

Tras leer material adicional sobre el cálculo del índice de Hurst, me encontré con un estudio de Feder. Afirmó que la ley empírica - H=Log(R/S)/Log(0,5*N) funciona bastante mal y da datos relativamente correctos sólo para muestras pequeñas (aunque no se dijo nada sobre el tamaño de estas muestras). Así que decidí aplicar el cálculo del índice de Hearst estrictamente según los materiales metódicos (parece que resultó ser incluso peor de lo que advirtió el Sr. Feder).

Me doy cuenta de que el código puede no ser el más óptimo en términos de rendimiento (un montón de llamadas a funciones y todo), pero lo principal es lo otro - quería aclarar si he entendido correctamente la lógica de su cálculo, porque los resultados me parecen cuestionables, y decidí preguntar a la gente entendida.

En mis cálculos sólo he tenido en cuenta las fórmulas de los manuales, nada más.

La implementación es bastante sencilla, en forma de script. Sólo hay ocho funciones, cuya descripción adjunto a continuación, así como los comentarios en el código fuente. Obtención de la matriz con los datos calculados de la función, implementada como sigue. Cada función recibe un array doble out[]. El array se inicializa en el cuerpo de la función y los datos computacionales se escriben en el array dependiendo del propósito de la función.

void GetVn(double out[], int N, int i)
I forme "inflow" - v[]. Tomo el precio de cierre como entrada. El resultado se escribe en el array out[]

void SetArrayMv(double v[], double out[], int N)
Calculo la entrada media - mv[] para todas las observaciones. La función recibe el flujo de entrada y el número de observaciones - N

void SetArrayDv(double v[], double out[], double mv[], int N)
Calculo la desviación acumulada del flujo de entrada - dv[]. Paso las matrices "afluencia", "afluencia media" y número de observaciones

void SetArrayR(double dv[], int N, double out[])
Calculo spread - r[]. Paso la entrada y el número de observaciones a la función.

void SetArrayS(double v[], double mv[], double out[], int N)
Calculo la desviación estándar s[]. Le paso "afluencia", "afluencia media" y número de observaciones

void SetArrayRS(double r[], double s[], double out[], int N)
Calculo la dispersión normalizada. Escribo los valores de R/S en el array rs[]. Paso las funciones "spread", "standard deviation" y número de observaciones

void LogN(double out[], int N)
Calcula el logaritmo del array a partir de N

void GetLine(double x[],double y[], int N)
Calculo los coeficientes de la línea de aproximación.

//+------------------------------------------------------------------+
//|                                                        HERST.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      "grasn@rambler.ru"

int start()
{
   int i=0;
   int N=100;

   double v[];                         // Приток
   
   double mv[];                        // Средний приток
   double dv[];                        // Накопившееся отклонение
   
   double r[];                         // Размах
   double s[];                         // Стандартное отклонение
   
   double rs[];                        // Нормированный размах
   double logN[];                      // логарифм от N
   
   GetVn(v, N, i);
   SetArrayMv(v, mv, N);
   SetArrayDv(v, dv, mv, N);

   SetArrayR(dv, N, r);
   SetArrayS(v, mv, s, N);
   SetArrayRS(r, s, rs, N);
   
   LogN(logN, N);
            
   GetLine(logN, rs, N);
   
   return(0);
}

// Приток
// ________________________________________________________________________________________
// "Приток".....................................................................double out[]
// Длина выборки......................................................................int N
// номер бара с которого выполняется выборка..........................................int i

void GetVn(double out[], int N, int i)
{
   int n;
   int k;      

   double x[];

   ArrayResize(x, N);
   ArrayInitialize(x, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);

   k=i+N-1;
      
   for(n=0; n<=N-1; n++)
   {
      x[n]=Close[k];
      k=k-1;
   }

   ArrayCopy(out, x, 0, 0, WHOLE_ARRAY);
      
   return(0);
}

// Средний приток 
// ________________________________________________________________________________________
// Приток ........................................................................double v[]
// Средний приток ..............................................................double out[]
// Число наблюдений...................................................................int N

void SetArrayMv(double v[], double out[], int N)
{
   int n;
   int i;
   
   double SUM;
   double mv[];

   ArrayResize(mv, N);
   ArrayInitialize(mv, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);
      
   for(n=0; n<=N-1; n++)
   {
      SUM=0.0;   
      
      for(i=0; i<=n; i++)
      {
         SUM=SUM+v[i];
      }
      
      mv[n]=(1.0/(n+1))*SUM;
   }
   
   ArrayCopy(out, mv, 0, 0, WHOLE_ARRAY);
 
   return(0);
}

// Накопившееся отклонение притока от среднего
// ________________________________________________________________________________________
// Приток ........................................................................double v[]
// Накопившееся отклонение притока..............................................double out[]
// Средний приток................................................................double mv[]
// Число наблюдений...................................................................int N

void SetArrayDv(double v[], double out[], double mv[], int N)
{
   int n;
   int i;
   
   double dv[];
   double SUM;

   ArrayResize(dv, N);
   ArrayInitialize(dv, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);

   for(n=0; n<=N-1; n++)
   {
      SUM=0.0;
      
      for(i=0; i<=n; i++)
      {
         SUM=SUM+(v[i]-mv[i]);
      }
      
      dv[n]=SUM;
   }
   
   ArrayCopy(out, dv, 0, 0, WHOLE_ARRAY);
      
   return(0);   
}

// Размах
// ________________________________________________________________________________________
// Накопившееся отклонение притока от среднего...................................double dv[]
// Размах.......................................................................double out[]
// Число наблюдений...................................................................int N

void SetArrayR(double dv[], int N, double out[])
{
   int n;
   
   int idMax;
   int idMin;
   
   double rn[];
      
   double max;
   double min;

   ArrayResize(rn, N);
   ArrayInitialize(rn, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);   

   for(n=1; n<=N; n++)
   {
      idMax=ArrayMaximum(dv, n, 0);
      idMin=ArrayMinimum(dv, n, 0);
      
      max=dv[idMax];
      min=dv[idMin];
      
      rn[n]=MathAbs(max-min);
   }
   
   ArrayCopy(out, rn, 0, 0, WHOLE_ARRAY);
   
   return(0);
}

// Стандартное отклонение
// ________________________________________________________________________________________
// Приток.........................................................................double v[]
// Среднее приток................................................................double mv[]
// Стандартное отклонение.......................................................double out[]
// Число наблюдений...................................................................int N

void SetArrayS(double v[], double mv[], double out[], int N)
{
   int n;
   int i;
   
   double sn[];
   double SUM;

   ArrayResize(sn, N);
   ArrayInitialize(sn, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);   
   
   for(n=0; n<=N-1; n++)
   {
      SUM=0.0;
      
      for(i=0; i<=n; i++)
      {
         SUM=SUM+MathPow((v[i]-mv[i]), 2);
      }
     
      sn[n]=MathSqrt((1.0/(n+1))*SUM);
   }
   
   ArrayCopy(out, sn, 0, 0, WHOLE_ARRAY);
   
   return(0);
}

// Нормированный размах
// ________________________________________________________________________________________
// Размах.........................................................................double r[]
// Стандартное отклонение.........................................................double s[]
// Нормированный размах.........................................................double out[]
// Число наблюдений...................................................................int N
void SetArrayRS(double r[], double s[], double out[], int N)
{
   int n;
   
   double rs[];

   ArrayResize(rs, N);
   ArrayInitialize(rs, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);  
      
   for(n=3; n<=N-1; n++)
   {  
      if(s[n]==0)
      {
         rs[n]=0.0;
      }
      else 
      {
         rs[n]=MathLog(r[n]/s[n]);
//         Print("rs ", rs[n]);
      }
   }
   
   ArrayCopy(out, rs, 0, 0, WHOLE_ARRAY);
   
   return(0);
}

// Логарифм N
// ________________________________________________________________________________________
// Логарифм N...................................................................double out[]
// Число наблюдений...................................................................int N
void LogN(double out[], int N)
{
   int n;
      
   double logN[];
   
   ArrayResize(logN, N);
   ArrayInitialize(logN, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);   
   
   for(n=3; n<=N-1; n++)
   {
      logN[n]=MathLog(n);
//      Print("n ", logN[n]);
   }
   
   ArrayCopy(out, logN, 0, 0, WHOLE_ARRAY);
   
   return(0);   
}

// Расчет коэффициентов аппроксимирующей линии
// ______________________________________________________________
// log(R/S).......................................................................double x[]
// log(N)................................................................................y[]
// Число наблюдений...................................................................int N
void GetLine(double x[],double y[], int N)
{
   double m=0;
   double b=0;
   double tan = 0;
      
   int size=N;
   double sum_x=0.0;
   double sum_y=0.0;
   double sum_xy=0.0;
   double sum_xx=0.0;
      
   for (int i=3; i<size; i++)
   {
      sum_x=sum_x+x[i];
      sum_y=sum_y+y[i];
      sum_xy=sum_xy+(x[i]*y[i]);
      sum_xx=sum_xx+(x[i]*x[i]);
   }

   m = (size*sum_xy - sum_x*sum_y) / (size*sum_xx - sum_x*sum_x);
   b = sum_y/size - m * sum_x / size;

           
   Print("Аппроксимирующая прямая: y(x)=", m, "x+", b);
   Print("Показатель Херста= ", m);
   
   return(0);
}



Aquí están los gráficos log(R/S) y log(N) para la serie aleatoria y para las cotizaciones diarias del EURUSD
La serie aleatoria fue generada usando MathRand() con los siguientes parámetros.
N=100
Resultado:
H=0,5454
Y(x)=0,5454x+0,2653

A medida que aumenta N, el índice de Hurst se aproxima a 0,5


El cálculo del EURUSD D1 se ha realizado con los siguientes parámetros:
i=0 (a partir de 27,06)
N=100

resultados del cálculo
H=1,0107 (¿por qué es tan grande?)
y(x)=1,0197x-0,5885



Hay algunas preguntas:
1. ¿Qué hay que tomar para la entrada? ¿El precio completo, la diferencia del módulo, sólo la diferencia positiva? En otras palabras, ¿tiene la noción de "afluencia" en el método en cuestión algún efecto en la preparación previa de los datos? O bien hay que tomar los datos a investigar como la afluencia. Intuitivamente, por ejemplo, tomé el precio de cierre en los cálculos.

2. Cómo determinar la dispersión normalizada si los valores de la dispersión y sobre todo de la desviación estándar son cero. Esto es casi siempre presente para los índices de matrices pequeñas. En caso de que se detecten ceros, por ahora también asigno cero a la dispersión normalizada. ¿Es esto correcto? Por ahora, abandona el cálculo de los primeros valores.

3. No me gustan los resultados en sí. He aquí un ejemplo de varias variantes de cálculo para el EURUSD:

Inflow (Close[] D1) en todas las barras Índice Hurst 0,9069
Inflow (Close[] D1) i=0, N=200 Índice Hurst 0,8264

Las cifras son demasiado optimistas y los datos no coinciden con los de Vladislava (0,64 para toda la serie), pero también hay valores muy bajos. Para la diferencia de precios de todas las barras obtengo el índice Hearst 0,5119

4. ¿Estoy calculando correctamente la afluencia media? ¿Un valor para todas las iteraciones o debe cambiar en función del N actual?

5. Existe la posibilidad de que me haya confundido y la cifra esté calculada de forma incorrecta. Por favor, explicadme en qué he metido la pata :o(

PD: Espero que los miembros de este foro me ayuden a entenderlo. Estaría muy agradecido si Vladislav se tomara un tiempo y me explicara en qué me equivoco con una metodología tan sencilla.

Razón de la queja: