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

 
FinEngineer: Sólo queda un error 2012.12.22 00:56:44 Pair_delta_RSI (EURGBP,M1) No se han calculado todos los datos de RSI1_Handle (-1bars ). Error4806

Este error no sale durante la compilación, sino cuando adjunto el indicador al gráfico, o cuando cambio el marco temporal.

¿Este mensaje de error se reproduce todo el tiempo o desaparece con el tiempo?

 
¡Chicos! ¿Se puede conectar el MT5 a cualquier CC?
 
net:
¡Chicos! ¿Se puede conectar MT5 a cualquier empresa de corretaje?

No. El comercio a través de MT5 es posible a través del corredor que proporciona la posibilidad de operar a través de esta plataforma, como VTB24 y Alfa forex.

Условия для трейдеров
  • www.alfa-forex.ru
Если у вас уже есть опыт работы на валютном рынке, то вы по достоинству оцените преимущества работы с Альфа-Форекс Самые узкие спреды на рынке: EUR/USD — от 0,7 пункта Отсутствие минимального депозита Быстрый ввод и вывод средств Исполнение ордеров без проскальзываний и реквот Альфа-Форекс входит в банковскую группу в составе Консорциума...
 
Yedelkin:

¿Este mensaje de error se reproduce constantemente o desaparece con el tiempo?

Una vez, cuando adjunto el indicador al gráfico...
 
Yedelkin:

¿Este mensaje de error se reproduce todo el tiempo o desaparece con el tiempo?

2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) array out of range in 'Pair_delta_RSI.mq5' (92,37)
resulta que este error también aparece... es decir.... hay dos errores...
 
Yedelkin:

¿Este mensaje de error se reproduce constantemente o desaparece con el tiempo?

Probado en alphaforex, acaba de probar en alpari, mismo error...
 

FinEngineer:

Yedelkin: ¿Este mensaje de error se reproduce todo el tiempo o desaparece con el tiempo?

Una vez, cuando adjunto el indicador al gráfico...

Entonces lo estás haciendo bien. Cuando se acaba de adjuntar el programa a un gráfico o se cambia el marco temporal, no hay nuevos datos calculados para el indicador RSI o cualquier otro en el terminal. Y el terminal necesita un tiempo para calcular los topes indicadores necesarios. Fíjate bien en tu código (entiendo que está escrito según el ejemplo de otra persona, pero no obstante): Cuando los datos calculados para el RSI no son suficientes, la función OnCalculate() deja de funcionar ('return(0);') y espera un nuevo tick. Tan pronto como en el siguiente tick se calculan los buffers del indicador para el RSI, su indicador comienza a trabajar en modo normal. Que sí, a juzgar por lo que dices.

También puede insertar la comprobación con BarsCalculated() en la función OnInit() - entonces el error ocurrirá muy raramente (si es que ocurre). En la descripción de la función BarsCalculated() se ofrece un ejemplo.

 
FinEngineer: 2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) array out of range in 'Pair_delta_RSI.mq5' (92,37)
resulta que este error también aparece... es decir, hay dos errores...
Con respecto a este error ya le escribí ayer. (No olvides insertar el código correctamente :) )
 
Yedelkin:
Sobre este error ya te escribí ayer. (No olvides insertar el código correctamente :) )

Se ha eliminado el código responsable de la insuficiencia de datos (abajo)

int calculated=BarsCalculated(RSI1_Handle);

if(calculado<total de tarifas)

{

Print("No se han calculado todos los datos de RSI1_Handle (",calculated, "bars ). Error",GetLastError());

return(0);

}

calculated=BarsCalculated(RSI2_Handle);

if(calculado<total de tarifas)

{

Print("No se han calculado todos los datos de RSI2_Handle (",calculated, "bars ). Error",GetLastError();

return(0);

¿Pueden decirme cómo marcar los fragmentos de código en el mensaje?

Ahora sale un error:

2012.12.22 15:14:00 Pair_delta_RSI (EURGBP,M1) ¡La obtención del RSI1 ha fallado! Error4806

 
FinEngineer: Por favor, indique cómo seleccionar los fragmentos de código en el mensaje.

Inserte el código correctamente.

FinEngineer : Eliminado el trozo de código responsable de la insuficiencia de datos (abajo)
   int calculated=BarsCalculated(RSI1_Handle);
   if(calculated<rates_total)
     {
      Print("Not all data of RSI1_Handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);
     }
   calculated=BarsCalculated(RSI2_Handle);
   if(calculated<rates_total)
     {
      Print("Not all data of RSI2_Handle is calculated (",calculated,"bars ). Error",GetLastError());
      return(0);

Allí funcionaba bien ese "trozo de código responsable de la insuficiencia de datos". Y correctamente informó de que en los primeros datos de garrapatas para RSI aún no se calcula por el terminal. Si no le gusta recibir mensajes de error, intente hacer lo mismo que arriba, es decir, comprobar los datos calculados no sólo en OnCalculate(), sino también en OnInit(). En otras palabras, intente esperar el cálculo de los datos para los indicadores técnicos seleccionados en OnInit() y luego pase al procesamiento de los ticks en OnCalculate() cuando se garantice el cálculo de los datos para los indicadores.

Añadiendo. Al final, la eliminación de una parte del código de comprobación no aumenta el número de datos calculados del indicador :)