Fonction ICustom - page 15

 

Existe-t-il un exemple d'utilisation de la fonction icustom pour obtenir le même tampon pour deux images temporelles ?

Puisque les deux tampons ont le même nom, comment puis-je déterminer les différents cadres temporels ?

Cadretemporel actuel

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0) ;

cadre temporel supérieur

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1) ;

 
Essayez comme ceci :
double trend1minute = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0); double trend5minute = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1);

Et ensuite utiliser les 2 variables comme vous le souhaitez (par exemple : if (trend1minute == ... && trend5minute ==... ) faire quelque chose)

mtuppers:
Y a-t-il un exemple d'utilisation de la fonction iCustom pour obtenir le même tampon pour deux cadres temporels ?

Puisque les 2 tampons tf ont le même nom, comment puis-je déterminer les différentes périodes de temps ?

Cadre temporel actuel

double trend = iCustom(NULL, 1, "HA01", 0, 1500, 0, 0) ;

cadre temporel supérieur

double trend = iCustom(NULL, 5, "HA01", 0, 1500, 0, 1) ;
 

Utilisation d'iCustom dans un EA, instance unique

Bonjour à tous,

Je travaille sur l'écriture d'un EA pour utiliser un indicateur personnalisé, lorsque je backtest, je remarque qu'il semble charger un nouvel instande de l'indicateur à chaque fois qu'il appelle la fonction iCustom. Quelqu'un connaît-il un moyen de charger l'indicateur personnalisé une fois et d'y faire référence à chaque succession ?

void OnBar()

{

RSIPL = iCustom(NULL,0,"NCH_DI",0,4,BarIndex);

TSL = iCustom(NULL,0,"NCH_DI",0,5,BarIndex);

HAOpen = iCustom(NULL,0,"HeikenAshi",0,2,BarIndex);

HAClose = iCustom(NULL,0,"HeikenAshi",0,3,BarIndex);

PACHigh = iMA(NULL,0,5,0,MODE_SMMA,PRICE_HIGH,BarIndex);

PACLow = iMA(NULL,0,5,0,MODE_SMMA,PRICE_LOW,BarIndex);

// DO MY OTHER STUFF HERE

}

Le code ci-dessus charge une nouvelle instance de l'indicateur NCH_DI à chaque appel.........

Merci

 

Ne peut pas faire

C'est la façon dont MT4 fonctionne. La meilleure solution est de minimiser le nombre d'appels iCustom() dans votre code. HA n'a généralement besoin d'être appelé que lorsqu'une nouvelle barre est formée. L'appeler à chaque tick n'est pas optimal.

 
CodeMeister:
C'est ainsi que fonctionne MT4. La meilleure solution est de minimiser le nombre d'appels iCustom() dans votre code. HA n'a généralement besoin d'être appelé que lorsqu'une nouvelle barre est formée. L'appeler à chaque tick n'est pas optimal.

J'ai tous mes appels sur une nouvelle formation de barres. Le NCH_DI est malheureusement un élément de code relativement gourmand en mémoire. Auriez-vous des suggestions sur la façon dont je peux vider les anciennes instances ?

 

Essayez ceci

Letesteur de stratégie n'est pas le but ultime de cet EA. L'exécuter en direct sur un graphique l'est. Je pense que le chargement de iCustom() se fait une seule fois sur un graphique, à condition que vous ayez suffisamment de mémoire, donc je ne passerais pas beaucoup de temps à travailler sur quelque chose pour répondre aux particularités de Strategy Tester. La seule autre alternative à iCustom() est de coder l'indicateur directement dans l'EA.

 

J'ai pensé à le recoder dans l'EA..... J'ai décidé que ce ne serait pas pratique dans ce cas. J'ai trouvé que si je commente #property indicator_separate_window dans l'indicateur, il se chargera et se déchargera une fois l'appel terminé. Je vais terminer le codage principal et faire une démonstration pendant une semaine environ et surveiller mon utilisation de la mémoire. Merci les gars, je vous ferai savoir comment ça se passe.

 

Problèmes sur l'indicateur iCustom

Bonjour,

Mon EA utilise son propre indicateur avec iCustom.

A l'ouverture d'une nouvelle bougie, l'indicateur est appelé par iCustom.

Maintenant je me suis rendu compte que la valeur de iCustom[1] n'est pas égale à iCustom[0] de la barre précédente.

La valeur est similaire mais pas exactement la même que ce qu'elle devrait être et ce que j'ai vérifié pour le RSI par exemple.

Une idée de l'origine du problème ?

Merci pour tout conseil à ce sujet.

Camilo

 

Cela dépend du prix qui est utilisé par l'indicateur personnalisé. Si votre indicateur personnalisé utilise la fermeture, le haut, le bas ou tout autre prix qui change pendant le développement de la bougie actuelle, alors la valeur de l'index [0] sera changée.

Par exemple, si vous appelez l'indicateur qui utilise le prix personnalisé et comparez la valeur [0] et après la fermeture de la barre, vous la comparez avec le résultat à [1], il est presque sûr que la valeur sera différente. Mais, si vous configurez l'indicateur personnalisé pour utiliser le prix OUVERT au lieu de la fermeture, alors la valeur sera égale (c'est simplement parce que le prix ouvert ne change pas pendant le développement de la bougie).

 

Merci pour la réponse rapide, Kalenzo.

J'ai vérifié les valeurs pour [2] et j'ai réalisé que pour [1] -> [2] tout semble correct.

Ici j'ai un exemple des valeurs de mon indicateur

.... [0]..........[1].........[2]

t4 31,8711 42,6700 52,1915

t3 44,6881 52,1915 60,3014

t2 53,0572 60,3014 67,6553

t1 59,8860 67,6553 74,5797

Il semble donc que le problème soit l'identification de l'ouverture de la barre.

J'utilise la même vérification que précédemment :

if(Volume[0]>1) return ;

N'est-ce pas correct ?

Raison: