Aide au codage - page 61

 
mladen:
Cet indicateur utilise la "force du serpent" (TMA centrée) pour le lissage et il ne peut pas être modifié pour ne pas recalculer et rester le même. La version "non-reproduction" (end-pointed) de la TMA centrée est une simple LWMA, mais ne vous attendez pas à avoir les mêmes résultats avec elle qu'avec la TMA centrée. Pour en savoir plus sur la TMA centrée, cliquez ici : https://www.mql5.com/en/forum/181241 Quant à la modification ou à l'amélioration de ce code, il s'agit d'un code décompilé. Je doute que quelqu'un modifie un code décompilé.

Merci beaucoup Mladen pour l'information, c'était très utile.

 

Bonjour,

J'ai téléchargé cet indicateur sur le web mais quand je l'attache, les fenêtres séparées avec 2 niveaux apparaissent mais pas les barres.

Pouvez-vous m'aider à le réparer ?

Merci pour votre aide.

oscillateur.mq4

Dossiers :
 

dasio,

C'est juste un autre indicateur de vent solaire (quelqu'un a essayé de changer quelque chose dedans).

dasio:
Bonjour,

J'ai téléchargé cet indicateur sur le web mais quand je l'attache, les fenêtres séparées avec 2 niveaux apparaissent mais pas les barres.

Pouvez-vous m'aider à le réparer ?

Merci

oscillateur.mq4
 
mladen:
dasio, C'est juste un autre indicateur de vent solaire (quelqu'un a essayé de changer quelque chose dedans).

Merci. Mais lorsque je lance le backtest, les barres apparaissent. Comment cela peut-il être possible ?

Merci

 

dasio

Vérifiez l'onglet experts et journal si une erreur y est inscrite. Sur les données de mon courtier, cela fonctionne. Je ne peux donc pas dire ce qui se passe sur les données de votre courtier (peut-être une division par zéro ou quelque chose de similaire).

dasio:
Je vous remercie. Mais lorsque je lance le backtest, les barres apparaissent. Comment cela peut-il être possible ?
 

Mladen ,

Lorsque vous écrivez un code ou que vous examinez le code de quelqu'un, comment évaluez-vous la qualité du code ? Lorsque vous écrivez un code, comment testez-vous la robustesse du code ?

 

:)

Mes deux principaux critères sont :

- la simplicité (rendre un code simple le rend plus facile à développer, à améliorer et à déboguer)

- la propreté (celui qui pense qu'il suffit de jeter un code sur une pile pour qu'il fonctionne n'a jamais regardé son propre code après un certain temps. De plus, le débogage d'un code mal rangé est une histoire en soi).

Quand ces deux conditions sont remplies, alors seulement je jette un deuxième coup d'oeil et alors seulement je le "lis", mais alors c'est une très longue histoire ce qui peut être fait pour accéder à la qualité - je suppose que le processus est beaucoup plus subjectif qu'objectif ...

nevar:
Mladen, lorsque vous écrivez un code ou que vous examinez le code de quelqu'un, comment évaluez-vous la qualité du code ? lorsque vous écrivez un code, comment testez-vous la robustesse du code ? merci.
 
drofwarc:
Salut,

J'essaie d'adapter un indicateur qui appelle iFractals et qui appelle à la place un indicateur fractal personnalisé qui a une fonction de période ajustable. L'indicateur que j'essaie d'adapter est joint. Il s'appelle "closesrelativejtozpreviousofractal".

closesrelativejtozpreviousofractal.mq4

Le code trace une flèche vers le haut si le prix casse le sommet fractal précédent et une flèche vers le bas pour l'inverse.

L'indicateur que j'essaie d'appeler avec iCustom est également joint. Il s'appelle "Fractals - adjustable".

fractal_-_adjustable.mq4

Voici ma tentative de modifier l'indicateur original pour qu'il appelle Fractals - adjustable. Le code trace avec succès des points sur les fractales hautes et basses et la période fractale est ajustable, comme je le voulais. Le problème est avec les flèches destinées à tracer les ruptures des niveaux fractals supérieurs et inférieurs précédents. Je ne parviens pas à les tracer correctement.

Toute aide à ce sujet serait grandement appréciée.

Cordialement,

drofwarc

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars > 0) counted_bars--;

int limit = Bars - counted_bars;

for(int i=limit; i>0; i--)

{

UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal

if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels

HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);

if(Close>HighLevel)

UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows

DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal

if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels

LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);

if(Close<LowLevel)

DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows

}

return(0);

}

J'ai fini par résoudre ce problème. Le problème était une confusion de tampon.

 

Code pour qu'un indicateur saute n barres entre les signaux

Bonjour à tous,

Je sais qu'il est possible de faire en sorte qu'un EA fasse une pause entre les transactions, soit en utilisant Sleep(), soit en enregistrant un timestamp et en attendant n secondes après le timestamp avant de permettre un autre signal.

Mais est-il possible de faire la même chose pour un indicateur.

Par exemple, j'aimerais pouvoir faire en sorte qu'un indicateur qui trace des flèches au croisement de deux moyennes mobiles saute n barres après un croisement avant de tracer une autre flèche. En d'autres termes, si un autre croisement se produit avant que n barres se soient écoulées, l'indicateur ignorera le croisement et ne tracera pas de flèche.

J'ai fait de nombreuses recherches pour trouver un indicateur qui fasse cela, mais je n'ai pas eu de chance.

Quelqu'un pourrait-il soit poster un indicateur qui a déjà cette fonctionnalité afin que je puisse étudier le code ? Ou peut-être me fournir un exemple de code qui fonctionne pour cette proposition afin que je puisse essayer de l'implémenter.

Merci beaucoup,

drofwarc

 

il ne peut pas s'afficher normalement, quelqu'un peut m'aider à le réparer ?

#property indicator_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 l'étiquette de la DataWindow et 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) ;

}

//+------------------------------------------------------------------+

Raison: