Fonction ICustom - page 4

 
TheRumpledOne:
Si c'est de la "camelote", alors pourquoi le poster ?

J'ai eu une pensée similaire....

 

Une question sur iCustom.

Pouvez-vous expliquer et donner quelques exemples concernant les variables Line et Shift avec les commandes iCustom ?

Merci.

 
matrixebiz:
Une question sur iCustom.

Pouvez-vous expliquer et donner quelques exemples concernant les variables Line et Shift avec les commandes iCustom ?

Merci pour votre aide.

iCustom - Documentation MQL4

mode - Index de ligne. Peut être de 0 à 7 et doit correspondre à l'index utilisé par l'une des fonctions SetIndexBuffer. shift - Index de la valeur prise dans le buffer de l'indicateur (décalage relatif à la barre actuelle le nombre donné de périodes auparavant).

Utilisez MODE pour indiquer à votre indicateur quel tampon vous voulez. Les indicateurs de résistance de support peuvent utiliser le tampon 0 (MODE=0) pour la résistance et le tampon 1 (MODE=1) pour le support.

SHIFT dit d'utiliser la valeur de Bar(SHIFT) de l'indicateur appelé par iCustom.

Cela vous aide-t-il ?

 
TheRumpledOne:
iCustom - Documentation MQL4

mode - Index de la ligne. Peut être compris entre 0 et 7 et doit correspondre à l'index utilisé par l'une des fonctions SetIndexBuffer. shift - Index de la valeur prise dans le tampon de l'indicateur (décalage par rapport à la barre actuelle d'un nombre donné de périodes).

Utilisez MODE pour indiquer à votre indicateur quel tampon vous voulez. Les indicateurs de résistance de support peuvent utiliser le tampon 0 (MODE=0) pour la résistance et le tampon 1 (MODE=1) pour le support.

SHIFT dit d'utiliser la valeur de Bar(SHIFT) de l'indicateur appelé par iCustom.

Est-ce que cela aide ?

Ok, j'ai compris Shift, je vais devoir lire davantage sur le mode.

Est-ce que vous codez ? J'ai cet indicateur que j'appelle depuis mon EA mais je ne sais pas comment le configurer correctement. Voir image.

Il a juste deux lignes et quand le bleu change et s'aligne avec l'autre ligne, un signal long est généré (même idée avec le rouge).

J'ai essayé plusieurs codes différents comme celui que j'ai utilisé avec l'indicateur VQ ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1) ;

double Entry2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2) ;

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2) ;

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2) ;

Je n'arrive pas à négocier correctement.

Merci

Dossiers :
ci.jpg  66 kb
 
matrixebiz:
Ok, je comprends Shift, je vais devoir me documenter davantage sur le mode.

Est-ce que vous codez ? J'ai cet indicateur que j'appelle depuis mon EA mais je ne sais pas comment le configurer correctement. Voir image.

Il a juste deux lignes et quand le bleu change et s'aligne avec l'autre ligne, un signal long est généré (même idée avec le rouge).

J'ai essayé plusieurs codes différents comme celui que j'ai utilisé avec l'indicateur VQ ;

double Entry1 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 1) ;

double Entry2 = iCustom(NULL, 0, "VQ", 24, 30....., 0, 2) ;

double Up2 = iCustom(NULL, 0, "VQ", 24, 30....., 1, 2) ;

double Down2 = iCustom(NULL, 0, "VQ", 24, 30....., 2, 2) ;

Ce n'est pas le bon trading.

Merci

Si vous faites référence à l'indicateur du bas, qui semble être nommé "#MTF CI", alors je pense qu'il est possible que cet indicateur ait 4 tampons : un pour chacune des deux couleurs de chaque ligne. Vous pouvez faire apparaître la fenêtre de données (ctrl-D) pour voir quels tampons les indicateurs ont, ainsi que leurs index (l'argument MODE de l'appel iCustom).

 
matrixebiz:
Ok, je comprends Shift, je vais devoir lire davantage sur Mode.

