Questions des débutants MQL5 MT5 MetaTrader 5 - page 76

 
FinEngineer: Une seule erreur subsiste 2012.12.22 00:56:44 Pair_delta_RSI (EURGBP,M1) Toutes les données de RSI1_Handle ne sont pas calculées (-1bar). Erreur4806

Cette erreur n'apparaît pas lors de la compilation, mais lorsque j'attache l'indicateur au graphique, ou lorsque je change de cadre temporel.

Ce message d'erreur apparaît-il tout le temps, ou disparaît-il avec le temps ?

 
Les gars ! Le MT5 peut-il être connecté à n'importe quel courant continu ?
 
net:
Les gars ! MT5 peut-il être connecté à n'importe quelle société de courtage ?

Non. Le trading via MT5 est possible via le courtier qui offre la possibilité de trader via cette plateforme, comme VTB24 et Alfa forex.

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

Ce message d'erreur apparaît-il constamment, ou disparaît-il avec le temps ?

Une fois, quand j'attache l'indicateur au graphique...
 
Yedelkin:

Ce message d'erreur apparaît-il tout le temps, ou disparaît-il avec le temps ?

2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) tableau hors limites dans 'Pair_delta_RSI.mq5' (92,37)
il s'avère que cette erreur apparaît aussi... i.e.... il y a deux erreurs...
 
Yedelkin:

Ce message d'erreur apparaît-il constamment, ou disparaît-il avec le temps ?

Je l'ai essayé dans alphaforex, je viens de l'essayer dans alpari, même erreur...
 

FinEngineer:

Yedelkin: Ce message d'erreur apparaît-il tout le temps, ou disparaît-il avec le temps ?

Une fois, quand j'attache l'indicateur au graphique...

Alors vous vous en sortez bien. Lorsque vous attachez le programme à un graphique ou changez de période, il n'y a pas de nouvelles données calculées pour l'indicateur RSI ou tout autre indicateur dans le terminal. Et le terminal a besoin d'un certain temps pour calculer les tampons d'indicateurs nécessaires. Regardez attentivement votre code (je comprends qu'il est écrit selon l'exemple de quelqu'un d'autre, mais néanmoins) : Lorsque les données calculées pour le RSI ne sont pas suffisantes, la fonction OnCalculate() arrête de fonctionner ('return(0);') et attend un nouveau tick. Dès qu'au prochain tick, les tampons de l'indicateur pour le RSI sont calculés, votre indicateur commence à fonctionner en mode normal. Ce qui est le cas, à en juger par ce que vous dites.

Vous pouvez également insérer la vérification avec BarsCalculated() dans la fonction OnInit() - alors l'erreur se produira très rarement (voire pas du tout). Un exemple est donné dans la description de la fonction BarsCalculated().

 
FinEngineer: 2012.12.22 11:40:32 Pair_delta_RSI (EURGBP,M1) tableau hors limites dans 'Pair_delta_RSI.mq5' (92,37)
il s'avère que cette erreur apparaît également... c'est-à-dire qu'il y a deux erreurs...
Je vous ai déjà écrit hier au sujet de cette erreur. (N'oubliez pas d'insérer le code correctement :) )
 
Yedelkin:
Je vous ai déjà écrit hier à propos de cette erreur. (N'oubliez pas d'insérer le code correctement :) )

Suppression du morceau de code responsable de l'insuffisance des données (ci-dessous)

int calculated=BarsCalculated(RSI1_Handle) ;

if(calculated<rates_total)

{

Print("Toutes les données de RSI1_Handle ne sont pas calculées (",calculated, "bars ). Erreur",GetLastError()) ;

retour(0) ;

}

calculated=BarsCalculated(RSI2_Handle) ;

if(calculated<rates_total)

{

Print("Toutes les données de RSI2_Handle ne sont pas calculées (",calculated, "bars ). Erreur",GetLastError() ;

retour(0) ;

Pouvez-vous me dire comment marquer les fragments de code dans le message ?

Maintenant, une erreur s'affiche :

2012.12.22 15:14:00 Pair_delta_RSI (EURGBP,M1) La récupération de RSI1 a échoué ! Erreur4806

 
FinEngineer: Veuillez indiquer comment sélectionner les extraits de code dans le message ?

Insérez le code correctement.

FinEngineer : Suppression du morceau de code responsable de l'insuffisance de données (ci-dessous)
   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);

Il fonctionnait bien là, ce "morceau de code qui est responsable de l'insuffisance des données". Et il a été correctement signalé qu'au premier tick les données pour le RSI ne sont pas encore calculées par le terminal. Si vous n'aimez pas recevoir des messages d'erreur, essayez de faire comme ci-dessus, à savoir vérifier les données calculées non seulement dans OnCalculate(), mais aussi dans OnInit(). En d'autres termes, essayez d'attendre le calcul des données pour les indicateurs techniques sélectionnés dans OnInit(), puis passez au traitement des ticks dans OnCalculate() lorsque le calcul des données des indicateurs est garanti.

En ajoutant. En définitive, la suppression d'une partie du code de contrôle n'augmente pas le nombre de données calculées de l'indicateur :)

Raison: