Convertir ce MT3 en MT4 pour moi - très facile - page 2

 

Convertissez ce MT3 en MT4 pour moi - très facile

J'envisage de passer de MT4 à MT3.

Je viens de terminer l'édition de mon tout premier conseiller expert.

Il m'a fallu environ 4 semaines pour apprendre suffisamment sur MT et MQL4 pour finalement programmer ma stratégie, mais maintenant je pense que je pourrais simplement convertir le programme en MQL2.

D'après ce que j'ai lu sur ce forum, je ne vois pas d'avantages à MT4.

Ce que j'ai lu, et appris en backtestant mon EA, c'est que le testeur de stratégie MT4 ne fonctionne pas. Pour cette seule raison, je pense qu'il est logique de passer quelques jours de plus à faire la transition afin d'obtenir un backtest précis avec MT3.

J'ai déjà téléchargé et installé MT3 et jeté un coup d'œil au dictionnaire de l'éditeur. Je constate que MT3 comporte moins de fonctionnalités que MT4, mais je ne pense pas que ce soit un problème majeur.

Une fonctionnalité de mon EA MQL4 sur laquelle je comptais beaucoup était l'OrderMagicNumber pour stocker le prix de l'ordre original en attente, qui peut changer avec le slippage lorsque l'ordre est exécuté.

Les ordres MQL2 n'ont pas de OrderMagicNumber, mais j'ai remarqué dans le dictionnaire MQL2 une fonction appelée OrderValue qui, dans sa description, indique que la fonction peut récupérer le commentaire d'un ordre (VAL_COMMENT).

Si je peux utiliser le commentaire pour stocker le prix préféré, je pense que je peux passer à MT3. Cependant, je n'ai pas pu trouver dans le dictionnaire comment définir le commentaire d'un ordre. La description de la fonction SetOrder ne mentionne pas "commentaire" comme l'un de ses paramètres.

Quelqu'un qui connaît cette fonction de MQL2 peut-il me dire comment définir le commentaire de l'ordre ?

 
BC Brett:

D'après ce que j'ai lu sur ce forum, je ne vois aucun avantage à MT4.

Ce que j'ai lu, et appris en backtestant mon EA, c'est que le testeur de stratégie MT4 ne fonctionne pas. Pour cette seule raison, je pense qu'il est logique de passer quelques jours de plus à faire la transition afin d'obtenir un backtest précis avec MT3.

Alors, où avez-vous lu que le backtester MT3 est plus fiable que le backtester MT4 ???

Je pense que vous êtes très mal informé à ce sujet !

Le backtesting MT4 peut être très fiable, mais cela dépend de la qualité des données historiques dont vous disposez et du pourcentage de qualité de votre modélisation.

Vous ne serez pas en mesure d'ajouter des "commentaires" ou d'assigner des "MagicNumbers" aux ordres envoyés dans MQL2 comme cela peut être fait dans la programmation MT4. La programmation MT4 est plus avancée que la programmation MQL2, pourquoi revenir en arrière ?

 

Vous pouvez vous renseigner sur le backtesting MT4 ici : http://www.strategybuilderfx.com/forums/showthread.php?t=15309&page=1&pp=8

(si vous ne pouvez pas accéder à la page, vous devrez vous inscrire en tant que membre - c'est gratuit)

 

D'après ce que j'ai compris ici et là, les gens qui sont un peu sérieux en matière de backtesting utilisent des logiciels tels que WealthLab, Amibroker ou MetaStocks, PAS mt3 ou mt4.

Peut-être que le backtesting mt4 peut être correct SI vous n'utilisez pas de données intrabar. Par exemple, si vous travaillez avec des barres quotidiennes, vous ne devez utiliser que les valeurs d'ouverture et de fermeture des barres quotidiennes (et même pas les valeurs hautes et basses si vous définissez des StopLoss ou des Take Profits). Rien d'autre.

La raison est que, malgré ce que leur "qualité de modélisation" pourrait dire, la seule méthode de backtesting mt4 qui utilise des données REELLES est"Open prices only".

Les méthodes "Every tick" et "Control Points" sont de beaux contes de fées. Personnellement, je n'échangerai pas d'argent sur la base de backtesting de données de contes de fées.

Je suis encore en train d'apprendre mt4, mais d'après mon expérience, je n'utiliserais pas le backtesting mt4 d'une autre manière. Je ne suis même pas sûr à 100% que la méthode que j'ai suggérée soit 100% fiable. Si je veux faire un bon backtesting, je vais me procurer un logiciel de backtesting.

A propos de mt4 vs mt3 pour le trading en direct : d'après ce que j'ai compris ici et là ;-) on ne peut pas faire confiance à mt4. Parfois, les ordres que mt4 dit ne pas avoir été exécutés, le sont en fait ! !! Ceci a été rapporté par des courtiers. Si c'est vrai, alors les courtiers qui proposent le trading en direct de mt4 ne sont pas sérieux. Ou bien, ils ont fait en sorte que les bugs de mt4 ne se produisent pas sur leur plateforme, c'est possible aussi.

