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

 
DhP:

¿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í))

(-) * (-) = +

(+) * (+) = +


а.... tienes toda la razón... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - aquí deberíamos poner "i" en lugar de 0 - lo cambié, pero todavía no empezó a hacer tratos....

el código ahora se ve así:

 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,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       }        
    } 
    return(signal_MACD);
  } 

pero sigue sin funcionar

 
CLAIN:


а.... tienes toda la razón... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - Lo cambié, pero nunca empezó a hacer tratos....

El código ahora se ve así:

pero sigue sin funcionar.

¿Cambia esto de verdadero a falso?

¿Cambia la función el valor de salida?

 
CLAIN:


а.... tienes toda la razón... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - aquí deberíamos poner "i" en lugar de 0 - lo cambié, pero todavía no empezó a hacer tratos....

el código ahora se ve así:

pero sigue sin funcionar


Utilice "Imprimir", lea los registros y compare "lo que es" con "lo que se espera".
 

La función no cambia los valores.... al menos esa es mi opinión, porque las operaciones nunca empezaron a abrirse.

¿cómo se utiliza la impresió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,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          Print(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
          break; 
       }        
    } 
    return(signal_MACD);
  } 

Sólo tengo esta versión, pero algo me dice que está mal también....

 
CLAIN:

La función no cambia los valores.... al menos esa es mi opinión, porque las operaciones nunca empezaron a abrirse.

¿cómo se utiliza la impresión?

Sólo tengo esta versión, pero algo me dice que está mal también....


Print("iMACD(",Symbol(),",",TF,",",fast_ema,",",slow_ema,",",signal_period,",",PRICE_CLOSE,",",MODE_MAIN,",",i,",",")*",tmp,"=",iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
 
MaxZ:

Si se declaran todas las variables, no veo ningún error en la sintaxis de MQL4...

¿Cuál es el problema?

Gracias.

Haciendo un cálculo de retroceso para mi EA. He visto que los cálculos eran inexactos, así que he revisado los bloques que pueden contener errores.

 


Hola.

Ayúdame a entender
Estoy escribiendo un EA y no puedo entender las órdenes.
Estoy haciendo pedidos:
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red);
Alert (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_ 1,3,sl_sell,tp_sell_d_1,",2,0,Red);
Alert (GetLastError();

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_ 2,3,sl_sell,tp_sell_d_2,",3,0,Red);
Alert (GetLastError();

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,"",4,0,Red);
Alert (GetLastError());

Si se activa la primera toma de beneficios, elimine las demás órdenes.
Si el primero no se ha disparado, y el segundo take profit se ha disparado, cambie los lotes_3 y lot_4 por el tercer y cuarto take profit.

 
sergey_r:


Hola.

Ayúdame.
Estoy escribiendo un EA y no puedo entender las órdenes.
Estoy poniendo órdenes:
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red);
Alerta (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_ 1,3,sl_sell,tp_sell_d_1,",2,0,Red);
Alerta (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_ 2,3,sl_sell,tp_sell_d_2,",3,0,Red);
Alerta (GetLastError());

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,",4,0,Red);
Alerta (GetLastError());
Lo necesito:
Si se activa la primera toma de beneficios, elimine las órdenes restantes.
Si el primero no se ha disparado, y el segundo take profit se ha disparado, cambia los lotes_3 y lot_4 por el tercero y el cuarto.


Lo que vino primero - utilizar la función de esta página del foro - que devuelve la bandera para cerrar la orden en tomar ganancias. Antes de eso, dependiendo de sus (diferentes) volúmenes de pedidos - se establece a cada uno de ellos un número_mágico diferente, es decir, lote - mágico 1, lote1 - mágico 2 etc. Luego se comprueba si la orden con magia 1 fue cerrada por la orden de toma usando esta función y si es así se "eliminan las otras". Y luego por el código también compruebas la segunda orden con el número mágico 2 - si está bien, entonces modificas la tercera y la cuarta orden (cambias sus volúmenes)... y al establecer las órdenes pendientes y modificarlas es mejor que te acuerdes de comprobar las tolerancias mínimas y todo lo demás... Así...
 

No entiendo cómo utilizar las funciones. ¿Podría describir cómo hacerlo?

Aquí he hecho estos pedidos. Luego inserto la función de esa página. ¿O cómo? Describa un ejemplo de cómo hacerlo. Por favor.

 
sergey_r:

No entiendo cómo utilizar las funciones. ¿Podría describir cómo hacerlo?

Aquí he hecho estos pedidos. Luego inserto la función de esa página. ¿O cómo? Describa un ejemplo de cómo hacerlo. Por favor.



El orden de trabajo con f-mi - son cosas básicas, alrededor de las cuales gira todo... Desmonta, busca ejemplos de búhos (en un código competente), se pueden encontrar en codebase - desmonta este ejemplo de búho y utilízalo como base para el tuyo... Es una base, no puedes prescindir de ella. Yo mismo puse el búho basado en este ejemplo en codebase.

Tómatelo con calma, tómate tu tiempo, resuélvelo.