Aide au codage - page 175

 

Salut mladen,

1.vous mentionnez la deuxième forme, de l'ancienne aux nouvelles barres, dites-vous ce style : for (i=limit;i>=0;i--) ?

J'ai peur d'être confus, alors je demande une petite clarification.

2.demandez aussi, si les deux styles (si vous ne considérez pas le repeint ou non) donnent fondamentalement les mêmes signaux ou valeur numérique ?

3. un indicateur peut-il contenir les deux styles de direction de boucle ? comme la partie centrale de l'indicateur est de deuxième forme, mais la partie mtf est de première forme ? une contradiction ici ? ou peut toujours fonctionner sans problème ?

4. l'absence de certaines phrases de retour (0), (la phrase de retour (0) est-elle obligatoire ou nécessaire ?) sera-t-elle un problème pour arrêter l'indicateur ou provoquer des erreurs ? merci.

 
kenwa:
Salut mladen,

1.vous mentionnez la deuxième forme, de l'ancienne aux nouvelles barres, dites-vous ce style : for (i=limit;i>=0;i--) ?

J'ai peur d'être confus, alors je demande une petite clarification.

2.demandez aussi, si les deux styles (si vous ne considérez pas le repeint ou non) donnent fondamentalement les mêmes signaux ou valeur numérique ?

3. un indicateur peut-il contenir les deux styles de direction de boucle ? comme la partie centrale de l'indicateur est de seconde forme, mais la partie mtf est de première forme ? une contradiction ici ? ou peut toujours fonctionner sans problème ?

4. l'absence de certaines phrases return(0),(la phrase return(0) est-elle un must ou nécessaire ?) sera-t-elle un problème pour arrêter l'indicateur ou provoquer le repeint ? merci

1. oui

2. cela dépend du calcul effectué dans la boucle - certains calculs ne peuvent pas être effectués dans la forme "plus récent à plus ancien" alors que tous les calculs peuvent être effectués dans la forme "plus ancien à plus récent".

3. c'est possible mais voir le point 2 - la première forme est beaucoup plus sûre

4. return(0) ne peut pas provoquer ou empêcher le repeint - il n'a rien en commun avec lui.

 
mladen:
1. oui

2. dépend du calcul effectué dans la boucle - certains calculs ne peuvent pas être effectués dans la forme "plus récent à plus ancien" alors que tous les calculs peuvent être effectués dans la forme "plus ancien à plus récent".

3. c'est possible, mais voir le point 2 - la première forme est beaucoup plus sûre.

4. return(0) ne peut pas causer ou empêcher le repeint - il n'a rien en commun avec lui.

puis-je demander i) si la deuxième forme peut faire tous les types de calcul, pourquoi la deuxième forme n'est pas plus sûre ? je suis un peu confus.

ii) je vois que le code que vous avez corrigé pour mon indicateur précédent utilise (i=limite;i>=0;i--) la deuxième forme que mon tout premier indicateur utilise le style de la première forme, y a-t-il une raison particulière d'utiliser le deuxième style ? merci.

 
kenwa:
je peux demander i) si la deuxième forme peut faire tous les types de calcul, pourquoi la deuxième forme n'est pas plus sûre ? je suis un peu confus. aussi ii) je vois le code que vous corrigez mon indicateur précédent avant utilise (i=limite;i>=0;i--) la deuxième forme que mon tout début utilise le style de la première forme, une raison particulière d'utiliser le deuxième style ? merci.

Ce que je voulais dire, c'est le formulaire du point 1. Utilisez ce formulaire et vous éliminerez une erreur possible due à une mauvaise direction de calcul.

 
mladen:
Ce que je voulais dire, c'est la forme du point 1. Utilisez ce formulaire et vous éliminerez une erreur possible due à une mauvaise direction de calcul.

salut mladen,

Si je n'ai pas mal compris, vous voulez dire que la seconde forme peut s'adapter à tous les types de calcul, mais que la première forme est plus sûre car elle permet d'éviter les erreurs de calcul ?

