Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 489
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Bonjour. Je veux écrire un EA pour MT4, une de ses tâches est de dessiner des lignes de Fibo, sur M1, en une heure. C'est-à-dire qu'à 11h00, il devrait tracer des lignes dans l'intervalle de 10h00 à 1059, en se concentrant sur les hauts et les bas. J'ai essayé différentes méthodes, j'ai posté ce qui était la dernière. Vous pouvez probablement raccourcir le code pour dessiner les niveaux. Leproblème est qu'il ne dessine pas les lignes dans la zone donnée.
int timemin=TimeMinute(Time[59]==0) ;
int timehour=TimeHour(Time[1] && TimeMinute(Time[0])) ;
int timemin1=TimeMinute(Time[0]==0) ;
int timehour1=TimeHour(Time[1] && TimeMinute(Time[59]))
int max=iHighest(Symbol(),1,MODE_HIGH,60,timehour) ;
int min=iLowest(Symbol(),1,MODE_LOW,60,timehour) ;
double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1)) ;
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1)) ;
ObjectDelete("FiboLevels") ; //------Nouveau niveau
if (barup)
{
WindowRedraw() ;
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]) ;
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen) ;
}
if (bardn)
{
WindowRedraw() ;
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]) ;
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed) ;
}
double f1=ObjectGet("FiboLevels",OBJPROP_PRICE1) ; //Sélectionne le premier prix
double f2=ObjectGet("FiboLevels",OBJPROP_PRICE2) ; //Sélectionne le deuxième prix et trace un graphique
double Diff=f2-f1 ;
string a11=DoubleToStr(f2-Diff*0.0,Digits) ;
string a12=DoubleToStr(f2-Diff*0.236,Digits) ;
string a13=DoubleToStr(f2-Diff*0.382,Digits) ;
string a14=DoubleToStr(f2-Diff*0.50,Chiffres) ;
string a15=DoubleToStr(f2-Diff*0.618,Chiffres) ;
string a16=DoubleToStr(f2-Diff*1.0,Chiffres) ;
bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6) ;
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0) ;
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236) ;
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382) ;
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50) ;
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0.618) ;
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0) ;
bool a111=ObjectSetFiboDescription("FiboLevels",0, "0.0%") ;
bool a122=ObjectSetFiboDescription("FiboLevels",1, "23.6%") ;
bool a133=ObjectSetFiboDescription("FiboLevels",2, "38.2%") ;
bool a144=ObjectSetFiboDescription("FiboLevels",3, "50.0%") ;
bool a155=ObjectSetFiboDescription("FiboLevels",4, "61.8%") ;
bool a166=ObjectSetFiboDescription("FiboLevels",5, "100.0%") ;
Bonjour. Je veux écrire un EA pour MT4, une de ses tâches est de dessiner des lignes de Fibo, sur M1, en une heure. C'est-à-dire qu'à 11h00, il devrait tracer des lignes dans l'intervalle de 10h00 à 1059, en se concentrant sur les hauts et les bas. J'ai essayé différentes méthodes, j'ai posté ce qui était la dernière. Vous pouvez probablement raccourcir le code pour dessiner les niveaux. Leproblème est qu'il ne dessine pas les lignes dans une zone donnée.
double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1)) ;double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1)) ;
ObjectDelete("FiboLevels") ; //------Nouveau niveau
if (barup)
{
WindowRedraw() ;
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max] ;
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen) ;
}
if (bardn)
{
WindowRedraw() ;
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]) ;
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed) ;
}
c'est plus court ? bool barup=... WindowRedraw() ; sera toujours exécuté - enlevé de if
il peut aussi être plus court ... voir mon dossier
Veuillez insérer le code correctement.
C'est encore plus clair :
Les gars, pourquoi mes ordres s'ouvrent-ils à chaque tick? Pouvez-vous me dire comment me concentrer sur la barre ?
Les gars, pourquoi mes ordres s'ouvrent-ils à chaque tick? Pouvez-vous me dire comment me concentrer sur la barre ?
Selon les conditions décrites dans l'ATS, donne le feu vert pour ouvrir, donc ouvre.
Il y a beaucoup de solutions dans ce cas. Tout dépend de ce qui vous convient le mieux.
Nous pouvons déterminer que le prochain ordre ne doit être ouvert que si le prix s'est éloigné du dernier de N points. Vous pouvez demander à ne pas ouvrir plus d'un ordre sur une barre. Un tel et un tel et ainsi de suite.
Notez les conditions dont vous avez besoin, et appliquez-les à vos tests.
Selon les conditions décrites dans l'ATS, il ouvre la commande.
Il y a beaucoup de solutions dans ce cas. Tout dépend de ce qui vous convient le mieux.
Nous pouvons déterminer que le prochain ordre ne doit être ouvert que si le prix s'est éloigné du dernier de N points. Vous pouvez demander à ne pas ouvrir plus d'un ordre sur une barre. Un tel et un tel et ainsi de suite.
Notez les conditions dont vous avez besoin, et appliquez-les à vos tests.
Au lieu de cela,si( iTime(Symbol(),PERIOD_M1,0)){Que dois-je écrire pour ouvrir un ordre sur une barre ?
La question a été posée à de nombreuses reprises et a reçu de nombreuses réponses correspondantes.En utilisant une recherche, par exemple ici
La question a été posée à de nombreuses reprises et a reçu de nombreuses réponses correspondantes.En utilisant une recherche, par exemple ici
Merci !
Bonjour !
J'ai un EA qui effectue certains calculs. Il utilise différentes opérations mathématiques, des tableaux, des boucles. Il enregistre le résultat dans un fichier. Il doit tout recommencer depuis le début après avoir effectué toutes les actions. Il a effectué tous les calculs une fois et se bloque pour la deuxième fois sans prendre aucune mesure. Pouvez-vous me dire s'il est nécessaire de mettre à zéro les variables, d'effacer les tableaux ou autre chose avant de commencer un nouveau calcul ?
Bonjour !
J'ai un EA qui effectue certains calculs. Il utilise différentes opérations mathématiques, des tableaux, des boucles. Il enregistre le résultat dans un fichier. Il doit tout recommencer depuis le début après avoir effectué toutes les actions. Il a effectué tous les calculs une fois et se bloque pour la deuxième fois sans prendre aucune mesure. Pouvez-vous me dire s'il est nécessaire de mettre à zéro les variables, d'effacer les tableaux ou autre chose avant de commencer un nouveau calcul ?