Indicateurs d'élite :) - page 157

 

Cela fonctionnera

Vous pourriez utiliser quelque chose comme if (previousNumberOfBars != Bars) ou if (volume[0]==1) mais l'utilisation du volume est sensible (laisse beaucoup plus d'espace pour l'erreur, et presque sûr que lors de la première exécution il ne calculera pas toutes les barres nécessaires, puisque le volume va déjà être > 1)

Ce que je recommande dans tous les cas, c'est d'inverser les deux premières lignes de la boucle, pour obtenir quelque chose comme ceci :

if(lastbar != Time[0])

{

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

{[/php]You need to check that condition only once

regards

mladen

Snowski:
Quick coding question:

If I want an indicator to start its calculation on the open of a new bar, how can I code this?

I now have this - just an example, but I doubt it's correct:

[php]

datetime lastbar;

double buffer_a[];

double buffer_b[];

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

//| Custom indicator iteration function |

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

int start()

{

int bars_counted = IndicatorCounted();

if(bars_counted < 0)

{

return(1);

}

bars_counted--;

int limit = Bars - bars_counted;

if(limit>BarsToLoad && BarsToLoad>0)

{

limit = BarsToLoad;

}

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

{

if(lastbar != Time[0])

{

buffer_a = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i);

buffer_b = iMA(Symbol(), 0, FastEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);

//LONG ARROW

if(buffer_a > buffer_b)

{

ExtMapBuffer1 = Open - distance;

}

//SHORT ARROW

if(buffer_a < buffer_b)

{

ExtMapBuffer2 = Open + distance;

}

lastbar = Time[0];

}

}

//----

return(0);

}

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

Oui, bien sûr, changez les boucles... c'est beaucoup mieux.

Quelle méthode vous semble la plus précise, l'option if(previousNumberOfBars != Bars)orif(lastbar != Time[0])... ?

Personnellement, je ne vois pas de différence évidente à première vue, mais je peux me tromper. Je suis d'accord sur l'option Volume, qui n'est pas bonne pour l'indicateur, mais qui pourrait fonctionner correctement dans l'EA.

Merci beaucoup mladen, une grande aide pour mes compétences plutôt médiocres en codage indie...

Merci,

San.

 
chris1010:
Mladen ou M. Tools serait-il possible d'ajouter une alerte par pop up et par email à cet indicateur, s'il vous plaît ? Il me semble que lorsque toutes les lignes de la fenêtre de l'indicateur sont ensemble au même moment, en haut ou en bas de la fenêtre de l'indicateur, un bon point d'achat ou de vente est identifié. Merci pour toute aide. Chris

Voilà Chris, puisque le marché est maintenant fermé, je n'ai pas pu tester l'alerte en direct, mais j'ai réussi à faire apparaître l'alerte sur un graphique d'une minute, donc j'espère que ça devrait être bon. L'alerte devrait se déclencher lorsque wso et wro sont tous les deux à des niveaux d'achat ou de vente sélectionnables par l'utilisateur. Et je suis d'accord avec vous, cet indicateur lorsque les deux lignes sont au maximum ou au minimum semble être de bonnes opportunités de vente et d'achat.

Dossiers :
 

M. Tools. Merci. C'est cool d'avoir de grands programmeurs qui m'aident.

 

San

Franchement, je ne sais pas lequel recommander.

Bars est une sorte de variable interne de Metatrader pour le graphique actuel et Time[0] est un élément d'une structure de tableau décrivant chaque barre qu'il a dans son historique pour le graphique actuel. Je pense que Bars est d'abord mis à jour pour refléter la nouvelle taille du tableau, et qu'ensuite la structure nouvellement ajoutée au tableau est mise à jour avec les données (temps, "volume" et prix). Mais s'ils le font d'une "manière séquentielle" (ne permettant pas l'exécution d'autres threads jusqu'à ce que l'exécution du code soit terminée - et je suis presque sûr à 100% que c'est la façon dont c'est fait - pour autant que j'ai compris, il y a toujours un thread séparé qui télécharge les données et gère toutes les choses dont nous parlons, et nous avons tous remarqué une "pause" dans l'exécution lorsque nous ouvrons un nouveau graphique et que plus de données sont téléchargées et ajoutées aux tableaux et variables et aux graphiques que nous utilisons ensuite à partir du code metatrader) alors les deux variables vont être visibles pour un utilisateur en même temps ... Le temps d'accès doit être le même ... Donc : tous les mêmes

Salutations

mladen

Snowski:
Oui, bien sûr, changez les boucles... c'est beaucoup mieux.

Quelle méthode vous semble la plus précise, l'option if(previousNumberOfBars != Bars)orif(lastbar != Time[0])... ?

Personnellement, je ne vois pas de différence évidente à première vue, mais je peux me tromper. Je suis d'accord sur l'option Volume, qui n'est pas bonne pour l'indicateur, mais qui pourrait fonctionner correctement dans l'EA.

Merci beaucoup mladen, une grande aide pour mes compétences plutôt médiocres en codage indie...

Merci,

San.
 
mladen:

Fudo, tout va bien. J'avais seulement quelques choses à faire sans tarder et mon poste à la DST en a un peu souffert. Maintenant que tout est résolu, mon temps sera moins divisé.

Je souhaite un bon week-end à tous

Salutations

mladen

Salut mladen,

Je suis heureux d'apprendre que tout va bien

quand tu auras l'occasion, j'ai posté 2 indicateurs, une MA de RSX et les bandes de la MA triangulaire.

Est-ce que les bandes de la MA triangulaire peuvent être appliquées à la MA du RSX ?

Merci !

Fudo

Fudomyo :

mladen,

Serait-il possible de combiner la MA du RSX (ou même un simple RSX si la MA du RSX n'est pas possible) avec les bandes de la MA triangulaire ?

Merci
 

Merci mladen, excellente explication, je ne l'avais jamais vu de cette façon (fils dans MT4)...j'ai encore appris quelque chose.

Je m'en tiens à la configuration actuelle (Time[0]).

Merci, San.

 

...

Fudo

Voilà

J'ai fait quelques changements (en fait un nouvel indicateur, mais c'est ce que j'ai dérivé comme idée) Vérifiez si c'est ce que vous aviez à l'esprit.

Le premier changement est que j'ai supprimé les blocs de couleur et ajouté la couleur à la ligne RSX, donc maintenant il montre quand il est au-dessus ou en dessous de la ligne de signal (donc le changement de couleur n'est pas la pente du RSX, mais sa relation avec la ligne de signal). La deuxième est que c'est un indicateur à fichier unique maintenant (pas besoin d'indicateur Rsx externe).

Quant à ce qui est appliqué : vous pouvez choisir - si vous définissez TmaApplyToto 0, il sera appliqué au RSX, sinon il sera appliqué à la ligne de signal (MA du RSX).
Salutations

mladen

Fudomyo:
Salut mladen,

Je suis heureux d'entendre que tout va bien

quand tu auras l'occasion, j'ai posté 2 indicateurs, une MA de RSX et les bandes de la MA triangulaire.

Est-ce que les bandes de la MA triangulaire peuvent être appliquées à la MA du RSX ?

Merci !

Fudo
 

Interpoler en ajoutant

hi mladen

mtf movingaverage

mtf stohactique

interpoler en ajoutant

merci

Dossiers :
 

casaliss,

Ces indicateurs (et quelques autres ) sont disponibles dans ce fil de discussion : https://www.mql5.com/en/forum/178741

Ils n'ont pas cette option, mais ces indicateurs appliquent en fait une interpolation linéaire.

salutations

mladen

casaliss:
salut mladen

mtf movingaverage

mtf stohactic

interpoler en ajoutant

merci
Raison: