Método de planimetría tendencial - página 4

 
Mathemat:

pero entonces habría que rechazar el algoritmo estándar de meta-cuotas.


Hay que rechazarla, si el tiempo es esencial.
 
Mathemat:

El problema es que tenemos que aprender a calcular los mashups de forma aún más óptima que en el paquete estándar de meta-cotizaciones. Necesitamos algún algoritmo de recurrencia para calcular las papillas, donde una papilla de periodo N se calcula utilizando una papilla conocida de periodo N+1. En principio no es difícil, pero entonces hay que rechazar el algoritmo estándar de metacuotas.

En cuanto a la densidad de las bolsas: es evidente que necesitamos algún tipo de algoritmo de agrupación, porque pueden ser muy poco homogéneas verticalmente (para una barra determinada). En resumen, la tarea no es técnicamente fácil en absoluto.

Podemos hacer un indicador, en el que los últimos cien (si usamos cien bolsas) valores devuelvan los valores de las bolsas. Pero en este caso estamos hablando sólo de SMA. El algoritmo es un poco diferente para las otras varitas, pero en principio también es factible.
 

No lo entiendo, Víctor. Por favor, explique con más detalle. ¿Qué es la "última centena" en un array unidimensional?

En principio, la recurrencia en el algoritmo de las metacitas ya está incorporada para todos los asistentes. Pero sirve para llamar a las toallitas del mismo período. Y tenemos períodos diferentes cada vez.

 
Mathemat:

En principio, la recurrencia en el algoritmo de meta-citas ya está incorporada para todos los asistentes. Pero es bueno para las llamadas a los mashups de la misma época. Y nuestras épocas son diferentes cada vez.

for (i = 2; i<=N;i++) {
  Sum += Close[i];
  MA[i] = Sum/i;
}
P.D. Parece que las sumas también deberían ser arrays :)
 
Mathemat:

No lo entiendo, Víctor. Por favor, explique con más detalle. ¿Qué es la "última centena" en un array unidimensional?

En principio, la recurrencia en el algoritmo de las metacitas ya está incorporada para todos los asistentes. Y nuestros periodos son diferentes cada vez.


Si se cuenta por la media,

int i,j;
double sum=0, Count;
for (i=0;i<100;i++) {
   for (j=0;j<step;j++) {
       sum+=Close[i*step+j];
       Count++;
   }
   Buffer[i]=sum/Count;
}
Algo así.
 

No es eso lo que quería decir.

double SMA( int newperiod, int sh, double SMAprev )
{
   return( ( SMAprev * ( newperiod - 1 ) + Close[ sh + newperiod - 1 ] ) / newperiod );
}

En lugar de una costosa llamada a iMA() (que sumará un montón de sumandos), la función calcula una máscara con el período incrementado en 1, independientemente del período. Así que, de hecho, iMA() puede llamarse sólo una vez en cada barra contada, la primera y la última.

En el caso de la EMA también es recurrente un algoritmo similar, aunque no tan evidente. El SMMA es equivalente al EMA, sólo queda por ver el LWMA.

 
Llamar a cualquier función es una sobrecarga adicional. En cambio, si se memoriza un importe en lugar de un SMAprev, se pueden evitar varias operaciones.
 
Pues sí, se recuerda la cantidad, o mejor dicho, el antiguo SMA. No hay problema en publicar dos códigos haciendo mil cálculos en una barra con el método estándar, y lo mismo con mi método. Y comparar su eficacia.
 

Por supuesto que es más rápido. Pero yo hablo de "aún más rápido" :). Compáralo con el mío, que está más arriba.

 
Aha, Cándido, ahora lo tengo. Para una barra arbitraria con una sh de cambio:

// размер массива SMA[] уже установлен равным N+1 перед вызовом функции
void createSMAsArray( int sh, double& SMA[] ) 
{
   double Sum = 0;
   for ( int i = 1; i <= N; i ++ ) 
   {
     Sum += Close[ sh + i - 1 ];
     SMA[ i ] = Sum / i;
   }
   return;
}
¿Es así? Obsérvese el índice de suma inicial.