Est-ce que vous codez ?

Merci

Je suis connu pour avoir codé un ou deux indicateurs (des CENTAINES) en mon temps....LOL !

 
ralph.ronnquist:
Si vous faites référence à l'indicateur du bas, qui semble être nommé "#MTF CI", alors je pense qu'il est possible que cet indicateur ait 4 buffers : un pour chacune des deux couleurs de chaque ligne. Vous pouvez faire apparaître la fenêtre de données (ctrl-D) pour voir quels tampons ont les indicateurs, ainsi que leurs index (l'argument MODE de l'appel iCustom).

Oui, vous avez raison, comment puis-je les iCustomiser et créer le Trade ?

Pour les deux autres (QQEA 4 buffers et VQ 2 buffers) qui fonctionnent, j'utilise ceci ;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//Acheter

qqe0_0>qqe1_0 && qqe0_1Entry2 && ....

Merci Ralph

Dossiers :
data.jpg  24 kb
 
matrixebiz:
Oui, vous avez raison, comment puis-je les personnaliser et créer la transaction ?

Pour les deux autres (QQEA 4 buffers et VQ 2 buffers) qui fonctionnent, j'utilise ceci ;

double Entry1 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 1);

double Entry2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 0, 2);

double Up2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 1, 2);

double Down2 = iCustom(NULL, 0, "VQ", Crash,TimeFrame,Length,Method,Smoothing,Filter,RealTime,Steady,Colors,Alerts,EmailON,SignalPrice,CountBars, 2, 2);

double qqe0_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,1);

double qqe0_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,0,2);

double qqe1_0=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,1);

double qqe1_1=iCustom(Symbol(),0,"QQEA",QQEA_SF,RSI_Period,DARFACTOR,1,2);

//Acheter

qqe0_0>qqe1_0 && qqe0_1Entry2 && ....

Merci Ralph

En général, lorsque vous voyez une ligne d'indicateur avec plusieurs couleurs, cela est généralement mis en œuvre par plusieurs tampons, un pour chaque couleur. Vous pouvez alors calculer les indices des tampons à partir de la fenêtre de données, où le tampon supérieur a l'indice 0, et de plus en plus vers le bas. Le tampon est tracé lorsqu'il a une valeur (ou s'il s'agit d'un style de dessin de LIGNE, il a besoin de deux valeurs consécutives ou plus pour être tracé).

Si vous avez le code source de l'indicateur, il est parfois plus facile d'y jeter un coup d'oeil, et d'apprendre les indices du tampon à partir des appels de la fonction SetIndexBuffer.

Un indicateur peut également afficher des "objets" sur l'écran, et ceux-ci ne sont pas accessibles via l'appel iCustom. Au lieu de cela, vous devrez connaître le "nom de l'objet", et vous pourrez lire ses propriétés.

Ainsi, vous devez toujours être clair sur le tampon de l'indicateur à lire, et utiliser cet index comme l'avant dernier argument de iCustom.

Par exemple, l'utilisation de l'indicateur VQ ne semble pas tout à fait correcte, car (d'après la source que j'ai vue), ses tampons [1] et [2] sont utilisés pour les lignes verte et rouge respectivement, et il n'y a jamais de cas où ils sont tous les deux non vides. C'est-à-dire que "Up2==Down2" est toujours faux, sauf quand les deux sont "vides", et c'est quand la ligne VQ n'est ni verte ni rouge, mais jaune.

A part cela, je pense que vous faites les choses de la bonne manière. On peut discuter du choix des noms de variables, bien sûr, mais c'est une question théorique. La solution consiste à choisir les valeurs intéressantes en utilisant l'appel iCustom, puis à exprimer les relations de valeurs requises particulières dans les conditions de trading.

 
ralph.ronnquist:
Généralement, quand vous voyez une ligne d'indicateur avec plusieurs couleurs, alors cela est implémenté par plusieurs tampons ; un pour chaque couleur. Vous pouvez alors calculer les indices des tampons à partir de la fenêtre de données, où le tampon supérieur a l'indice 0, et de plus en plus vers le bas. Le tampon est tracé lorsqu'il a une valeur (ou s'il s'agit d'un style de dessin de type LIGNE, il doit avoir deux valeurs consécutives ou plus pour être tracé).

