Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 176
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Lecture, mais je n'aurais jamais deviné qu'il fallait ouvrir le fichier avant la boucle).
Peut-être que je ne l'ai pas lu attentivement.)Il existe un conseiller expert, qui est guidé par la barre d'épingle lors des transactions. Le robot fonctionne correctement sur les devises et de manière totalement imprévisible sur les CFD.
Pouvez-vous me dire comment cela peut se produire ?
J'ai écrit un robot qui est basé sur Pinbar lors de la négociation. Le robot fonctionne correctement sur les devises et de manière totalement imprévisible sur les CFD.
Pouvez-vous me dire comment cela peut se produire ?
Voici la fonction de définition de la Pinbar
Lorsque je l'insère dans le conseiller expert, la fonction fonctionne bien (c'est-à-dire que le conseiller expert fixe les transactions sur la barre suivante après la barre correspondant aux conditions de la fonction) pour les paires de devises. Cependant, les transactions sur CFD sont ouvertes partout.
Quelle est la différence entre les CFD et les paires de devises pour cette fonction ?
Voici la fonction de définition de la Pinbar
Lorsque je l'insère dans le conseiller expert, la fonction fonctionne bien (c'est-à-dire que le conseiller expert fixe les transactions sur la barre suivante après la barre correspondant aux conditions de la fonction) pour les paires de devises. Cependant, les transactions sur CFD sont ouvertes partout.
Quelle est la différence entre les CFD et les paires de devises pour cette fonction ?
Tout d'abord, remplacez tous les && par {} afin que chacune des conditions soit dans son propre bloc - puis vous pouvez dans chaque bloc dérouler le résultat testé - voyez dans le journal quelles valeurs vous obtenez.
Merci, j'ai suivi les conseils et compris où je faisais fausse route. Parce que mon EA évoluait sur 5 chiffres et que le CFD n'est que de 2 chiffres. Je m'attendais à ce que l'EA réagisse à 50 pips minimum et j'ai obtenu une réaction de 5 pips. J'ai fait une erreur.
Veuillez m'aider sur ce point.
Il y a une telle partie dans le code :
MathAbs(Close1-Open1)/(High1-Low1)
Il arrive parfois que High1=Low1. Le testeur génère alors l'erreur critique disant qu'il ne peut pas diviser par zéro.
Comment le contourner ?
Merci, j'ai suivi les conseils et compris où je faisais fausse route. Parce que mon EA évoluait sur 5 chiffres et que le CFD n'est que de 2 chiffres. Je m'attendais à ce que l'EA réagisse à 50 pips minimum et j'ai obtenu une réaction de 5 pips. J'ai fait une erreur.
Veuillez m'aider sur ce point.
Il y a une telle partie dans le code :
Il arrive parfois que High1=Low1. Le testeur génère alors l'erreur critique disant qu'il ne peut pas diviser par zéro.
Comment le contourner ?
Vous pouvez le faire sans réfléchir :
Bonjour, j'ai rencontré un problème lors de la compilation :
void OnTick()
{
double minprice=999999, mp, maxprice=-999999 ;
for(int i=0 ; i<10 ; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i) ;
si (mp < minprice)
minprice = mp ;
}
for(int i=0 ; i<10 ; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i) ;
si (mp > maxprice)
maxprice = mp ;
}
Comment("Prix minimal : " + DoubleToString(minprice, 5) + "\n "+
"Prix maximum : " + DoubleToString(maxprice, 5)) ;
}
Le code source contient des fonctions que le compilateur jure par iLow et iHigh et la variable Simbol() là en mode chaîne, mais il résout un autre problème dans l'exemple. Que dois-je corriger dans le code ci-dessus. Je suis coincé et je n'arrive pas à compiler la boucle pour la vérifier.
DU MANUEL
Si vous voulez obtenir la valeur correspondant à la barre incomplète actuelle, alors
vous pouvez utiliser la première forme de l'appel en spécifiant start_pos=0 et count=1.
Exemple :
#property copyright "2009, MetaQuotes Software Corp."
#lien de propriété "https://www.mql5.com"
#propriété version "1.00"
#property description "Exemple de sortie des valeurs High[i] et Low[i]".
#property description "pour des barres choisies au hasard".
double High[],Low[] ;
//+------------------------------------------------------------------+
//| Obtenir le niveau le plus bas pour un numéro de barre donné |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double low=0 ;
ArraySetAsSeries(low,true) ;
int copied=CopyLow(symbole,timeframe,0,Bars(symbole,timeframe),Low) ;
if(copied>0 && index<copied) low=Low[index] ;
retour (faible) ;
}
//+------------------------------------------------------------------+
//| Obtenir le haut pour le numéro de barre donné |
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0 ;
ArraySetAsSeries(high,true) ;
int copied=CopyHigh(symbole,timeframe,0,Bars(symbole,timeframe),High) ;
if(copied>0 && index<copied) high=High[index] ;
retour (haut) ;
}
//+------------------------------------------------------------------+
Bonjour, j'ai rencontré un problème lors de la compilation :
void OnTick()
{
double minprice=999999, mp, maxprice=-999999 ;
for(int i=0 ; i<10 ; i++)
{
mp = iLow(Simbol(), PERIOD_CURRENT, i) ;
si (mp < minprice)
minprice = mp ;
}
for(int i=0 ; i<10 ; i++)
{
mp = iHigh(Simbol(), PERIOD_CURRENT, i) ;
si (mp > maxprice)
maxprice = mp ;
}
Comment("Prix minimum : " + DoubleToString(minprice, 5) + "\n "+
"Prix maximum : " + DoubleToString(maxprice, 5)) ;
}
Le code source contient des fonctions que le compilateur jure par iLow et iHigh ; la variable Simbol() y est en mode chaîne, mais elle résout un autre problème dans l'exemple. Que dois-je corriger dans le code ci-dessus. Je suis bloqué et je n'arrive pas à compiler la boucle pour la vérifier.
DU MANUEL
Si vous voulez obtenir la valeur correspondant à la barre incomplète actuelle, alors
vous pouvez utiliser la première forme de l'appel en spécifiant start_pos=0 et count=1.
Exemple :
#property copyright "2009, MetaQuotes Software Corp."
#lien de propriété "https://www.mql5.com"
#propriété version "1.00"
#property description "Exemple de sortie des valeurs High[i] et Low[i]".
#property description "pour des barres choisies au hasard".
double High[],Low[] ;
//+------------------------------------------------------------------+
//| Obtenir le niveau le plus bas pour un numéro de barre donné |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double low=0 ;
ArraySetAsSeries(low,true) ;
int copied=CopyLow(symbole,timeframe,0,Bars(symbole,timeframe),Low) ;
if(copied>0 && index<copied) low=Low[index] ;
retour (faible) ;
}
//+------------------------------------------------------------------+
//| Obtenir le haut pour le numéro de barre donné |
//+------------------------------------------------------------------+
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
double high=0 ;
ArraySetAsSeries(high,true) ;
int copied=CopyHigh(symbole,timeframe,0,Bars(symbole,timeframe),High) ;
if(copied>0 && index<copied) high=High[index] ;
retour (haut) ;
}
//+------------------------------------------------------------------+
il y a une erreur dans ce motSimbol() vous devriez écrire Symbol() ou _Symbol
Vous avez une erreur dans ce motSimbol() - Symbol() ou _Symbol devrait être écrit
Merci, l'erreur sur Simbol a été corrigée en orthographiant correctement Symbol. J'ai un problème avec les fonctions iLow et iHigh.
Quelle est ladifférence en % entre MQL4 et MQL5 ? Sinon, je vais devoir me gratter la tête à chaque fois que je regarderai les tutoriels vidéo de MQL4.