Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 663

 
new-rena:

¿5 libras por una respuesta?

)

Esperando...

Bueno, si la pregunta requiere un trabajo individual y el resultado es un código terminado, todo es posible...
 

Por la tarde. El indicador necesita obtener datos de otro indicador, cuando se carga el indicador se muestra el historial, los nuevos valores no se actualizan, por favor, avise cuál es el error en el bucle o en algún otro lugar:

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,   // Количество просчитанных баров
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int limit;
   int counted_bars = IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit = Bars - counted_bars - 500;
   for (int i=limit; i>=0; i--)
   {
     Buf_1[i]=iCustom(Symbol(), 0,"ATR", 0, i);//При подстановке любого индикатора нет обновления!!!
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

En esta situación, estoy recibiendo un error - ¿puede ayudarme a entender por qué se produce un error - en MQL5 no se puede cambiar el valor de la variable de entrada del usuario?

'Slippage' - la constante no puede ser modificada Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

 
-Aleks-:

En una situación así, me da un error - ¿pueden ayudarme a entender por qué se produce el error - en MQL5 no se puede cambiar el valor de una variable introducida por el usuario?

'Slippage' - la constante no puede ser modificada Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

No existe tal cosa en 5

MarketInfo

No sé sobre el deslizamiento)

 
new-rena:

Este no está en el 5pc.

MarketInfo

Qué demonios - por qué no lo pone en los errores...

¿Qué tipo de analógico debo utilizar?

 
-Aleks-:

Oh, mierda - por qué no lo pone en el error ...

¿Qué tipo de analógico debo utilizar?

En este mismo hilo el fin de semana pasado se hablaba de cambiar a la 5-circa.

Desde mi puesto y hacia atrás leer todos los puestos en 2-3 páginas

https://www.mql5.com/ru/forum/6343/page662#comment_2930149

Вопросы от начинающих
Вопросы от начинающих
  • www.mql5.com
Форум трейдеров MQL5.community
 
new-rena:

En el mismo hilo del fin de semana pasado se trató el cambio a 5k.

Desde mi puesto y hacia atrás leer todos los puestos en 2-3 páginas

https://www.mql5.com/ru/forum/6343/page662#comment_2930149

Sí, sí, ya he abierto ese artículo - gracias. Insertada la función MarketInfoMQL4, pero el resultado es negativo.... Tal vez lo puse en el lugar equivocado...

 
-Aleks-:

Sí, ya he abierto este artículo - gracias. He pegado la función MarketInfoMQL4, pero el resultado es negativo.... Puede que lo haya puesto en el lugar equivocado...

MarketInfo(Sym bol(),MODE_DIGITS) is (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)

Será mejor que profundices en las profundidades de la sustitución en las funciones

Será más elegante y cercano a MQL5.

Tómate tu tiempo, en definitiva.

No se necesitan bibliotecas ni funciones ajenas. Deberías aprender a escribir en MQL5 puro.

 
-Aleks-:

En esta situación, estoy recibiendo un error - ¿puede ayudarme a entender por qué se produce un error - en MQL5 no se puede cambiar el valor de la variable de entrada del usuario?

'Slippage' - la constante no puede ser modificada Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

Sí, los parámetros de entrada no se pueden modificar. Para ser honesto, no entiendo por qué este valor debe cambiarse de acuerdo con las cotizaciones de 3/5 dígitos? Este valor se establece en los parámetros de entrada. ¿No se puede escribir 100 (si son 3/5 dígitos) y no molestarse?
 
new-rena:

MarketInfo(Sym bol(),MODE_DIGITS) is (int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)

Será mejor que profundices en las profundidades de la sustitución en las funciones

Será más elegante y cercano a MQL5.

En resumen, tómate tu tiempo.

No se necesitan bibliotecas ni funciones ajenas. Deberías aprender a escribir en MQL5 puro.

Por cierto, la función de MarketInfoMQL4() conduce a un error - ¿cómo solucionarlo? (aprender dos idiomas me hará hervir el cerebro - necesito poder comprobar cómo funcionan las ideas en el mercado de valores sin una codificación profunda)

'(' - nombre esperado Kamikadze_MA-may.mq5 332 17
'::' - nombre esperado Kamikadze_MA-may.mq5 332 17


double MarketInfoMQL4(string symbol,
                      int type)
  {
   switch(type)
     {
      case MODE_LOW:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
      case MODE_HIGH:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
      case MODE_TIME:
         return(SymbolInfoInteger(symbol,SYMBOL_TIME));
      case MODE_BID:
        {
         MqlTick last_tick;
         SymbolInfoTick(symbol,last_tick);
         double Bid=last_tick.bid;
         return(Bid);
        }
      case MODE_ASK:
        {
         MqlTick last_tick;
         SymbolInfoTick(symbol,last_tick);
         double Ask=last_tick.ask;
         return(Ask);
        }
      case MODE_POINT:
         return(SymbolInfoDouble(symbol,SYMBOL_POINT));
      case MODE_DIGITS:
         return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
      case MODE_SPREAD:
         return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
      case MODE_STOPLEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
      case MODE_LOTSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
      case MODE_TICKVALUE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
      case MODE_TICKSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
      case MODE_SWAPLONG:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
      case MODE_SWAPSHORT:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
      case MODE_STARTING:
         return(0);
      case MODE_EXPIRATION:
         return(0);
      case MODE_TRADEALLOWED:
         return(0);
      case MODE_MINLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
      case MODE_LOTSTEP:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
      case MODE_MAXLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
      case MODE_SWAPTYPE:
         return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
      case MODE_PROFITCALCMODE:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
      case MODE_MARGINCALCMODE:
         return(0);
      case MODE_MARGININIT:
         return(0);
      case MODE_MARGINMAINTENANCE:
         return(0);
      case MODE_MARGINHEDGED:
         return(0);
      case MODE_MARGINREQUIRED:
         return(0);
      case MODE_FREEZELEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));

      default: return(0);
     }
   return(0);
  }