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
Cher Gourou,
J'utilise un tableau à deux dimensions, disons, ZigZag[2][100]. et je veux trier par la première dimension. J'utilise la fonction suivante :
ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND) ;
mais il semble qu'elle ne trie ni par la première dimension, ni par la seconde. Quelqu'un peut-il m'aider ?
Merci beaucoupLa documentation MQL indique que ArraySort trie par la première dimension, si vous n'obtenez pas les bons résultats, postez vos entrées et sorties du tableau.
L'écriture d'une fonction quicksort simple ne prendrait pas trop de temps. Créer un nouveau tableau, stocker les résultats triés, puis faire une boucle for pour consulter ZigZag et copier la deuxième dimension. Inefficace, probablement, mais cela fait l'affaire.
Voici le code
La documentation MQL indique que ArraySort trie par la première dimension, si vous n'obtenez pas les bons résultats, postez vos entrées et sorties du tableau. Écrire une simple fonction de tri rapide ne prendrait pas trop de temps. Créer un nouveau tableau, stocker les résultats triés, puis faire une boucle for pour consulter ZigZag et copier la deuxième dimension. C'est probablement inefficace, mais cela fait l'affaire.
Merci pour votre réponse.
Je veux calculer et afficher les lignes de support et de résistance dans un graphique. L'algorithme est le suivant : trouver 100 ZigZag dans l'historique et compter le poids de chaque ZigZag. Comment calculer le poids de chaque ZigZag ? Pour chaque Zig-Zag, j'essaie de rechercher dans tout le tableau la quantité d'autres Zig-Zag dont la valeur est proche de 5 points de ce Zig-Zag, par exemple, si un certain Zig-Zag est 1.5000, alors je veux trouver tous les autres Zig-Zag dont la distance entre ces deux Zig-Zag est inférieure à 5 points, si c'est le cas, j'ajoute 1 point à ce Zig-Zag, et je fais cela pour les 100 Zig-Zag.
Quand j'ai terminé, j'essaie de trier tous ces ZigZags par la dimension du compteur, comme vous pouvez le voir dans l'indicateur. Mais j'ai beaucoup essayé en imprimant la valeur avant et après l'exécution de la fonction ArraySort(0), sans trouver de différence.
Je poste l'indicateur pour votre référence.
Merci d'avance.
Voici le code de l'indicateur :
//+------------------------------------------------------------------+
//| Risisstance and Support.mq4 |
//| Copyright ?200 |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, Nick Bilak"
// piraté dans un canal ind. par t_david au début de 2007.
#property indicator_chart_window
extern int Gap = 5 ;
extern int Depth = 24 ;
extern int Deviation=5 ;
extern int BackStep=3 ;
extern int BackStart=288 ;
int ZigN=100 ;
double ZigZag[2][100] ;
int ShowBars = 500 ;
int dist=24 ;
int init() {
retour(0) ;
}
int start() {
int k,i,j,limit,hhb,llb ;
int counted_bars=IndicatorCounted() ;
//---- dernière barre comptée sera recomptée
if(counted_bars>0) counted_bars-- ;
ShowBars=Bars-counted_bars ;
FindZigZag() ;
RésistanceSupport() ;
// for(i=0;i<10;i++)
{
// ObjectDelete("P_Line") ;
// ObjectCreate("P_Line", OBJ_HLINE,0, CurTime(),Close[0]) ;
ObjectDelete("RS0") ;
ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0]) ;
ObjectDelete("RS1") ;
ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1]) ;
ObjectDelete("RS2") ;
ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2]) ;
ObjectDelete("RS3") ;
ObjectCreate("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][3]) ;
ObjectDelete("RS4") ;
ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4]) ;
ObjectDelete("RS5") ;
ObjectCreate("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][5]) ;
ObjectDelete("RS6") ;
ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6]) ;
ObjectDelete("RS7") ;
ObjectCreate("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][7]) ;
ObjectDelete("RS8") ;
ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8]) ;
ObjectDelete("RS9") ;
ObjectCreate("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9]) ;
}
// if (ShowBars >= Bars) ShowBars = Bars ;
/*
for (i=0;i<ShowBars;i++) {
b1=0 ;
b2=0 ;
b3=0 ;
b4=0 ;
b5=0 ;
b6=0 ;
b8=0 ;
hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2) ;
llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2) ;
si (i==hhb)
b3=High+SignalGap*Point ;
si (i==llb)
b4=Low[llb]-SignalGap*Point ;
b1=Haut;//+SignalGap*Point ;
b2=Low[llb];//-SignalGap*Point ;
}
*/
return(0) ;
}
//trouve le dixième ZigZag,
void FindZigZag()
{
int i=BackStart ;
int ii=0 ;
int m=0 ;
int n=0 ;
while(ii<ZigN)
{
if(iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i)>0.1) //1=High
{
ZigZag[0]=0 ;
ZigZag[1]=iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i) ;
// Print("ZigZag : ",ZigZag[1]) ;
ii++ ;
}
i++ ;
}
}
// Trouver la résistance et le support
void ResistanceSupport()
{
int i,n ;
for(i=0;i<ZigN;i++)
{
for(n=0;n<ZigN;n++)
{
if(MathAbs(ZigZag[1]-ZigZag[1][n])<Point*Gap)
{
ZigZag[0]++ ;
}
// Print(i+":ZigNumber : "+ZigZag[0]+" ZigZag : "+ZigZag[1]) ;
}
// Print("End") ;
}
ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND) ;
for(i=0;i<ZigN;i++)
{
// Print(i+":ZigNumber : "+ZigZag[0]+" ZigZag : "+ZigZag[1]) ;
}
// Print("Fin") ;
}
Puis-je lui poser des questions sur le MQL4 ?
Bonjour de Berlin,
Je suis nouveau sur ce forum et j'ai lu le cours MQL4 de Coders` guru. Merci beaucoup pour votre enseignement ! Maintenant je veux essayer des programmes faciles et j'ai déjà trouvé Pourquoi la ligne MA ne s'affiche pas dans mon graphique principal ? Merci pour votre aide.
#property indicator_chart_window
#property indicator_color1 Red
extern int Period_MA = 21 ;
bool Fact_Up = true ;
bool Fact_Dn = true ;
int start()
{
double MA ;
MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0) ;
si (Bid > MA && Fact_Up == true)
{
Fact_Dn = true ;
Fact_Up = false ;
Alert("Le prix est au-dessus de la MA(",Period_MA,").") ;
}
if (Bid < MA && Fact_Dn == true)
{
Fact_Up = true ;
Fact_Dn = false ;
Alert("Le prix est inférieur à la MA(",Period_MA,").") ;
}
return(0) ;
}
Bonjour,
Je travaille sur une idée d'indicateur personnalisé. J'ai besoin de savoir si cela est possible dans un script :
MT4 peut-il reconnaître la bougie qui se trouve sous ma souris à tout moment ? Je veux donc dessiner une ligne horizontale à l'ouverture ou à la fermeture d'une certaine bougie (que je sélectionne en cliquant ou en passant ma souris au-dessus de celle-ci), est-ce possible ?
Je n'ai pas trouvé d'information à ce sujet.
Cela m'aiderait beaucoup, merci !
Gestionnaire d'ordres/transactions pour les EAs
Bonjour,
Quelqu'un connaît-il une bibliothèque MQ4 pour la gestion des ordres/transactions pour les EA ? Je suis principalement intéressé par les deux fonctionnalités suivantes :
1. Placement d'ordres stop virtuels : au lieu d'utiliser OrderSend(...) appliqué avec un ordre stop, vous utilisez MyOrderSend(...) avec les mêmes paramètres et le gestionnaire s'occupera de tout en gardant la trace du prix et placera l'ordre au marché lorsque le prix touchera le stop.
L'objectif principal de cette méthode est d'éliminer le fardeau inutile du STOPLEVEL, mais elle permettra également de passer des ordres "fantômes".
2. Le gestionnaire recueillera l'état et les statistiques des ordres en attente, en cours d'exécution et terminés. En utilisant ces informations, on peut mettre en œuvre des stratégies MM et des stratégies d'arrêt fantaisistes (par exemple, le nombre de fois qu'une position en direct a été dans le cours peut être utilisé pour la préservation des bénéfices ou les mécanismes d'arrêt).
J'ai cherché pendant un certain temps, donc je ne m'attends pas à ce qu'une telle bibliothèque existe dans son intégralité, mais si vous connaissez des solutions partielles et des extraits de code pertinents, ce serait formidable.
Merci,
Trendick
Gestionnaire d'ordres/transactions pour EAs
Je viens de découvrir qu'un très bon gestionnaire d'ordres a été développé dans mql5 pour permettre des positions couvertes. Voir paulsfxrandomwalk blogspot (pas encore autorisé à poster des liens).
Ce n'est pas complet, mais c'est un très beau morceau de code.
Il ne devrait pas être facile, mais toujours possible, de le traduire en mql4, car il faut passer du code c++ OOP au code mql4 extrêmement limité. Cela semble être un grand gaspillage
Donc mon appel à vos liens est toujours d'actualité...
Lignes MA sur le graphique
Bonjour de Berlin,
Je suis nouveau dans ce forum et j'ai lu le cours MQL4 de Coders` guru. Merci beaucoup pour votre enseignement ! Maintenant je veux essayer des programmes faciles et j'ai déjà trouvé Pourquoi la ligne MA ne s'affiche pas sur mon graphique principal ? Merci pour votre aide.
#property indicator_chart_window
#property indicator_color1 Red
extern int Period_MA = 21 ;
bool Fact_Up = true ;
bool Fact_Dn = true ;
int start()
{
double MA ;
MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0) ;
si (Bid > MA && Fact_Up == true)
{
Fact_Dn = true ;
Fact_Up = false ;
Alert("Le prix est au-dessus de la MA(",Period_MA,").") ;
}
if (Bid < MA && Fact_Dn == true)
{
Fact_Up = true ;
Fact_Dn = false ;
Alert("Le prix est inférieur à la MA(",Period_MA,").") ;
}
return(0) ;
}Salut Berliner,
Il semble que les routines pour dessiner les lignes MA sur le graphique sont manquantes dans votre code ci-dessus.
Faites une recherche rapide sur ce forum TSD pour trouver de nombreux bons exemples d'indicateurs MA dont vous pouvez regarder le code pour apprendre comment dessiner les lignes MA sur le graphique.
Bonne chance... et continuez à apprendre !
Robert
Problème de rafraîchissement de l'indicateur MTF
Bonjour,
J'ai besoin d'aide sur cet indicateur. C'est un indicateur MTF MACD slope, mais il a un problème de rafraîchissement, je dois changer de TF pour le corriger.
J'ai déjà essayé de changer
limit=Bars-counted_bars ; en limit=Bars-counted_bars/Period() ;
et aussi d'ajouter Refreshrates() ;
sans résultat.
Désolé, je dois télécharger le code en .mql, j'ai essayé de le télécharger en utilisant la balise php mais c'est trop long.
J'ai également téléchargé l'image sur le fil MTF
Merci avant les gars.
Bonjour à tous,
J'ai reçu de nombreux messages privés me demandant de l'aide pour certains morceaux de code.
Ici vous pouvez poster vos questions relatives à MQL4, et je ferai de mon mieux pour y répondre.Codesguru,
Je n'ai aucune connaissance en programmation. Et j'ai besoin de vous ou de n'importe qui pour m'aider en mettant l'alarme et l'alerte (comme indicateur externe) sur cet indi execute_line.
Merci d'avance.
Merci, Terry
Waddah Attar scalping
Bonjour !
J'ai trouvé un indicateur intéressant qui est orienté scalping.
Je veux le backtester mais il n'imprime aucune barre après quelques jours.
Pouvez-vous s'il vous plaît voir ce qui doit être modifié dans le code afin qu'il imprime quelques milliers de barres ? S'il y a une option pour taper un nombre dans l'éditeur méta, dites-le moi. Je n'ai rien trouvé.
Merci pour votre temps
Xander
waddah_attar_scalping.ex4
waddah_attar_scalping.mq4