Si mon indicateur de base utilise la deuxième forme, et mon indicateur de performance utilise la première forme, est-ce que c'est correct ? ou est-ce que c'est mieux que les deux utilisent la même forme ? (la première forme est meilleure ??)

Quelle forme ? la première ou la deuxième forme est la meilleure pour éliminer la possibilité de repeindre ? merci de votre patience pour répondre à ma question.

 
kenwa:
salut mladen,

Si je n'ai pas mal compris, vous voulez dire que la deuxième forme peut s'adapter à tous les types de calcul, mais que la première forme est plus sûre car elle permet d'éviter les erreurs de calcul ?

Si mon indicateur de base utilise la seconde forme, et mon indicateur de performance utilise la première forme, est-ce que c'est correct ? ou est-ce que c'est mieux que les deux utilisent la même forme ? (la première forme est meilleure ??)

quelle forme ? la première ou la deuxième forme est meilleure élimine la possibilité de repeindre ? merci pour votre patience répond à ma demande.

kenwa

pour clarifier : c'est la forme bien meilleure

(i=limite;i>=0;i--)

 

Ok & merci beaucoup - je vais rassembler quelques résultats supplémentaires avant de revenir !

jeff

 

Aidez-moi à résoudre ce problème concernant fantail vma

Bonjour,

J'essaie d'apprendre le mql depuis plusieurs mois. J'ai essayé de créer un EA basé sur l'indicateur Fisher. Mais comme nous savons que Fisher se repeint, cela m'a donné du fil à retordre pour créer cet EA. C'est pourquoi je me suis démotivé et me suis occupé de mes études. Maintenant j'essaie de créer un autre EA basé sur FANTAIL. Mais je rencontre un problème pour amener les valeurs de l'indicateur à l'EA. J'ai utilisé la fonction iCustom pour le faire. Cet indicateur dessine 50 lignes sur le graphique. J'aurai besoin de certaines des valeurs de ces lignes.

Pouvez-vous me montrer un moyen d'obtenir ces valeurs dans un EA ? Merci d'avance. Désolé si je pose une question stupide.

L'indicateur :

Dossiers :
 

Bonjour mladen, pouvez-vous m'aider à inclure la super tendance dans cet indicateur (naturellement, la super tendance calculée sur ExtMapBuffer1).

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

extern double Beta1 = 1.0;

extern string Symbol2 = "GBPUSD";

extern double Beta2 = 1.4;

//--- buffers

double ExtMapBuffer1[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

IndicatorShortName(Symbol() + " " + Beta1 + " " + Symbol2 + " " + Beta2);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int counted_bars=IndicatorCounted();

if(Bars<1) return(0);

int i = Bars-counted_bars -1;

while(i >=0) {

int iShift2 = iBarShift(Symbol2, 0, Time, false);

ExtMapBuffer1 = Close * Beta1 - iClose(Symbol2, NULL, iShift2) * Beta2;

i--;

}

return(0);

}

 
k3rn3l:
Bonjour mladen, pouvez-vous m'aider à inclure le supertrend dans cet indicateur (naturellement, le supertrend calculé sur ExtMapBuffer1) ?

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 DodgerBlue

extern double Beta1 = 1.0;

extern string Symbol2 = "GBPUSD";

extern double Beta2 = 1.4;

//--- buffers

double ExtMapBuffer1[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

IndicatorShortName(Symbol() + " " + Beta1 + " " + Symbol2 + " " + Beta2);

//----

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

int counted_bars=IndicatorCounted();

if(Bars<1) return(0);

int i = Bars-counted_bars -1;

while(i >=0) {

int iShift2 = iBarShift(Symbol2, 0, Time, false);

ExtMapBuffer1 = Close * Beta1 - iClose(Symbol2, NULL, iShift2) * Beta2;

i--;

}

return(0);

}

Lequel exactement (à cause des paramètres à passer à la fonction iCustom()) ?

Raison: