Aide au codage - page 95

 

Chers tous, c'est mon premier pas dans un post sur le forex, alors s'il vous plaît essayez d'être gentil si je dis quelque chose de trop faux ....

Ce site est l'un des meilleurs endroits pour apprendre le forex et je le lis depuis quelques années. Je voudrais attirer l'attention sur ce lien : codebase.mql4.com/5900

L'ea est RUBBERBANDS_2 EA par l'auteur : StJojo (2009.08.17 11:30). La façon dont il fonctionne (après un travail d'optimisation minimum) sur n'importe quelle paire de devises est assez intéressante. En fait, il pourrait être utilisé comme une (permettez-moi l'expression..) stratégie semi-automatique automatisée. En fait, comme il fonctionne très bien sur le marché latéral, j'ai découvert qu'il pourrait être activé dans les intervalles de nouvelles lorsque la probabilité de marché latéral sont plus élevés. Parce que je pense que le code est rendu opensource par l'auteur, je voudrais, si quelqu'un aime l'idée, ajouter la variable pour le faire fonctionner à partir d'une certaine heure/minutes pour "quiesce" à un certain temps/heure/minutes (i.e. :pour quiesce cet EA quand la session actuelle se termine). Cela faciliterait beaucoup plus la "préprogrammation" du temps de travail de l'ea pour le jour suivant, relativement aux prochaines nouvelles du jour suivant. J'ai joint le fichier comme dans le lien ci-dessus.

J'ai également joint l'indicateur "forex_ news_market_clock" qui est celui que j'utilise pour lire les nouvelles sur le graphique.

Merci à tous pour le travail effectué sur ce site (et sur tout le net... bien sûr). J'espère que quelqu'un pourra m'aider, merci beaucoup.

 
vitoingletto:
Chers tous, c'est mon premier pas dans un post sur le forex, donc s'il vous plaît essayez d'être gentil si je dis quelque chose de trop faux....

Ce site est l'un des meilleurs endroits pour apprendre le forex et je le lis depuis quelques années. Je voudrais attirer l'attention sur ce lien : codebase.mql4.com/5900

L'ea est RUBBERBANDS_2 EA par l'auteur : StJojo (2009.08.17 11:30). La façon dont il fonctionne (après un travail d'optimisation minimum) sur n'importe quelle paire de devises est assez intéressante. En fait, il pourrait être utilisé comme une (permettez-moi l'expression..) stratégie semi-automatique automatisée. En fait, comme il fonctionne très bien sur le marché latéral, j'ai découvert qu'il pourrait être activé dans les intervalles de nouvelles lorsque la probabilité de marché latéral sont plus élevés. Parce que je pense que le code est rendu opensource par l'auteur, je voudrais, si quelqu'un aime l'idée, ajouter la variable pour le faire fonctionner à partir d'une certaine heure/minutes pour "quiesce" à un certain temps/heure/minutes (i.e. :pour quiesce cet EA quand la session actuelle se termine). Cela faciliterait beaucoup plus la "préprogrammation" du temps de travail de l'ea pour le jour suivant, relativement aux prochaines nouvelles du jour suivant. J'ai joint le fichier comme dans le lien ci-dessus.

J'ai également joint l'indicateur "forex_ news_market_clock" qui est celui que j'utilise pour lire les nouvelles sur le graphique.

Merci à tous pour le travail effectué sur ce site (et partout sur le net... bien sûr). J'espère que quelqu'un pourra m'aider, merci beaucoup.

Bonjour Vitoingletto,

Merci pour l'EA, j'ai ajouté un filtre temporel et une fonction de clôture le vendredi et aussi un nombre magique pour aider l'EA à différencier quelque peu les ordres.

Dossiers :
 

bonjour ...

e façon se demande si vous pouvez mettre dans le code la fonction qui exporte les données directement tous à la fois (m1, m5, m30, m15, h1, h4, d1 ...) évidemment dans des fichiers séparés. Actuellement, le et vous devez le démarrer tant de fois ... (pour chaque tmeframe).

J'aurais un gain de temps substantiel pour exporter les données.

Vous pouvez insérer cette fonction dans votre code ? une idée mai être similaire à ce script ci-joint(Period_converter_auto - MQL4 Code Base), qui transforme les données tout en un volta.Si peut jouer dans l'expert ?

merci

 
dr.feelgood1989:
bonjour ...

façons se demander si vous pouvez mettre dans le code de la fonction qui exporte les données directement tous à la fois (m1, m5, m30, m15, h1, h4, d1 ...) évidemment dans des fichiers séparés. Actuellement, le et vous devez le démarrer tant de fois ... (pour chaque tmeframe).

J'aurais un gain de temps substantiel pour exporter les données.

Vous pouvez insérer cette fonction dans votre code ? une idée peut être similaire à ce script ci-joint(Period_converter_auto - MQL4 Code Base), qui transforme les données tout en un volta.Si peut jouer dans l'expert ?

merci

dr.feelgood1989

Utilisez celui-ci et attachez-le simplement à toutes les trames temporelles que vous souhaitez voir exportées. Il créera un fichier nommé symbol+"_"+time frame pour chaque time frame que vous regardez. Vous pouvez l'utiliser comme modèle pour vos exportations d'indicateurs personnalisés.

Dossiers :
 

merci pour la réponse ... Mladen

En fait, c'était déjà le cas. Le script (exemple de référence) que j'ai posté fait le travail une fois pour toutes les périodes (conversion).

l'expert de son modifié "réécrire" un seul délai (pour distinguer le fichier) quand il est utilisé pour le temps unique.

Je me demandais si le démarrage d'un seul expert est réécrit tous les autres timeframes (exemple:ea1m a commencé sur le testeur et aussi les fichiers sont écrits dans d'autres timeframes m5, m15 ...)

merci : )

 
mladen:
pgtips,

A quoi ressemble votre boucle principale (ou postez un code où vous essayez de faire cela)

PS : Vous devez changer le dernier paramètre de iOpen() et iClose() pour indiquer le jour correct pour une barre choisie.

Bonjour Mladen,

Je suis resté bloqué avec ce problème et j'ai cherché une autre façon de faire la même chose.

J'ai trouvé cet indicateur ci-joint après plusieurs jours de recherche qui est proche de ce dont j'ai besoin mais il a été rendu différent.

Il affiche la bougie actuelle (du jour) mais il n'y a pas de variable iopen/close à sélectionner pour afficher le jour précédent, c'est-à-dire le décalage -1.

Pourriez-vous me dire comment je pourrais faire en sorte que cela ait un décalage pour revenir x jours en arrière ? ? Ainsi, si la barre du jour précédent était rouge, la boîte actuelle est rouge, si elle est verte, la boîte actuelle est verte.

Je peux superposer l'indicateur de boîte de rupture sur celui-ci mais ce serait vraiment bien si celui-ci pouvait être limité dans le temps.

Je comprends que vous êtes très occupé et que vous donnez votre temps gratuitement, mais si vous pouviez m'aider, je vous en serais très reconnaissant.

Merci beaucoup.

PG

Dossiers :
 

Bonjour,

Je suis toujours en train de travailler sur ce problème.

J'ai réussi à utiliser l'indicateur de pivot pour obtenir un changement de couleur par jour basé sur la clôture du jour précédent, c'est-à-dire le jour précédent, le jour vert ou le jour rouge.

J'ai maintenant besoin de faire un rectangle et de le remplir en fonction de la période que je veux voir affichée, de 11h00 à 17h00, le haut et le bas étant ce qu'il s'avère être pendant cette période.

J'ai défini //

ObjectCreate("Rectangle", OBJ_RECTANGLE, 0, Time[periodBegin], Low[1], Time[periodEnd], High[1]) ;

mais j'ai obtenu une erreur, rien ne s'affiche du tout.

extern int periodBegin = 11 ; //11:00 am

extern int periodEnd = 17 ; // 17:00 pm

J'ai défini extern bool Plot_rectangles=true ; donc il 'devrait' tracer quelque chose pour chaque jour.

Qu'est-ce qui m'échappe ici ?

Je vous remercie.

PG

Dossiers :
 

Je pense que je connais la réponse à ma question, mais ... je veux toujours confirmer

a. l'indicateur est un cadre temporel supérieur

b. est le cadre temporel actuel.

Je voudrais par exemple utiliser a. comme tendance b. comme entrée.

 
mtuppers:
Je pense que je connais la réponse à ma question, mais... je veux toujours une confirmation.

a. l'indicateur est un cadre temporel supérieur

b. est le cadre temporel actuel.

comme j'aimerais utiliser une tendance basée sur b. comme entrée, est-ce que cela peut être fait ?

Oui, c'est possible.

Il suffit d'appeler a avec un cadre temporel supérieur dans le paramètre timeFrame et c'est tout. Pour éviter les pièges du backtesting de l'EA multi time frame, utilisez une barre fermée sur l'indicateur multi time frame (indice 1 au lieu de 0), sinon vous obtiendrez un résultat irréaliste en raison de la façon dont metatrader appelle d'autres time frames que le time frame actuel dans le backtesting.

 

Bonjour,

J'espère que vous pourrez m'aider avec ceci. Je veux que les points (flèches ; aqua&yellow) de l'indice dans la fenêtre deux s'affichent comme des points (flèches) sur la clôture (ou le haut pour le signal d'achat/le bas pour le signal de vente) dans la fenêtre un (la fenêtre principale du graphique). J'ai essayé pendant des heures, mais je ne serai jamais un codeur ;-)

#property indicator_separate_window

#property indicator_minimum -100.0

#property indicator_maximum 100.0

#property indicator_levelcolor SlateGray

#property indicator_levelstyle 1

#property indicator_buffers 8

#property indicator_color1 Lime

#property indicator_color2 Red

#property indicator_color3 Black

#property indicator_color4 Black

#property indicateur_color5 Noir

#property indicateur_color6 Noir

#property indicator_color7 Aqua

#property indicator_color8 Yellow

#property indicator_width1 1

#property indicateur_level1 60.0

#property indicator_width2 1

#property indicator_level2 50.0

#property indicator_level3 -50.0

#property indicateur_niveau4 -60.0

extern int WavePeriod = 10 ;

extern int AvgPeriod = 21 ;

extern bool SoundAlert = FALSE ;

extern bool EmailAlert = FALSE ;

double g_ibuf_92[] ;

double g_ibuf_96[] ;

double g_ibuf_100[] ;

double g_ibuf_104[] ;

double g_ibuf_108[] ;

double g_ibuf_112[] ;

double g_ibuf_116[] ;

double g_ibuf_120[] ;

int gi_124 = -50 ;

int gi_128 = 50 ;

int gi_132 ;

int init() {

IndicateurShortName("TrendWave") ;

SetIndexBuffer(0, g_ibuf_100) ;

SetIndexLabel(0, "ESA") ;

SetIndexStyle(0, DRAW_NONE) ;

SetIndexDrawBegin(0, 0) ;

SetIndexBuffer(1, g_ibuf_112) ;

SetIndexLabel(1, "Valeurs DD") ;

SetIndexStyle(1, DRAW_NONE) ;

SetIndexDrawBegin(1, 0) ;

SetIndexBuffer(2, g_ibuf_104) ;

SetIndexLabel(2, "DD") ;

SetIndexStyle(2, DRAW_NONE) ;

SetIndexDrawBegin(2, 0) ;

SetIndexBuffer(3, g_ibuf_108) ;

SetIndexLabel(3, "CI") ;

SetIndexStyle(3, DRAW_NONE) ;

SetIndexDrawBegin(3, 0) ;

SetIndexBuffer(4, g_ibuf_92) ;

SetIndexLabel(4, "Bull") ;

SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Lime) ;

SetIndexDrawBegin(4, 0) ;

SetIndexBuffer(5, g_ibuf_96) ;

SetIndexLabel(5, "Bear") ;

SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, Red) ;

SetIndexDrawBegin(5, 0) ;

SetIndexBuffer(6, g_ibuf_116) ;

SetIndexLabel(6, "Buy Dot") ;

SetIndexStyle(6, DRAW_ARROW, STYLE_SOLID, 2, Aqua) ;

SetIndexArrow(6, 108) ;

SetIndexDrawBegin(6, 0) ;

SetIndexBuffer(7, g_ibuf_120) ;

SetIndexLabel(7, "Sell Dot") ;

SetIndexStyle(7, DRAW_ARROW, STYLE_SOLID, 2, Yellow) ;

SetIndexArrow(7, 108) ;

SetIndexDrawBegin(7, 0) ;

ArrayResize(g_ibuf_100, Bars) ;

ArrayResize(g_ibuf_112, Bars) ;

ArrayResize(g_ibuf_104, Bars) ;

ArrayResize(g_ibuf_108, Barres) ;

ArrayResize(g_ibuf_92, Barres) ;

ArrayResize(g_ibuf_96, Bars) ;

ArrayResize(g_ibuf_116, Barres) ;

ArrayResize(g_ibuf_120, Bars) ;

retour (0) ;

}

