Ayuda a la codificación - página 554

 

Mntiwana, en Bar to Use si pones cero estará tomando señales en la barra aún abierta (peligroso para un EA, IMHO) si es mayor que cero el EA estará recibiendo señales de barras cerradas de vuelta de la barra abierta, así que si tienes BarToUse = 2, entonces tu EA estará revisando 2 barras de vuelta.

 

hola mladen....por favor ayúdame....ı se publicó pero ı supongo que no se puede ver...ok...ı tienen un indicador de got ...ı necesitan histo version.thank you very much

Archivos adjuntos:
trend.ex4  9 kb
trend.mq4  2 kb
 
aress:
hola mladen....por favor ayudame....ı fue publicado pero ı supongo que no puedes ver...ok...ı tengo un indicador conseguido ...ı necesito su versión.muchas gracias

aress

¿Tienes el código fuente original (sin descompilar) del indicador? Si es así, por favor publique el archivo original mq4 para que se pueda trabajar en él

_________________

PD: también puedes consultar este https://www.mql5.com/en/forum/174961/page4 Por lo que veo es este

 

Hola chicos,

Por favor, eche un vistazo a mi código.

Este indicador llama a otro indicador con la función icustom.

El problema que estoy teniendo es que, a veces, incluso cuando las condiciones para las señales no se cumplen,

este indicador sigue produciendo falsas alertas sonoras y estas falsas alertas no muestran flechas.

No sé dónde está el problema. Lo he intentado (con mis limitados conocimientos) pero sin éxito.

¿Cómo puedo asegurarme de que la falsa alerta se detenga? ¿Cómo puedo asegurarme de que la alerta sonora sólo se produzca si hay una flecha?

Por favor, ayuda.

Gracias.

int inicio()

{

int barras_contadas=IndicadorContado();

//----

if(counted_bars>0) counted_bars--;

int limit=Barras_contadas;

int j;

for(int i=límite; i>=0; i--)

{

arr_up = EMPTY_VALUE; arr_dn = EMPTY_VALUE;

j=i;

double var1 = 0;

double var2 = 0;

for (j = i; j <= i + 9; j++) var2 += MathAbs(High[j] - Low[j]);

var1 = var2 / 10.0;

double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,0,i);

double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,1,i);

static datetime LastAlert;

datetime curbar = Time[0];

if (buyprevious !=EMPTY_VALUE )

{

arr_up=iLow(Symbol(),0,i) - (var1/2);

DrawLine("EntryLine11",iHigh(Symbol(),0,i+1),EntryLineColor);

if ( LastAlert != curbar && !upalert){

Alert (Symbol()," ",Period(), "BUY");

upalert=true;

downalert=false;

LastAlert =curbar;

}

}

else if(sellprevious !=EMPTY_VALUE )

{

arr_dn=iHigh(Symbol(),0,i) + (var1/2);

DrawLine("EntryLine11",iLow(Symbol(),0,i+1),EntryLineColor);

if ( LastAlert != curbar && !downalert){

Alert (Symbol()," ",Period(), "SELL");

downalert=true;

upalert=false;

LastAlert = curbar;

}

}

}

 
luffy:
Hola chicos,

Por favor, eche un vistazo a mi código.

Este indicador llama a otro indicador con la función icustom.

El problema que estoy teniendo es que, a veces, incluso cuando las condiciones para las señales no se cumplen,

este indicador sigue produciendo falsas alertas sonoras y estas falsas alertas no muestran flechas.

No sé dónde está el problema. Lo he intentado (con mis limitados conocimientos) pero sin éxito.

¿Cómo puedo asegurarme de que la falsa alerta se detenga? ¿Cómo puedo asegurarme de que la alerta sonora sólo se produzca si hay una flecha?

Por favor, ayuda.

Gracias.

int inicio()

{

int barras_contadas=IndicadorContado();

//----

if(counted_bars>0) counted_bars--;

int limit=Barras_contadas;

int j;

for(int i=límite; i>=0; i--)

{

arr_up = EMPTY_VALUE; arr_dn = EMPTY_VALUE;

j=i;

double var1 = 0;

double var2 = 0;

for (j = i; j <= i + 9; j++) var2 += MathAbs(High[j] - Low[j]);

var1 = var2 / 10.0;

double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,0,i);

double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,1,i);

static datetime LastAlert;

datetime curbar = Time[0];