D'autre part, "j'ai rassemblé ici et là" lol que le trading en direct avec mt3 est possible.

 

Convertir ce MT3 en MT4 pour moi - très facile

Bonjour, j'apprécierais si quelqu'un pouvait convertir ce code en langage MT4 pour moi - notre courtier vient de passer à MT4.

Voici le code :

/*[[

Name := TTM Stoch

Author := Scott Black

Link := http://www.tradethemajors.com

Separate Window := yes

First Color := Cyan

First Draw Type := Line

Use Second Data := yes

second Color := Magenta

second Draw Type := Line

Minimum Chart Limits := 0.000000

Maximum Chart Limits := 100.000000

]]*/

Inputs : Slw(8),Pds(13),Slwsignal(9);

Variables : AA(0),bb(0),aa1(0),cnt1(0);

Variables : shift(0), cnt(0), loopbegin(0),loopbegin2(0),loopbegin3(0), first(True), prevbars(0);

Variables : sum(0), smconst(0),smconst1(0), prev(0),prev1(0),prev2(0),prev3(0), weight(0), linear(0);

Variables : MAValue(0),MAValue2(0),mavalue3(0), MAstring("");

Variables : MyHigh(0),MyLow(0),counter(0),Price(0),Price1(0);

SetLoopCount(0);

smconst = 2 / (1+SLW);

smconst1 = 2 / (1+slwsignal);

loopbegin = loopbegin+1;

For shift = 2000 Downto 0 Begin

prev = GetIndexValue2(shift+1);

AA =100* ((Close[shift] - Low[Lowest(MODE_LOW,shift+pds,Pds)]) / (High - low[Lowest(MODE_LOW,shift+pds,Pds)]));

MAValue2 = smconst * (aa-prev) + prev;

SetIndexValue2(shift,MAValue2);

loopbegin = loopbegin-1;

End;

loopbegin2 = loopbegin2+1;

For shift = 2000-pds downto 0 Begin

MyHigh = -999999;

MyLow = 99999999;

For counter = shift to pds + shift Begin

PRICE= GetIndexValue2(counter);

If Price > MyHigh Then

MyHigh = Price;

If pds <= 0 Then

MyHigh = Price;

If Price < MyLow Then

MyLow = Price;

If pds <= 0 Then

MyLow = Price;

end;

prev1 = GetIndexValue(shift+1);

aa1=GetIndexValue2(shift);

bb=100*(aa1-mylow)/(myhigh-mylow);

MAValue = smconst * (bb-prev1) + prev1;

SetIndexValue(shift,mavalue);

loopbegin2 = loopbegin2-1;

End;

loopbegin3 = loopbegin3+1;

For shift = 2000 downto 0 Begin

prev2=GetIndexValue2(shift+1);

prev3=GetIndexValue(shift);

MAValue3= smconst1 * (prev3-prev2) +Prev2;

SetIndexValue2(shift,mavalue3);

loopbegin3 = loopbegin3-1;

end;

/*[[

Merci beaucoup !

 
scott TTM:
Bonjour, j'apprécierais que quelqu'un puisse convertir ce code en langage MT4 pour moi - notre courtier vient de passer à MT4.

Voici le code :

/*[[

Name := TTM Stoch

Author := Scott Black

Link := http://www.tradethemajors.com

Separate Window := yes

First Color := Cyan

First Draw Type := Line

Use Second Data := yes

second Color := Magenta

second Draw Type := Line

Minimum Chart Limits := 0.000000

Maximum Chart Limits := 100.000000

]]*/

Inputs : Slw(8),Pds(13),Slwsignal(9);

Variables : AA(0),bb(0),aa1(0),cnt1(0);

Variables : shift(0), cnt(0), loopbegin(0),loopbegin2(0),loopbegin3(0), first(True), prevbars(0);

Variables : sum(0), smconst(0),smconst1(0), prev(0),prev1(0),prev2(0),prev3(0), weight(0), linear(0);

Variables : MAValue(0),MAValue2(0),mavalue3(0), MAstring("");

Variables : MyHigh(0),MyLow(0),counter(0),Price(0),Price1(0);

SetLoopCount(0);

smconst = 2 / (1+SLW);

smconst1 = 2 / (1+slwsignal);

loopbegin = loopbegin+1;

For shift = 2000 Downto 0 Begin

prev = GetIndexValue2(shift+1);

AA =100* ((Close[shift] - Low[Lowest(MODE_LOW,shift+pds,Pds)]) / (High - low[Lowest(MODE_LOW,shift+pds,Pds)]));

MAValue2 = smconst * (aa-prev) + prev;

SetIndexValue2(shift,MAValue2);

loopbegin = loopbegin-1;

End;

loopbegin2 = loopbegin2+1;

For shift = 2000-pds downto 0 Begin

MyHigh = -999999;

MyLow = 99999999;

For counter = shift to pds + shift Begin

PRICE= GetIndexValue2(counter);

If Price > MyHigh Then

MyHigh = Price;

If pds <= 0 Then

MyHigh = Price;

If Price < MyLow Then

MyLow = Price;

If pds <= 0 Then

MyLow = Price;

end;

prev1 = GetIndexValue(shift+1);

aa1=GetIndexValue2(shift);

bb=100*(aa1-mylow)/(myhigh-mylow);

MAValue = smconst * (bb-prev1) + prev1;

SetIndexValue(shift,mavalue);

loopbegin2 = loopbegin2-1;

End;

loopbegin3 = loopbegin3+1;

For shift = 2000 downto 0 Begin

prev2=GetIndexValue2(shift+1);

prev3=GetIndexValue(shift);

MAValue3= smconst1 * (prev3-prev2) +Prev2;

SetIndexValue2(shift,mavalue3);

loopbegin3 = loopbegin3-1;

end;

/*[[

Merci beaucoup !

Salut Scott...

Essayez ceci....

Dossiers :
ttm_stoch.mq4  5 kb
 

Hellkas,

J'ai bien peur que ça n'ait pas marché. Allez sur www.compoundfx.com/mt3stoch.jpg pour voir comment cela devrait se présenter sur le graphique MT3 - j'ai essayé de télécharger ceci mais cela n'a pas fonctionné.

Merci pour vos efforts, peut-être cela vous aidera-t-il ?

Lorsque je le trace dans MT4, je ne vois qu'une ligne magenta et non cyan - bien que je voie que l'entrée est là.

scott

 

Bonjour,

Tout d'abord hellkas Je vous remercie de garder l'entête de mon fichier après avoir converti l'indicateur mql avec mon outil Mql2Mq4 ! !!

Ensuite, il est normal que l'indicateur converti ne fonctionne pas correctement, si vous regardez dans Metatrade 4 dans l'Expert message log TabSheet (Panel) vous verrez "Zero Devide exception" comme sur cette image. Dans le script de l'indicateur vous utilisez l'opérateur de division, avec parfois NULL:-( c'est la raison de cette erreur, et je répète, dans Metatrade 3, il n'y avait pas d'exceptions générées pour cela, néanmoins dans Metatrade 4.

Je mets le converti qui fonctionne comme sur MT 3, et vous pouvez voir quel type de changement j'ai fait.

Bye bye

Dossiers :
exception.jpg  52 kb
ttmstoch.mq4  5 kb
 

yousky,

Merci beaucoup, c'est parfait ! Je l'apprécie.

-SB

 

yousky,

Ok, après un examen plus approfondi, ce n'est pas encore tout à fait ça. Il me donne encore de fausses lectures sur MT4, c'est-à-dire que les lignes ne se croisent pas là où elles devraient être. J'ai utilisé le code que vous avez mis ici. Des idées ?

SB

Raison: