error al compilar sin ser capaz de solucionar.

 

¡Hola buenas! a ver si me podeis ayudar. Llevo un tiempo generando un codigo para un expert y al compilar siempre tengo estos tres errores:

* 'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 127 13

could be one of 2 function(s) tsla_long_5m.mq5 127 13

   built-in: double SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE) tsla_long_5m.mq5 127 13

   built-in: bool SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE,double&) tsla_long_5m.mq5 127 13

* 'iStochastic' - wrong parameters count tsla_long_5m.mq5 162 35

   built-in: int iStochastic(const string,ENUM_TIMEFRAMES,int,int,int,ENUM_MA_METHOD,ENUM_STO_PRICE) tsla_long_5m.mq5 162 35

* 'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 235 21

could be one of 2 function(s) tsla_long_5m.mq5 235 21

   built-in: double SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE) tsla_long_5m.mq5 235 21

   built-in: bool SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE,double&) tsla_long_5m.mq5 235 21


No soy capaz de solucionarlo, ¿me podriais echar una mano?



 
Jose Antonio Perez Ruiz:

¡Hola buenas! a ver si me podeis ayudar. Llevo un tiempo generando un codigo para un expert y al compilar siempre tengo estos tres errores:

* 'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 127 13

could be one of 2 function(s) tsla_long_5m.mq5 127 13

   built-in: double SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE) tsla_long_5m.mq5 127 13

   built-in: bool SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE,double&) tsla_long_5m.mq5 127 13

* 'iStochastic' - wrong parameters count tsla_long_5m.mq5 162 35

   built-in: int iStochastic(const string,ENUM_TIMEFRAMES,int,int,int,ENUM_MA_METHOD,ENUM_STO_PRICE) tsla_long_5m.mq5 162 35

* 'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 235 21

could be one of 2 function(s) tsla_long_5m.mq5 235 21

   built-in: double SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE) tsla_long_5m.mq5 235 21

   built-in: bool SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE,double&) tsla_long_5m.mq5 235 21


No soy capaz de solucionarlo, ¿me podriais echar una mano?



El error se describe perfectamente. Se indica qué está mal y cómo solucionarlo. No estás usando los parámetros correctos en esas llamadas. 
 
Enrique Enguix #:
El error se describe perfectamente. Se indica qué está mal y cómo solucionarlo. No estás usando los parámetros correctos en esas llamadas. 
Debe ser entonces que no lo estoy entendiendo. Muchas gracias Enrique, intentaré traducirlo mejor o preguntar ya que con los cambios de un he intentado no termino de solucionarlo, aún añadiendo parámetros de stoch por ejemplo. ¿Podrías echarme una mano como se podría corregir y que sería lo correcto? O donde puedo aseosorarme? Gracias de nuevo 
 
Jose Antonio Perez Ruiz #:
Debe ser entonces que no lo estoy entendiendo. Muchas gracias Enrique, intentaré traducirlo mejor o preguntar ya que con los cambios de un he intentado no termino de solucionarlo, aún añadiendo parámetros de stoch por ejemplo. ¿Podrías echarme una mano como se podría corregir y que sería lo correcto? O donde puedo aseosorarme? Gracias de nuevo 

De forma muy simplificada:


Primero deberías declarar las variables

int Stochastic_handle;
double Stochastic_Main[]

En OnInit deberías iniciar el indicador

Stochastic_handle = iStochastic(NULL, PERIOD_CURRENT, 5, 3, 3, MODE_SMA, STO_LOWHIGH);
   if(Stochastic_handle < 0)
     {
      Print("The creation of iStochastic has failed: Stochastic_handle=", INVALID_HANDLE);
      Print("Runtime error = ", GetLastError());
      return(INIT_FAILED);
     }

Y luego en OnTick deberías copiar los buffers

if(CopyBuffer(Stochastic_handle, MAIN_LINE, 0, 200, Stochastic_Main) <= 0) return;
   ArraySetAsSeries(Stochastic_Main

Un ejemplo de uso:

if(Stochastic_Main[0] > 0)
 
ya consegui solucionar el error de stoch, pero sigo con estos dos volviendome loco:
'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 148 14
'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 256 22


No se si estoy poniendo mal algun simbolo de los activos o que... 
 
Jose Antonio Perez Ruiz #:
ya consegui solucionar el error de stoch, pero sigo con estos dos volviendome loco:
'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 148 14
'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 256 22


No se si estoy poniendo mal algun simbolo de los activos o que... 

Sin ver el código no sé qué estás tratando de hacer

 
Denuevo  gracia smiguel por ayudar. A ver si pasandote parte del codigo me puedes echar una mano:

// Ajustar lotaje según comisiones y spread
        double spread_pips = 0.0;
        if (!SymbolInfoDouble(symbol_TSLA, SYMBOL_SPREAD, spread_pips))
        {
            Print("Error obteniendo el spread de TSLA.");
            return;  // Si no se puede obtener el spread, salimos
        }
        spread_pips = MathMax(spread_pips, spread_min_pips);
        spread_pips = MathMin(spread_pips, spread_max_pips);
        double spread_cost = spread_pips * _Point * lot_size;
        double commission_cost = commission_rate * lot_size * price_TSLA;  // Declarado e inicializado
        double total_cost = spread_cost + commission_cost;

esa es la linea que me marca uno de los dos errores:
'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 148 14
could be one of 2 function(s) tsla_long_5m.mq5 148 14
   built-in: double SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE) tsla_long_5m.mq5 148 14
   built-in: bool SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE,double&) tsla_long_5m.mq5 148 14


Y ese es el mensaje que me devuelve meta 5 sobre ese error. Si pudieses ecahrme una mano te lo agradeceria, ya que me queda solo dos errores para poder compilar y me esta volviendo loco . Tambien soy nuevo en esto, se nota... jejee
 
Jose Antonio Perez Ruiz #:
Denuevo  gracia smiguel por ayudar. A ver si pasandote parte del codigo me puedes echar una mano:

// Ajustar lotaje según comisiones y spread
        double spread_pips = 0.0;
        if (!SymbolInfoDouble(symbol_TSLA, SYMBOL_SPREAD, spread_pips))
        {
            Print("Error obteniendo el spread de TSLA.");
            return;  // Si no se puede obtener el spread, salimos
        }
        spread_pips = MathMax(spread_pips, spread_min_pips);
        spread_pips = MathMin(spread_pips, spread_max_pips);
        double spread_cost = spread_pips * _Point * lot_size;
        double commission_cost = commission_rate * lot_size * price_TSLA;  // Declarado e inicializado
        double total_cost = spread_cost + commission_cost;

esa es la linea que me marca uno de los dos errores:
'SymbolInfoDouble' - no one of the overloads can be applied to the function call tsla_long_5m.mq5 148 14
could be one of 2 function(s) tsla_long_5m.mq5 148 14
   built-in: double SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE) tsla_long_5m.mq5 148 14
   built-in: bool SymbolInfoDouble(const string,ENUM_SYMBOL_INFO_DOUBLE,double&) tsla_long_5m.mq5 148 14


Y ese es el mensaje que me devuelve meta 5 sobre ese error. Si pudieses ecahrme una mano te lo agradeceria, ya que me queda solo dos errores para poder compilar y me esta volviendo loco . Tambien soy nuevo en esto, se nota... jejee
No sé si esto era para mi, pero el Spread no es SymbolInfoDouble, no estoy seguro al 100% ahora, pero debe ser un SymbolInfoInteger