if (buyprevious !=EMPTY_VALUE )

{

arr_up=iLow(Symbol(),0,i) - (var1/2);

DrawLine("EntryLine11",iHigh(Symbol(),0,i+1),EntryLineColor);

if ( LastAlert != curbar && !upalert){

Alert (Symbol()," ",Period(), "BUY");

upalert=true;

downalert=false;

LastAlert =curbar;

}

}

else if(sellprevious !=EMPTY_VALUE )

{

arr_dn=iHigh(Symbol(),0,i) + (var1/2);

DrawLine("EntryLine11",iLow(Symbol(),0,i+1),EntryLineColor);

if ( LastAlert != curbar && !downalert){

Alert (Symbol()," ",Period(), "SELL");

downalert=true;

upalert=false;

LastAlert = curbar;

}

}

}

luffy

¿Puedes publicar el indicador llamado también, para que se pueda probar?

 
mrtools:
Mntiwana, en Bar to Use si pones cero estará tomando señales en la barra aún abierta (peligroso para un EA, IMHO) si es mayor que cero el EA estará recibiendo señales de las barras cerradas desde la barra abierta, así que si tienes BarToUse = 2, entonces tu EA estará revisando 2 barras atrás.

Estimado MLADEN y MRTOOLS,

gracias por la ayuda, así que lo siento por tomar mucho de su tiempo, pidiendo tanto ....... .......so en el caso de este EA, lo que es más mejor y adecuado, que la barra debe ser added.....i quieren que cuando la línea de MA lento cruzado completamente por la línea de MA rápido (de cualquier manera) ......... en la segunda barra siguiente, el comercio debe ser ejecutado, podemos código de esta manera que después de cruzar, cuántas barras más tarde el comercio podría ser ejecutado, por ejemplo, después de cruzar en la primera barra, después de cruzar en la segunda o tercera barra? imágenes se adjuntan para explicar mejor la cuestión, gracias

saludos

Archivos adjuntos:
7.png  35 kb
8.png  38 kb
 

Aquí están los indicadores.

Gracias.

Archivos adjuntos:
 
mrtools:
Mntiwana, en Bar to Use si pones cero estará tomando señales en la barra aún abierta (peligroso para un EA, IMHO) si es mayor que cero el EA estará recibiendo señales de barras cerradas de vuelta de la barra abierta, así que si tienes BarToUse = 2, entonces tu EA estará revisando 2 barras de vuelta.

Estimado MRTOOLS,

¿quieres decir .... bar para usar = 2 ...... 2 bar después de cruzar ... no 2 N bares, cuando se escribe Bares Volver, me confundí, mi culpa....por favor, me corrija . gracias.

saludos

 
mntiwana:
Estimado MRTOOLS,

¿quieres decir .... bar para usar = 2 ...... 2 bar después de cruzar...no 2 N bares , cuando escribes Bars BACK, me confundí, mi culpa....por favor corrígeme . gracias.

saludos

mntiwana

No, pero cuando barras a usar == 2, entonces el cruce se comprobará a 2 barras de la barra actual - no comprobará el cruce en la barra actual. Así que, con un retraso de 2 barras

 
mladen:
mntiwana No, pero cuando las barras a utilizar == 2, entonces el cruce se comprobará a 2 barras de la barra actual - no comprobará el cruce en la barra actual. Así que, con un retraso de 2 barras

Estimado MLADEN,

gracias jefe, entonces en este caso, el código podría ser así? por favor corrígeme,

saludos

===================================================================

código original "simple MA cross EA

//

#define _doNothing 0

#define _doBuy 1

#define _doSell 2

int inicio()

{

int doWhat = _doNothing

double diffc = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse) -iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse);

double diffp = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse+1)-iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse+1);

si ((diffc*diffp)<0)

si (diffc>0)

doWhat = _doBuy;

si no, doWhat = _doSell;

si (doWhat==_doNothing) return(0);

//

================================================

alterado de esta manera

#define _doNothing 0

#define _doBuy 1

#define _hacerVenta 2

int inicio()

{

int doWhat = _doNothing;

double diffc = iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse)

-iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse);

double diffp = iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse==2)

-iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse==2);

if ((diffc*diffp)<0)

si (diffc>0)

doWhat = _doBuy;

si no, doWhat = _doSell;

si (doWhat==_doNothing) return(0);

//

=====================================

Archivos adjuntos:
9.png  108 kb