[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 231

 
PapaYozh:


cero emoción =( todavía nada =(
 
CLAIN:

no hay emociones =( todavía nada =(


Tienes un mal presentimiento, como si te debiera algo.

Analiza tu CheckTicket(), ¿qué pone en tu ticket?

Y en general, utilice la función Print(...) y analice el registro.

 
CLAIN:

cero emoción =( todavía nada =(

No conozco su lógica detrás de la función. Por si acaso, le sugiero que compruebe si esto es lo que quiere.

¿Está aplicando el iMACD correctamente y no necesita también una línea de señal?

 
PapaYozh:


Hay un mal presentimiento, como si te debiera algo.

Analiza tu CheckTicket(), ¿qué pone en tu ticket?

En general, utilice la función Print(...) y analice el registro.


No me debes nada... Siento que te sientas así... es que he tenido muchos problemas con ella ya...............
 

Creo que checkticket no tiene nada que ver, porque si sólo cambio signal_MACD a true, las operaciones se cierran bien, y la búsqueda se reduce sólo al tamaño de la función:

 bool signal_MACD() 
  { 
    bool signal_MACD = false; 
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       }        
    } 
    return(signal_MACD);
  } 

en algún lugar de aquí no quiere tomar true......... es que no trabajo bien con el bucle for, así que no sé donde poner return aquí

 
CLAIN:

Creo que checkticket no tiene nada que ver, porque si sólo cambio signal_MACD a true, las operaciones se cierran bien, y la búsqueda se reduce sólo al tamaño de la función:

por aquí no quiere coger true......... es que no me va bien el bucle for, así que no sé dónde poner return aquí

¿Y cuál es la diferencia entre double tmp y NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)?

Al multiplicarlos siempre serán mayores que cero.

Creo que sí))

(-) * (-) = +

(+) * (+) = +

 

mi lógica es muy simple... si el indicador MACD está a un lado de 0 durante no más de 5 minutos, entonces trade.... eso es todo...

por cierto si

bool signal_MACD() 
  { 
    bool signal_MACD = true; 
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       }        
    } 
    return(signal_MACD);
  } 

... en la 3ª línea "false" a "true", los tratos se harán todo el tiempo, significa que escribí la lógica y el código correcto de los tratos, y todo lo que queda es una cláusula for y return

terminémoslo por favor

 
DhP:

¿Cuál es la diferencia entre double tmp yNormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0)?

Al multiplicarlos siempre serán mayores que cero.

Creo que sí))

(-) * (-) = +

(+) * (+) = +


no siempre será mayor que 0... Sólo si el MACD cruzó 0 en uno de los ticks, habrá (+)*(-) - lo que indicará un cruce... bueno... mi lógica =) no necesariamente correcta, por supuesto )
 
CLAIN:

mi lógica es muy simple... si el indicador MACD está a un lado de 0 durante no más de 5 minutos, entonces trade.... eso es todo...

por cierto si

... en la 3ª línea "false" a "true", los tratos se harán todo el tiempo, significa que escribí la lógica y el código correcto de los tratos, y todo lo que queda es una cláusula for y return

terminémoslo por favor


Se concluirán todo el tiempo porque la función siempre devolverá "true"
 
CLAIN:

mi lógica es muy simple... si el indicador MACD está a un lado de 0 durante no más de 5 minutos, entonces trade.... eso es todo...

por cierto si

... en la 3ª línea "false" a "true", los tratos se harán todo el tiempo, significa que escribí la lógica y el código correcto de los tratos, y todo lo que queda es una cláusula for y return

Terminémoslo, por favor.

¿Tal vez debería haber(i) en la línea? .....

if(NormalizeDouble(iMACD( Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)