Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Nosotros también usamos radianes
Puede ser una explicación: En el código de MT4 multiplicamos alfa con el precio
Supongo que este es el precio, i périods antes, no ?
Y así tenemos que sumar, por ejemplo con un len de 5
alfa*close[4]+alfa*close[3]+alfa*close[2]+alfa*close[1] and alfa*close
o
alfa[4]*cerrar[4]+alfa[3]*cerrar[3]+alfa[2]*cerrar[2]+alfa[1]*cerrar[1] y alfa*cerrar ?
Y es extraño, porque con una longitud de 1 la len es igual a 4 (4*1+0) y por lo tanto el nonlagma no puede ser igual a close porque sumamos el alfa*price de los últimos 4 periodos
Gracias por tus próximos comentarios
Zilliq
Es usar tu código, pero para entender mejor uso el código más sencillo del NonlagMav3
double pi = 3.1415926535;
double Coeff = 3*pi;
int Phase = Length-1;
double Len = Length*Cycle + Phase;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
si ( counted_bars < 0 ) return(0);
si ( barras_contadas ==0 ) limit=Barras-Len-1;
for(shift=limit;shift>=0;shift--)
{
Peso=0; Suma=0; t=0;
for (i=0;i<=Len-1;i++)
{
g = 1,0/(Coeff*t+1);
si (t <= 0,5 ) g = 1;
beta = MathCos(pi*t);
alfa = g * beta;
precio = iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
Suma += alfa*precio;
Peso += alfa;
si ( t < 1 ) t += 1,0/(Fase-1);
else if ( t < Len-1 ) t += (2*Ciclo-1)/(Ciclo*Longitud-1);
}
if (Peso > 0) MABuffer[shift] = Suma/Peso;Deberías usar la forma alfa[4]*cierre[4]+alfa[3]*cierre[3]+alfa[2]*cierre[2]+alfa[1]*cierre[1] y alfa*cierre (alfa es diferente para cada elemento)
¿Por qué no haces una versión simple que muestre los valores de los alfa y los comparas con los valores de los alfa en metatrader 4?
Gracias Mladen,
Voy a probar esto
De hecho en MT4, tengo el precio del cfd de mi broker (Activtrade), y en Prorealtime este es otro flujo en Efectivo, por lo que hay alguna gran diferencia
Muchas gracias y hasta luego
Zilliq
Bueno, he intentado muchas cosas diferentes pero no funciona y definitivamente no sé por qué
Mi código parece estar bien:
****************************
peso=0
suma=0
para i=0 a Len
si i<=Fase-1 entonces
t = 1,0*i/(Fase-1)
si no
t = 1,0 + (i-Fase+1)*(2,0*Cicloe-1,0)/(Cicloe*Longitud-1,0)
endif
beta = Cos(pi*t)
g = 1,0/(Coeff*t+1)
si t <= 0.5 entonces
g = 1
endif
alfa = g * beta
suma=suma+alfa*cierre
peso=peso+alfa
siguiente
nonlagma=suma/peso
***************************
Y similar al tuyo pero como ves en mi gráfico, el nonlagma está muy lejos del close
¿Tienes alguna idea de por qué, y tienes el código de NonlagMa en lenguaje Easy (suele ser más fácil de transcribir)?
Muchas gracias Mladen, estoy cansado...
Ver U
Zilliq
Bueno, he intentado muchas cosas diferentes, pero no funciona y definitivamente no sé por qué
Mi código parece estar bien:
****************************
peso=0
suma=0
for i=0 to Len
si i<=Fase-1 entonces
t = 1,0*i/(Fase-1)
si no
t = 1,0 + (i-Fase+1)*(2,0*Cicloe-1,0)/(Cicloe*Longitud-1,0)
endif
beta = Cos(pi*t)
g = 1,0/(Coeff*t+1)
si t <= 0.5 entonces
g = 1
endif
alfa = g * beta
suma=suma+alfa*cierre
peso=peso+alfa
siguiente
nonlagma=suma/peso
***************************
Y similar al tuyo pero como ves en mi gráfico, el nonlagma está muy lejos del close
¿Tienes alguna idea de por qué, y tienes el código de NonlagMa en lenguaje Easy (suele ser más fácil de transcribir)?
Muchas gracias Mladen, estoy cansado...
Ver U
Zilliq
Aquí hay una versión que calcula sólo los alfas : _nonlag_ma_alphas.mq4
Haz algo parecido en protrader. Una vez que son los mismos, después de que debería ser fácil de hacer el no lag ma el mismo también. El ejemplo es para el periodo 50
Muchas gracias Mladen,
Voy a probar con este primer paso
Ver U
Zilliq
Bueno,
En primer lugar: una buena noticia que tengo el mismo EUR/USD como usted, ya que será más fácil de comparar
Pero en realidad no tengo éxito
Tu código para calcular el alfa es
double Cycle = 4.0
double Coeff = 3.0*Pi;
int Phase = NlmPeriod-1;
int len = NlmPeriod*4 + Phase;
if (ArraySize(alphas) != len) ArrayResize(alphas,len);
for (int k=0; k<len; k++)
{
si (k<=Fase-1)
double t = 1.0 * k/(Fase-1);
si no t = 1,0 + (k-Fase+1)*(2,0*Ciclo-1,0)/(Ciclo*NlmPeriodo-1,0);
double beta = MathCos(Pi*t);
double g = 1,0/(Coeff*t+1); si (t <= 0,5 ) g = 1;
alphas[k] = g * beta;
}
for(int i=len-1; i>=0; i--) nlm = alphas;
Entonces, si lo he entendido bien:
1/ Primer sted: Calcula todos los alphas de 0 a len-1
Esto es
alphas[k] = g * beta;
2/ Segundo paso: se suman todas las alfas de 0 a len-1
Esto es
for(int i=len-1; i>=0; i--) nlm = alfas;
El problema es que tengo siempre el mismo alfa en mi gráfico ? ¿Cómo se puede tener un alfa diferente en cada vela, ya que k, t y demás son siempre los mismos en cada vela, y no dependen del cierre?
El código que tengo en Prorealtime parece ser el mismo:
Pi=3.14159265358979323846264338327950288
Cyclee = 4.0
Coeff = 3.0*Pi
Fase = NlmPeriod-1
len = NlmPeriod*4 + Fase
alph=0
para k=0 a len-1
t=0
si (k<=Fase-1) entonces
t = 1,0 * k/(Fase-1)
si no
t = 1,0 + (k-Fase+1)*(2,0*Cicloe-1,0)/(Cicloe*NlmPeriodo-1,0)
endif
beta = Cos(Pi*t)
g = 1,0/(Coeff*t+1)
si (t <= 0.5 ) entonces
g = 1
endif
alphas= g * beta
alph=alph+alphas
siguiente
Bien,
Primero: una buena noticia, tengo el mismo EUR/USD que tú, ya que será más fácil comparar
Pero no tengo éxito en realidad
Tu código para calcular el alfa es
double Cycle = 4.0
double Coeff = 3.0*Pi;
int Phase = NlmPeriod-1;
int len = NlmPeriod*4 + Phase;
if (ArraySize(alphas) != len) ArrayResize(alphas,len);
for (int k=0; k<len; k++)
{
si (k<=Fase-1)
double t = 1.0 * k/(Fase-1);
si no t = 1,0 + (k-Fase+1)*(2,0*Ciclo-1,0)/(Ciclo*NlmPeriodo-1,0);
double beta = MathCos(Pi*t);
double g = 1,0/(Coeff*t+1); si (t <= 0,5 ) g = 1;
alphas[k] = g * beta;
}
for(int i=len-1; i>=0; i--) nlm = alphas;
Entonces, si lo he entendido bien:
1/ Primer sted: Calcula todos los alphas de 0 a len-1
Esto es
alphas[k] = g * beta;
2/ Segundo paso: se suman todas las alfas de 0 a len-1
Esto es
for(int i=len-1; i>=0; i--) nlm = alfas;
El problema es que tengo siempre el mismo alfa en mi gráfico ? ¿Cómo se puede tener un alfa diferente en cada vela, ya que k, t y demás son siempre los mismos en cada vela, y no dependen del cierre?
El código que tengo en Prorealtime parece ser el mismo:
Pi=3.14159265358979323846264338327950288
Cyclee = 4.0
Coeff = 3.0*Pi
Fase = NlmPeriod-1
len = NlmPeriod*4 + Fase
alph=0
para k=0 a len-1
t=0
si (k<=Fase-1) entonces
t = 1,0 * k/(Fase-1)
si no
t = 1,0 + (k-Fase+1)*(2,0*Cicloe-1,0)/(Cicloe*NlmPeriodo-1,0)
endif
beta = Cos(Pi*t)
g = 1,0/(Coeff*t+1)
si (t <= 0.5 ) entonces
g = 1
endif
alphas= g * beta
alph=alph+alphas
siguienteZilliq
Como dije : hay un array de aplhas
Lo que he mostrado ahí es un array de alphas - no tengas en cuenta la componente temporal. Esos son los valores de todos y cada uno de los valores alfa en el array de alphas, Esos son los pesos que se aplican a cada elemento del precio que utiliza para el cálculo
Probablemente no entiendo lo que llamas array de alfas (entiendo que son alfas diferentes en cada vela), lo siento
Lo intentaré una vez más...
Probablemente no entienda a qué llamas matriz de alfas (entiendo que son alfas diferentes en cada vela), lo siento
Voy a probar una vez más...Zilliq
Coeficiente (alfa) para el precio 0 == 1
Coeficiente (alfa) para el precio 1 == 0.9nnnnn
y así sucesivamente (como se muestra por el indicador de alfas no lag ma) y todo lo que se utiliza para los precios de len para obtener el valor actual no lag ma
Vale, creo que he entendido tus explicaciones (eres genial ) y he hecho diferentes pruebas en MT4 con tu código
los alfa que como valor diferente de 1 a len-1 ponderan el precio y al final dividimos por la suma de los alfa
Por eso el primer valor de alphas a la derecha es siempre 1 y por eso aunque cambiemos el valor de nlm el aspecto de los alphas en el gráfico es siempre el mismo tipo de serpiente)
Bueno, sé que tengo que buscar cómo puedo hacer esto en Prorealtime...