Demandez ! - page 163

 
jizhong68:
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 beaucoup

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.

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

beckham.is.619:
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

ssh95:
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.

Dossiers :
 
codersguru:
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

Dossiers :
 

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

Raison: