J'essaie de coder un EA basé sur ma propre stratégie, avec l'aide du code de quelques autres EA et indis. mais maintenant bloqué dans une chose.
<emoved>
Veuillez utiliser le bouton SRC pour afficher le code . . .
extern string LotsProgression="0.1;0.1;0.2;0.3 ... double lots[]; // [0]=0.1 [1]=0.1 [2]=0.2 [3]=0.3 [34]=661.1 int plen; // 35 int init(){ ... }
La chose que vous avez mentionnée est correcte. Le problème est dans le reste du code. J'obtiens deux erreurs (uniquement dans le nouveau metaeditor).
'init' - function can be declared only in the global scope and 'init' - function already defined and has body
Oui, j'ai compris et corrigé. J'obtiens maintenant une erreur dans le code de l'horizon temporel.
//--- EA PARAMETERS extern int EA_TF=240; extern bool Forced_TF=True; bool TF; if(Forced_TF != True) TF = EA_TF; //These two lines i think, have error. else TF = Period(); //New metaeditor is not accepting "TF = EA_TF;" from above line.
Si Forced_TF est true, alors l'EA doit trader et obtenir des signaux à partir de l'horizon temporel mentionné uniquement, même si le graphique actif (sur lequel je place l'EA) est ouvert dans un horizon temporel différent. Si la valeur est false, alors l'EA devrait fonctionner sur n'importe quel timeframe.
Oui, j'ai compris et corrigé. Maintenant, j'obtiens une erreur dans le code de l'horizon temporel.
Si Forced_TF est true, alors l'EA doit trader et obtenir des signaux à partir de l'horizon temporel mentionné uniquement, même si le graphique actif (sur lequel je place l'EA) est ouvert dans un horizon temporel différent. Si la valeur est false, alors l'EA devrait fonctionner sur n'importe quel timeframe.
Vous avez TF comme un bool .. . mais vous essayez de le définir comme un int... essayez ceci ....
//--- EA PARAMETERS extern int EA_TF=240; extern bool Forced_TF=True; int TF; if(!Forced_TF) TF = EA_TF; //These two lines i think, have error. else TF = Period(); //New metaeditor is not accepting "TF = EA_TF;" from above line.
@RaptorUK Je vous ai compris. et encore une fois tout est ok avec l'ancien éditeur, mais le nouvel éditeur donne toujours un avertissement, cité dans le code après la ligne d'erreur,
//+------------------------------------------------------------------+ //| 01Multi_EA.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property version "1.00" #property strict //--- input parameters input int EA_TF=60; input bool Forced_TF=True; input int MagicNumber=12345; input int FastMA_Period=5; input int FastMA_Shift=0; input int FastMA_Method=1; input int FastMA_Price=0; input int SlowMA_Period=34; input int SlowMA_Shift=0; input int SlowMA_Method=1; input int SlowMA_Price=0; input string LotsProgression="0.01;0.02;0.03;0.04;0.05;0.06;0.07;0.08;0.09;0.10;0.11;0.12;0.13;0.14;0.15;0.16;0.17;0.18;0.19;0.20"; input bool NewCycle=True; input int Limit_TP=50; input bool Use_TP=False; input int Limit_SL=50; input bool Use_SL=False; input int MaxSlippage=3; input int OrderTries=10; int TF, Plen; double TP, SL, pips2dbl, pips2point, pipValue, Slippage, Lots[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //---- if(Forced_TF != True) TF = EA_TF; else TF = Period(); int i,j,k; string ls; while (true) { j=StringFind(LotsProgression,";",i); if(j>0) { ls=StringSubstr(LotsProgression,i,j-i); // <<<<<"possible use of uninitialized variable 'i' 01Multi_EA.mq4 46 38">>>>> i=j+1; k++; ArrayResize(Lots,k); Lots[k-1]=StrToDouble(ls); } else { ls=StringSubstr(LotsProgression,i); k++; ArrayResize(Lots,k); Lots[k-1]=StrToDouble(ls); break; } } Comment("Copyright © 2004, MetaQuotes Software Corp."); if (Digits == 5 || Digits == 3) { pips2dbl = Point*10; pips2point = 10; pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10; } else { pips2dbl = Point; pips2point = 1; pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*1; } Slippage = pips2dbl*MaxSlippage; TP = pips2dbl*Limit_TP; SL = pips2dbl*Limit_SL; //---- return(INIT_SUCCEEDED); }
@WHRoeder J'ai collé le code entier.
@RaptorUK Je vous ai compris. et encore une fois tout est ok avec l'ancien éditeur, mais le nouvel éditeur donne toujours un avertissement, cité dans le code après la ligne d'erreur,
@WHRoeder J'ai collé le code entier.
Ce n'est pas une erreur, c'est un avertissement... pour se débarrasser de l'avertissement, initialisez la variable plutôt que de simplement la déclarer. Dans mql4, lorsque vous déclariez une variable, elle était également initialisée, maintenant avec mql4.5, vous devez initialiser explicitement la variable si vous voulez....
int i = 0, j, k; // i initialised to 0
pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10;N'utilisez pas tickvalue par lui-même https://www.mql5.com/en/forum/133792/page3#512466
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
J'essaie de coder un EA basé sur ma propre stratégie, avec l'aide du code de quelques autres EAs et indis. mais je suis maintenant bloqué sur une chose.
Je ne parviens pas à comprendre cette logique ou ce qu'elle représente réellement.
PS : Un ami a aimé ma stratégie et a créé cette EA. Mais j'ai perdu les deux (l'EA et le contact de cet ami codeur), alors maintenant j'essaie de tester mes connaissances de base en codage, car je veux vraiment que cette stratégie soit codée à nouveau.