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
...
Vous devez faire 2 chosesAprès cela, vous obtiendrez quelque chose comme ceci :
Have a nice weekend
#property indicateur_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_maximum 100
#property indicator_level1 70
#property indicator_level2 50
#property indicator_level3 30
#property indicator_minimum 0
//---- paramètres d'entrée
extern int rsiperiod = 14 ;
extern int Shortperiod = 5 ;
extern int Middleperiod = 8 ;
extern int Longperiod = 13 ;
extern int mamode = 2 ;
//---- tampons
double RSI[] ;
double ShortRSI[] ;
double MiddleRSI[] ;
double LongRSI[] ;
double SMRSI[] ;
int période ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int init()
{
//---- indicateurs
IndicatorBuffers(5) ;
SetIndexBuffer(0,SMRSI) ;
SetIndexBuffer(1,RSI) ;
SetIndexBuffer(2,ShortRSI) ;
SetIndexBuffer(3,MiddleRSI) ;
SetIndexBuffer(4,LongRSI) ;
//---- nom pour la DataWindow et l'étiquette de la sous-fenêtre de l'indicateur
IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod +", "+mamode+")") ;
SetIndexDrawBegin(0,rsiperiod+Longperiod) ;
period=Shortperiod+Middleperiod+Longperiod ;
retour(0) ;
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted() ;
int i,limit ;
if(counted_bars<0) return(-1) ;
if(counted_bars>0) counted_bars-- ;
limit = Bars-counted_bars ;
for( i=limit ; i>=0 ; i--) RSI=iRSI(NULL,0,rsiperiod,0,i) ;
for( i=limit ; i>=0 ; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i) ;
for( i=limit ; i>=0 ; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i) ;
for( i=limit ; i>=0 ; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i) ;
for( i=limit ; i>=0 ; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}
return(0) ;
}
//+------------------------------------------------------------------+n_n
Vous devez faire 2 choses .
Après cela, vous obtiendrez quelque chose comme ceci :
Passez un bon week-endMerci !
Bonjour,
J'ai téléchargé l'indicateur joint sur le site de mql4. J'essaie de faire un EA basé sur cet indicateur mais quand je démarre le backtest après quelques secondes les plateformes se plantent et je pense que c'est un défaut de l'indicateur car il utilise beaucoup de cpu.
Donc je demande s'il est possible d'alléger le code pour résoudre ce problème.
Merci pour votre disponibilité.
cronex_taichi.mq4
dasio
Je l'ai testé avec ce snippet, et cela fonctionne bien. Je ne connais pas les paramètres que vous avez utilisés, donc c'est juste l'appel d'un indicateur par défaut, mais il n'y a aucun problème de cette façon.
{
return(0);
}
int start()
{
Comment(iCustom(NULL,0,"Cronex Taichi",0,0));
return(0);
}
Bonjour,
J'ai téléchargé l'indicateur joint sur le site de mql4. J'essaie de faire un EA basé sur cet indicateur mais quand je démarre le backtest après quelques secondes les plateformes se plantent et je pense que c'est un défaut de l'indicateur car il utilise beaucoup de cpu.
Donc je demande s'il est possible d'alléger le code pour résoudre ce problème.
Merci pour votre disponibilité.
cronex_taichi.mq4dasio
Je l'ai testé avec ce snippet, et cela fonctionne bien. Je ne connais pas les paramètres que vous avez utilisés, donc c'est juste l'appel d'un indicateur par défaut, mais il n'y a aucun problème de cette façon.
{
return(0);
}
int start()
{
Comment(iCustom(NULL,0,"Cronex Taichi",0,0));
return(0);
}
Merci pour votre réponse,
Ce que je vois, c'est que dans l'historique, l'indicateur a été chargé à plusieurs reprises. J'ai donc déplacé le code d'icustom uniquement dans un événement de nouvelle bougie, mais le problème persiste.
Je ne sais pas pourquoi.
Cependant merci pour votre disponibilité.
Salut,
J'ai trouvé le problème. Maintenant tout est ok.
J'ai un autre problème avec un autre ea.
J'ai ces deux codes et la fonction Lotti() devrait me retourner le nombre de lot pour un ordre.
Quand je le compile, je reçois Posizioni Internal Error. Quel est le problème ? Merci ;
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[/PHP]
[PHP]int Lotti(){
int Lotti;
int Posizioni=OTBM(MagicNumber);
switch (Posizioni)
{
case 0 : Lotti=0.1; break;
case 1 : Lotti=0.2; break;
case 2 : Lotti=0.4; break;
case 3 : Lotti=0.8; break;
case 4 : Lotti=1.6; break;
case 5 : Lotti=3.2; break;
case 6 : Lotti=6.4; break;
case 7 : Lotti=12.8; break;
}
return(Lotti);
}Essayez de remplacer OTBM() par ceci :
{
int intCount=0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
}
}
return(intCount);
}
[/PHP]
Hi,
i found the problem. Now all its ok.
I have another problem with another ea.
I have this two code and the function Lotti() would be return me the number of lot for an ordersend.
When i compile it i receive Posizioni Internal Error. What's wrong? Thank you;
{
int intCount=0;
int intPOS=0;
bool boolTerm=false;
while(boolTerm==false)
{
if(OrderSelect(intPOS,SELECT_BY_POS))
{
if(OrderMagicNumber()==intMagic) intCount++;
intPOS++;
}
else
boolTerm=true;
}
return(intCount);
}
[PHP]int Lotti(){
int Lotti;
int Posizioni=OTBM(MagicNumber);
switch (Posizioni)
{
case 0 : Lotti=0.1; break;
case 1 : Lotti=0.2; break;
case 2 : Lotti=0.4; break;
case 3 : Lotti=0.8; break;
case 4 : Lotti=1.6; break;
case 5 : Lotti=3.2; break;
case 6 : Lotti=6.4; break;
case 7 : Lotti=12.8; break;
}
return(Lotti);
}Salut, -.-"
Je ne trouve pas la paix avec ces codes eheheh.
J'ai un problème avec une fonction qui doit me donner le profit de tous les ordres ouverts mais je pense que ça ne marche pas car la condition n'a jamais été respectée. Ci-dessous le code :
if(Profit()>=0.....[/PHP]
[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}dasio
Essayez comme ceci :
if(Profit()>=0.....[/PHP]
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total-1; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}[/PHP]
Hi, -.-"
I do not find peace with these codes eheheh.
I have a problem with a function that have to result me the profit of all openorder but i think it's not work because the condition never been respected. Below the code:
[PHP].....
if(Profit()>=0.....[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}dasio
Essayez comme ceci :
if(Profit()>=0.....[/PHP]
[PHP]double Profit()
{
int total=OrdersTotal();
double profit=0;
for(int i=0; i<total-1; i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
profit+=OrderProfit();
}
return(profit);
}De cette façon, je vérifie les ordres qui ne sont pas ouverts avec le numéro magique spécifié, n'est-ce pas ? Je dois vérifier l'ordre avec un symbole et un numéro magique spécifiques. Je ne sais pas si c'est important, mais j'ai trouvé l'erreur dans le testeur de stratégie.