int start() {

double l_ima_on_arr_0 ;

int li_12 = IndicatorCounted() ;

si (li_12 < 0) retour (-1) ;

si (li_12 > 0) li_12-- ;

int li_8 = Bars - li_12 ;

for (int li_16 = li_8 ; li_16 > 0 ; li_16--) {

g_ibuf_100[li_16] = iMA(NULL, 0, WavePeriod, 0, MODE_EMA, PRICE_TYPICAL, li_16) ;

ArraySetAsSeries(g_ibuf_100, TRUE) ;

}

for (li_16 = li_8 ; li_16 > 0 ; li_16--) {

g_ibuf_112[li_16] = MathAbs((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3,0 - g_ibuf_100[li_16]) ;

ArraySetAsSeries(g_ibuf_112, TRUE) ;

}

for (li_16 = li_8 ; li_16 > 0 ; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_112, 0, WavePeriod, 0, MODE_EMA, li_16) ;

g_ibuf_104[li_16] = l_ima_on_arr_0 ;

ArraySetAsSeries(g_ibuf_104, TRUE) ;

}

for (li_16 = li_8 ; li_16 > 0 ; li_16--) {

if (g_ibuf_104[li_16] > 0.0) g_ibuf_108[li_16] = ((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3.0 - g_ibuf_100[li_16]) / (0,015 * g_ibuf_104[li_16]) ;

else g_ibuf_108[li_16] = 0 ;

ArraySetAsSeries(g_ibuf_108, TRUE) ;

}

for (li_16 = li_8 ; li_16 > 0 ; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_108, 0, AvgPeriod, 0, MODE_EMA, li_16) ;

g_ibuf_92[li_16] = l_ima_on_arr_0 ;

ArraySetAsSeries(g_ibuf_92, TRUE) ;

}

for (li_16 = li_8 ; li_16 > 0 ; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_92, 0, 4, 0, MODE_SMA, li_16) ;

g_ibuf_96[li_16] = l_ima_on_arr_0 ;

ArraySetAsSeries(g_ibuf_96, TRUE) ;

}

for (li_16 = li_8 ; li_16 > 0 ; li_16--) {

if (g_ibuf_92[li_16] >= g_ibuf_96[li_16] && g_ibuf_92[li_16 + 1] <= g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] < gi_124) {

g_ibuf_116[li_16] = g_ibuf_92[li_16] ;

SendAlert("acheter") ;

} else g_ibuf_116[li_16] = -1000 ;

if (g_ibuf_92[li_16] = g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] > gi_128) {

g_ibuf_120[li_16] = g_ibuf_96[li_16] ;

SendAlert("vendre") ;

} else g_ibuf_120[li_16] = -1000 ;

}

return (0) ;

}

void SendAlert(string as_0) {

if (Time[0] != gi_132) {

if (SoundAlert) {

if (as_0 == "buy") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " buy") ;

si (as_0 == "sell") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " sell") ;

}

if (EmailAlert) {

if (as_0 == "buy") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " buy") ;

si (as_0 == "sell") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " sell") ;

}

gi_132 = Time[0] ;

}

}