Si vous avez le code source de l'indicateur, il est parfois plus facile d'y jeter un coup d'oeil, et d'apprendre les index des tampons à partir des appels de la fonction SetIndexBuffer.

Un indicateur peut également afficher des "objets" sur l'écran, et ceux-ci ne sont pas accessibles via l'appel iCustom. Au lieu de cela, vous devrez connaître le "nom de l'objet", et vous pourrez lire ses propriétés.

Ainsi, vous devez toujours être clair sur le tampon de l'indicateur à lire, et utiliser cet index comme l'avant dernier argument de iCustom.

Par exemple, l'utilisation de l'indicateur VQ ne semble pas tout à fait correcte, car (d'après la source que j'ai vue), ses tampons [1] et [2] sont utilisés pour les lignes verte et rouge respectivement, et il n'y a jamais de cas où ils sont tous les deux non vides. C'est-à-dire que "Up2==Down2" est toujours faux, sauf quand les deux sont "vides", et c'est quand la ligne VQ n'est ni verte ni rouge, mais jaune.

A part cela, je pense que vous faites les choses de la bonne manière. On peut discuter du choix des noms de variables, bien sûr, mais c'est une question théorique. La solution consiste à sélectionner les valeurs intéressantes à l'aide de l'appel iCustom, puis à exprimer les relations particulières entre les valeurs requises dans les conditions de transaction.

Malheureusement, je n'ai pas la source des trois indicateurs que j'ai mentionnés ci-dessus. Comment écrivez-vous le code pour ceux-ci si je veux qu'ils vérifient une condition d'achat ou de vente UNIQUEMENT au moment précis où ils changent de couleur en même temps pour chaque indicateur bien sûr ?

Merci

 

L'absence de source n'est pas un problème. Concentrons-nous sur la fenêtre de l'indicateur 2 dans votre image, qui montre un indicateur avec 4 tampons. Si vous déplacez la souris de gauche à droite sur l'indicateur, vous pouvez déterminer quel tampon est utilisé pour quelle couleur.

Supposons que le premier tampon ([0]) est pour l'indication bleue de la ligne supérieure, le deuxième tampon ([1]) est pour l'indication rouge de la ligne supérieure, et de même [2] et [3] sont bleu et rouge de la ligne inférieure. Vous pourriez alors lire l'indicateur comme suit :

double top_is_blue = iCustom( ..., 0, 1 );

double top_was_blue = iCustom( ..., 0, 2 );

double top_is_red = iCustom( ..., 1, 1 );

double top_was_red = iCustom( ..., 1, 2 );

double bot_is_blue = iCustom( ..., 2, 1 );

double bot_was_blue = iCustom( ..., 2, 2 );

double bot_is_red = iCustom( ..., 3, 1 );

double bot_was_red = iCustom( ..., 3, 2 );

[/PHP]

Then you can summarise them as follows:

[PHP]bool top_goes_blue = ( top_is_blue == top_was_red );

bool top_goes_red = ( top_is_red == top_was_blue );

bool bot_goes_blue = ( top_is_blue == top_was_red );

bool bot_goes_red = ( top_is_red == top_was_blue );

bool both_go_blue = ( top_goes_blue && bot_goes_blue );

bool both_go_red = ( top_goes_red && bot_goes_red );

La manière de procéder dépend de ce que vous recherchez. En particulier,

si vous voulez combiner des lectures non concomitantes des deux lignes, cela peut devenir un codage plus compliqué. Par exemple, la variable booléenne "both_go_blue" se réfère à des lectures simultanées des deux lignes, et ne capture pas le fait qu'une ligne devienne bleue, et que l'autre devienne bleue un peu plus tard.