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
Hola,
he modificado el indicador estándar stepMA 9 en éste en ventana separada como histograma pero no sé por qué las señales de compra no están sincronizadas con el indicador estándar (las de venta sí). Con el nuevo se producen una barra atrás que el indicador original. ¿Por qué? He modificado sólo la parte de código que determina el aspecto gráfico del indicador.
stepma_9_histo_mtf.mq4
stepma_9.0.mq4
Hola,
He modificado el indicador estándar stepMA 9 en éste en ventana separada como histograma pero no sé por qué las señales de compra no están sincronizadas con el indicador estándar (las señales de venta sí). Con el nuevo se producen una barra atrás que el indicador original. ¿Por qué? He modificado sólo la parte de código que determina el aspecto gráfico del indicador.
stepma_9_histo_mtf.mq4
stepma_9.0.mq4
thefxpros
Esto es el resultado de cómo se dibujan las líneas.
Cuando dibujas una línea tienes que empezar a dibujar la línea 1 barra atrás para que sea visible (si no sería un punto y no sería visible en el gráfico). Prueba estos dos y compáralos ahora
Hola,
He estado buscando un EA que abra una operación de forma similar a como funcionaría un trailing stop.
Digamos que estoy esperando un retroceso en un instrumento. Me gustaría abrir mi comercio tan alto (o bajo) en el precio como sea posible. Así que con un EA como este, sería capaz de establecer mis parámetros de comercio y este EA seguirá el precio de una manera similar a un trailing stop. Cuando hay una reversión, el comercio es golpeado y abierto.
¿Has visto alguna vez un EA de este tipo?
Gracias
Hola a todos
Intento hacer el código, pero por qué no puede abrir el comercio
for (int iTS = 0; iTS < 2000; iTS++) {
int varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");
int varZonEnd = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "10:00");
int JamStart=TimeHour(varZonStart);
int JamEnd=TimeHour(varZonEnd);
if (JamStart>JamEnd) {
varCurrentTime = decDateTradeDay(varCurrentTime);
//if (TimeDayOfWeek(varCurTime) < 1) varCurTime = decDateTradeDay(varCurTime);
if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime);
}
varZonStart = StrToTime(TimeToStr(varCurrentTime, TIME_DATE) + " " + "00:00");
int varShiftStart = iBarShift(NULL, 0, varZonStart - 60 * Period());
int varShiftEnd = iBarShift(NULL, 0, varZonEnd);
varHighest = High;
varLowest = Low;
varCurrentTime = decDateTradeDay(varCurrentTime); //set 1 hari kebelakang
if (TimeDayOfWeek(varCurrentTime) < 1) varCurrentTime = decDateTradeDay(varCurrentTime); //jika minggu mundur lagi
if (TimeDayOfWeek(varCurrentTime) > 5) varCurrentTime = decDateTradeDay(varCurrentTime); //jika sabtu mundur lagi
}
for (int iTSh = 0; iTSh < 2000; iTSh++) {
for (int iTSl = 0; iTSl < 2000; iTSl++) {
if(((varHighest-varLowest)/Pip)<=5) varHL=(varHighest+varLowest)/2;
}
}
double isg10a = iOpen(Symbol(),PERIOD_M15,1);
double isg10b = iClose(Symbol(),PERIOD_M15,1);
int static isg10c = -1;
for (iTS = 0; iTS < 2000; iTS++) {
if(isg10avarHL)isg10c =0;
if(isg10a>varHL&&isg10b<varHL)isg10c =1;
}
if (isg10c==0) To code Buy
else if (isg10c==1) To code Sel
else no trade
Jim En lugar de reescribir toda la cosa añadió un límite para calcular las barras y luego todas esas barras se vuelven a calcular. Eso debería resolver el problema de la actualización (sólo hay que mantener el BarsTocalculate en un valor razonable, no demasiado grande ni demasiado pequeño. Usé 1000 como valor por defecto y parece estar bien así). Pruébalo
Estimado mladen,
muchas gracias por tu esfuerzo y tu rápida ayuda.
Lo probaré.
Muchos saludos desde Munich
Por favor, ayúdenme a actualizar este indicador de volumen para adjuntarlo en mi mt4
Hola gurús por favor amablemente ayudarme a solucionar los errores en este indicador de volumen. Acabo de notar que no puede adjuntar a mi gráfico mt4 recientemente. He hecho todo lo posible para arreglar los errores en el archivo, pero en vano. Sospecho que es debido a la gran actualización de mt4. Todos los demás indicadores en mi carpeta de mt4, tanto las versiones antiguas como las nuevas, funcionan bien. Funcionaba hace un año que lo usé por última vez. No soy un programador todavía.
Por favor, encontrar el archivo adjunto
Hola MLaden y Mrtools,
espero que estéis bien
Necesito que me confirméis algo sobre el RSX
Veo que utilizáis una fórmula más sencilla para calcular el RSX :
__________________________
doble Kg = (3.0)/(2.0+Longitud);
doble Hg = 1,0-Kg;
if (slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb);
if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars);
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Precio,i);
if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }
//
//
//
//
//
double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];
double moa = MathAbs(mom);
for (int k=0; k<3; k++)
{
int kk = k*2;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0];
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1,5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];
wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6];
wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1,5*wrkBuffer[r][kk+6] - 0,5 * wrkBuffer[r][kk+7];
}
if (moa != 0)
rsx = MathMax(MathMin((mom/moa+1.0)*50.0,100.00),0.00);
si no, rsx = 50;
____________________________________
Sólo para estar seguro de entender cómo se calcula el RSX con esta fórmula
Primero con la línea
mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];
de hecho wrkBuffer[r][12] es la media móvil simple del precio, nota el prise como con un RSI habitual ?
¿No es así? Pero no entiendo cuál es el período de este SMA (Probablemente no longitud)?
Y después, si tengo bien entender con las líneas:
for (int k=0; k<3; k++)
{
int kk = k*2;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0];
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1];
mom = 1,5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];
De hecho calcula 3 veces el mom (uno tras otro), con el primer mom arriba (mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];)
¿Es correcto?
Y después de esto es "clásico" con RSX=((mom/moa)+1)*50
Gracias por tu siguiente respuesta, como codificador (en otra plataforma), sabes que me gusta entender cómo funcionan los códigos
Que tengas un buen día
Zilliq
Hola MLaden y Mrtools,
Espero que estés bien
Necesito que me confirmes lo del RSX
Veo que utilizas una fórmula más sencilla para calcular el RSX :
__________________________
doble Kg = (3.0)/(2.0+Longitud);
doble Hg = 1,0-Kg;
if (slope[limit]==-1) CleanPoint(limit,rsxDa,rsxDb);
if (ArrayRange(wrkBuffer,0) != Bars) ArrayResize(wrkBuffer,Bars);
for(i=limit, r=Bars-i-1; i>=0; i--, r++)
{
wrkBuffer[r][12] = iMA(NULL,0,1,0,MODE_SMA,Precio,i);
if (i==(Bars-1)) { for (int c=0; c<12; c++) wrkBuffer[r][c] = 0; continue; }
//
//
//
//
//
double mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];
double moa = MathAbs(mom);
for (int k=0; k<3; k++)
{
int kk = k*2;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0];
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1]; mom = 1,5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];
wrkBuffer[r][kk+6] = Kg*moa + Hg*wrkBuffer[r-1][kk+6];
wrkBuffer[r][kk+7] = Kg*wrkBuffer[r][kk+6] + Hg*wrkBuffer[r-1][kk+7]; moa = 1,5*wrkBuffer[r][kk+6] - 0,5 * wrkBuffer[r][kk+7];
}
if (moa != 0)
rsx = MathMax(MathMin((mom/moa+1.0)*50.0,100.00),0.00);
si no, rsx = 50;
____________________________________
Sólo para estar seguro de entender cómo se calcula el RSX con esta fórmula
Primero con la línea
mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];
de hecho wrkBuffer[r][12] es la media móvil simple del precio, nota el prise como con un RSI habitual ?
¿No es así? Pero no entiendo cuál es el período de este SMA (Probablemente no longitud)?
Y después, si tengo bien entender con las líneas:
for (int k=0; k<3; k++)
{
int kk = k*2;
wrkBuffer[r][kk+0] = Kg*mom + Hg*wrkBuffer[r-1][kk+0];
wrkBuffer[r][kk+1] = Kg*wrkBuffer[r][kk+0] + Hg*wrkBuffer[r-1][kk+1];
mom = 1,5*wrkBuffer[r][kk+0] - 0,5 * wrkBuffer[r][kk+1];
De hecho calcula 3 veces el mom (uno tras otro), con el primer mom arriba (mom = wrkBuffer[r][12]-wrkBuffer[r-1][12];)
¿Es correcto?
Y después de esto es "clásico" con RSX=((mom/moa)+1)*50
Gracias por tu siguiente respuesta, como codificador (en otra plataforma), sabes que me gusta entender cómo funcionan los códigos
Que tengas un buen día
Zilliq"de hecho wrkBuffer[r][12] es la media móvil simple del precio, fíjate en el precio como con un RSI habitual?"
No. El periodo de cálculo de esa media es 1, lo que significa que es igual al precio de la "media" utilizada. En metatader esa es la forma más rápida de obtener el precio deseado (si intentas escribir la estructura "case" haciendo eso mismo verás que es mucho más lento que la forma utilizada en el código rsx)
"De hecho calcula 3 veces el mom (uno tras otro), con el primer mom por encima"
No. Mira qué valores está utilizando en todas y cada una de las nuevas iteraciones. mom y moa se cambian constantemente y se reutilizan (en esa forma cambiada) durante el proceso de bucle
Muchas gracias Mladen,
Es muy extraño, si tengo bien entendido wrkBuffer[r][12] es igual al precio, pero se utiliza una media móvil con un período de 1 para acelerar el cálculo. Eso es muy curioso...
Para lo segundo, creo/supongo que es lo que intento decir
calcula la mom como un momentum del precio
Y calcula otra mama con Kg y Hg. Da una nueva mamá, que se utiliza para crear una nueva mamá, y así sucesivamente, 3 veces
Algo más "fácil" (para facilitar la comprensión) como esto
mamá
mom1=kg*mom
mom2=kg*mom1
mom3=kg*mom2
Y al final utiliza mom3, y moa3
¿Estoy en lo cierto?
Muchas gracias Mladen,
Es muy extraño, si tengo bien entendido wrkBuffer[r][12] es igual al precio, pero utilizas una media móvil con un periodo de 1 para acelerar el cálculo. Eso es muy curioso...
Para lo segundo, creo/supongo que es lo que intento decir
calcula la mom como un momentum del precio
Y calcula otra mama con Kg y Hg. Da una nueva mamá, que se utiliza para crear una nueva mamá, y así sucesivamente, 3 veces
Algo más "fácil" (para facilitar la comprensión) como esto
mamá
mom1=kg*mom
mom2=kg*mom1
mom3=kg*mom2
Y al final utiliza mom3, y moa3
¿Tengo razón?Zilliq,
sí, así es como se hace