Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 489

 

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%") ;

 
Georgy Sled:

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

   ObjectDelete("FiboLevels"); //------Новый уровень
   WindowRedraw();

   if (iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
   }
   else
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
   }

il peut aussi être plus court ... voir mon dossier

Dossiers :
Proba.mq4  3 kb
 
Artyom Trishkin:

Veuillez insérer le code correctement.


C'est encore plus clair :


Merci d'avoir expliqué comment coller le code correctement)))) aidé) S'il vous plaît vérifier et m'aider à écrire le code correctement, je serai beaucoup obligé ! (Aujourd'hui, j'ai une TV Samsung bouillie que j'ai appris à désinstaller, mais je ne peux pas faire face à ce code (((((.
 
void fOrderOpen() {...
    if( iTime(Symbol(),PERIOD_M1,0)) {
     if((fMarketOrders(OP_BUY))) { ....{
int irvbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,12345,0,0); 

Les gars, pourquoi mes ordres s'ouvrent-ils à chaque tick? Pouvez-vous me dire comment me concentrer sur la barre ?

 
Rustam Bikbulatov:

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.

 
Konstantin Nikitin:

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 ?

 
Rustam Bikbulatov: Les gars, pourquoi mes ordres s'ouvrent-ils à chaque tick? Des conseils pour se concentrer sur la 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

 
STARIJ:

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 ?

 
Kot:

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 ?

Ils vont certainement aider. Et il n'y a pas de tels spécialistes dans ce fil.