Fonction ICustom - page 20

 
Jeeves:
Est-ce qu'une âme charitable pourrait me sortir de ma misère et refaire le truc ci-dessous pour permettre l'utilisation de l'indicateur 'Advanced_ADX'. Je sais que cela nécessite l'utilisation de la fonction 'icustom', mais je n'ai aucune idée de comment le faire.

/données h1

double h1adm = iadm(NULL,PERIOD_H1,2,MODE_CLOSE) ;

/données h4

double h4adx = iadx(NULL,PERIOD_H4,2,MODE_CLOSE) ;

//d1 données

double d1adx = iadx(NULL,PERIOD_D1,2,MODE_CLOSE) ;

//définir la couleur

couleur couleur_h1, couleur_h4, couleur_d1 ;

//Définition de la chaîne

chaîne de caractères arrow_h1, arrow_h4, arrow_d1 ;

//h1 tendance à la hausse

if (h1adx < Bid ) { color_h1 = ColorUpGood ; }

//h1 tendance à la baisse

si (h1adx > Bid ) { color_h1 = ColorDownGood ; }

//h4 tendance à la hausse

if (h4adx < Bid ) { color_h4 = ColorUpGood ; } //h4 tendance à la baisse

//h4 tendance à la baisse

si (h4adx > Bid ) { color_h4 = ColorDownGood ; }

//d1 tendance à la hausse

if (d1adx < Bid ) { color_d1 = ColorUpGood ; } //d1 tendance à la baisse

//d1 tendance à la baisse

if (d1adx > Bid ) { color_d1 = ColorDownGood ; }

utiliser quelque chose comme ceci :

double h1adp=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_PLUSDI, 0) ;

double h1adm=iADX(NULL,PERIOD_H1,ADXPeriod,PRICE_CLOSE,MODE_MINUSDI,0) ;

if (h1adp > h1adm ) { color_h1 = ColorUpGood ; }

if (h1adp < h1adm ) { color_h1 = ColorDownGood ; }

et faites cela pour toutes les périodes que vous voulez tester (vous pouvez remplacer le 0 à la fin par un autre nombre - 0 => barre actuelle, 1 => première barre fermée et ainsi de suite).

 

Problèmes de programmation 2 Questions pls Aide (fichiers log)(Custom Indicator/ Standard Ind

Bonjour, j'espère que je peux trouver quelqu'un qui peut m'aider à résoudre ce problème, je serais très reconnaissant.

  • Situation initiale :
  • Nous avons développé un indicateur de filtre multicanal basé sur différents calculs d'indicateurs standards de Metatrader.

    Cet indicateur a été conçu pour être utilisé dans notre conseiller expert. Le défi est le suivant

    qu'à chaque tick, tous les calculs basés sur ces indicateurs standard provoquent d'innombrables entrées de journal.

    De ce fait, nos transactions sont retardées.

    Est-il possible d'éviter les entrées de journal ?

  • Notre tentative pour résoudre le problème :

Nous avons programmé des indicateurs personnalisés comme les indicateurs standards. Nous avons essayé de changer le calcul du cours standard utilisé par les différents indicateurs. Mais cela n'apporte pas le résultat escompté.

En utilisant le calcul du cours standard, l'indicateur standard donne le même résultat que l'indicateur personnalisé. Mais changer le calcul du cours

entraîne des différences entre l'indicateur personnalisé et l'indicateur standard correspondant ?

Est-il possible d'obtenir des indicateurs personnalisés qui se comportent exactement comme les indicateurs standards (quel que soit le cours de calcul choisi) ?

 
spongebozz:
J'espère trouver quelqu'un qui pourra m'aider à résoudre ce problème, je lui en serais très reconnaissant.
  • Situation initiale:
  • Nous avons développé un indicateur de filtre multicanal basé sur différents indicateurs standards de Metatrader.

    Cet indicateur a été conçu pour être utilisé dans notre conseiller expert. Le défi est le suivant

    qu'à chaque tick, tous les calculs basés sur ces indicateurs standard provoquent d'innombrables entrées de journal.

    De ce fait, nos transactions sont retardées.

    Est-il possible d'éviter les entrées de journal ?

  • Notre tentative pour résoudre le problème:

Nous avons programmé des indicateurs personnalisés comme les indicateurs standards. Nous avons essayé de changer le calcul du cours standard utilisé par les différents indicateurs. Mais cela n'apporte pas le résultat escompté.

En utilisant le calcul du cours standard, l'indicateur standard donne le même résultat que l'indicateur personnalisé. Mais changer le calcul du cours

entraîne des différences entre l'indicateur personnalisé et l'indicateur standard correspondant ?

Est-il possible d'obtenir des indicateurs personnalisés qui se comportent exactement comme les indicateurs standards (quel que soit le cours de calcul choisi) ?

Bonjour Spongebozz,

Ceci est pour la première partie de vos questions... concernant les logs trop gros et ralentissant votre système...

Les logs sont très probablement créés à partir d'instructions PRINT... trop nombreuses... soit dans vos EA et/ou vos indicateurs...

Vous pouvez supprimer ou effacer les instructions PRINT en plaçant 2 barres obliques de droite (//) devant chaque instruction PRINT que vous voulez arrêter d'imprimer dans le journal.

Exemple :

// Print("Ceci est un exemple") ; Le // effacera la ligne de code et n'imprimera pas dans le journal...

Si vous voulez que...TOUTES...les instructions PRINT soient effacées...vous pouvez faire une recherche/remplacement...

Rechercher : Imprimer

Remplacer : // Imprimer

Le type d'indicateur standard ou personnalisé... ne devrait pas avoir d'importance...

Il n'a d'importance que s'il comporte de nombreuses instructions PRINT que vous devez supprimer ou effacer...

Et plus tard, vous pouvez toujours revenir en arrière et supprimer les instructions PRINT que vous voulez... et laisser les autres en blanc ou les supprimer complètement.

J'espère que cela vous aidera,

Robert

 

Bonjour à tous !

Je suis en train de créer un EA pour les options binaires et je veux obtenir des "signaux" d'un indicateur à recevoir dans mon EA. Comme vous le savez probablement, les options binaires ne font qu'un PUT ou un CALL, donc je veux que iCustom écoute simplement mon indicateur et fasse les puts et les calls dans mon EA. Est-ce que cela a du sens ?

Alors, que dois-je faire ?

Dans l'indicateur, je dois juste mettre quelque chose comme ceci :

// PUT

if (AlignsForAput == true){

PutBuffer[] = 1;

}

// CALL

if (AlignsForAcall == true){

CallBuffer[] = 1;

}

PutBuffer[] = 0;

CallBuffer[] = 0;

S'il vous plaît aidez-moi à écrire un bon exemple sur la façon de faire ce travail. Que dois-je écrire et OÙ dois-je l'écrire ?

Merci !

 

J'apprécierais vraiment si quelqu'un pouvait écrire un exemple simple de ce à quoi le code indi et le code EA devraient ressembler ! Veuillez voir ci-dessus ma question.

 
SantaClaus:
J'apprécierais vraiment si quelqu'un pouvait écrire un exemple simple de ce à quoi le code des indicateurs et le code de l'EA devraient ressembler ! Veuillez voir ci-dessus ma question.

Pour les indicateurs, consultez ceci : https://www.mql5.com/en/forum/173032 et ceci : https://www.mql5.com/en/forum/173054

Pour les EAs vérifiez ceci : https://www.mql5.com/en/forum/173136 et ceci : https://www.mql5.com/en/forum/173171

 

Donc vous me dites qu'il y a de bons exemples d'utilisation d'iCustom pour le but ci-dessus ?

 
SantaClaus:
Donc vous me dites qu'il y a de bons exemples d'utilisation d'iCustom pour l'objectif ci-dessus ?

Oui, c'est exactement ce que je dis (vous avez demandé "un exemple simple de la façon dont le code indi et le code EA devraient ressembler" - ces fils peuvent vous aider).

 
mladen:
Oui, c'est exactement ce que je dis (vous avez demandé "un exemple simple de la façon dont le code indi et le code EA devraient ressembler" - ces fils peuvent vous aider).

Non, aucun des liens n'a expliqué comment utiliser iCustom comme je le souhaitais dans ma première question.

 
SantaClaus:
Non, aucun des liens n'a expliqué comment utiliser iCustom comme je le souhaiterais dans ma première question.

Vous êtes en train de poster dans un fil de discussion qui explique en détail comment utiliser iCostom() (tout ce que vous avez à faire est d'aller à la première page de ce fil) et vous ne trouvez pas comment faire ?

Voici une version courte :

_________________________

iCustom

Calcule l'indicateur personnalisé spécifié et renvoie sa valeur.

[TABLE] double iCustom(

string symbole, // symbole

int timeframe, // timeframe

string name, // chemin/nom du programme compilé de l'indicateur personnalisé

... // paramètres d'entrée de l'indicateur personnalisé (si nécessaire)

int mode, // indice de ligne

int shift// shift

) ;[/TD]

[/TR]

[/TABLE]

Paramètres

symbole

Nom du symbole sur les données duquel l'indicateur sera calculé. NULL signifie le symbole actuel.

timeframe

Cadre temporel. Il peut s'agir de n'importe quelle valeur de l'énumération ENUM_TIMEFRAMES. 0 signifie le cadre temporel actuel du graphique.

name

Nom du programme compilé de l'indicateur personnalisé, relatif au répertoire racine des indicateurs (MQL4/Indicators/). Si l'indicateur est situé dans un sous-répertoire, par exemple, dans MQL4/Indicators/Examples, son nom doit être spécifié comme"Examples\\Nindicator_name" (la double barre oblique inverse "\\" doit être spécifiée comme séparateur au lieu d'un simple).

...

Paramètres d'entrée de l' indicateur personnalisé, séparés par des virgules.

Les paramètres passés et leur ordre doivent correspondre à l'ordre de déclaration et au type des variables externes de l'indicateur personnalisé. Si les valeurs des paramètres d'entrée ne sont pas spécifiées, les valeurs par défaut seront utilisées.

mode

Indice de ligne. Peut être compris entre 0 et 7 et doit correspondre à l'index, spécifié dans l'appel de la fonction 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).

Valeur retournée

Valeur numérique de l'indicateur personnalisé spécifié. L'indicateur personnalisé doit être compilé (fichier *.EX4) et se trouver dans le répertoire terminal_directory\MQL4\Indicators\.

Exemple :

[TABLEAU]

[TR]

[TD] double val=iCustom(NULL,0,"SampleInd",13,1,0) ; [/TABLE]

_________________________

PS : l'indicateur "Line index. Can be from 0 to 7" est l'erreur que metatrader a toujours dans sa documentation (ce devrait être "Line index. Can be from 0 to 511"), mais tant qu'ils ne changent pas officiellement leur documentation, je m'en tiendrai à leur définition de la fonction iCustom().

Bon codage