[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 10

 
Et une autre question relative au fonctionnement de la bibliothèque.
J'ai créé le fichier de la bibliothèque, je l'ai compilé, tout s'est passé sans erreur.
J'ai importé la fonction dans le code de l'indicateur, je l'ai compilé, tout est OK aussi.
Quand je lance l'indicateur, la fonction à imp orter n'est pas exécutée, quand j'utilise

code indicateur, tout fonctionne. Voici le code de la bibliothèque.

//+------------------------------------------------------------------+
//|                                                         lib1.mq4 |
//|                                         Copyright © 2012, Fox.RM |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Fox.RM"
#property link      "http://www.metaquotes.net"
#property library
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<=20;i++)
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//+------------------------------------------------------------------+

Il s'agit d'un appel dans le code de l'indicateur :

#import "lib1.ex4"
    double Sredn(double& ArrSr[]);
    void SetText(string name, string name2, string text, string text2, color c, 
int size);
#import

 
Fox_RM:
Bonne journée à tous !
J'ai décidé de réécrire le code de mon indicateur pour un Conseiller Expert afin de suivre
J'ai décidé de modifier le code de mon indicateur pour suivre le fonctionnement de ses signaux.
Je n'ai pas d'erreur lors de la compilation et il fonctionne sans erreur dans le testeur de stratégie.

Je ne sais pas comment l'utiliser.

Z.I. Je suis sûr qu'il y a beaucoup d'erreurs et de bêtises, s'il vous plaît tirez à blanc.

int counted_bars=IndicatorCounted(); 

Vous écrivez vous-même que vous avez un conseiller expert et que la fonction est destinée à un indicateur.

Comptez le nombre de barres que vous voulez de force et pas plus.


Deuxièmement, ajoutez une vérification qu'il y a déjà eu une ouverture par ce signal ou vous obtiendrez un nouvel ordre à chaque tick.

Troisièmement, vérifiez la fonction iCustom

 
ilunga:

Vous écrivez vous-même que vous avez un Expert Advisor, et que la fonction est destinée à un indicateur.

Comptez le nombre de barres que vous voulez de force et pas plus.

Et comment le calculer de force ?
 
Fox_RM:
Bonne journée à tous !
J'ai décidé de réécrire le code de mon indicateur pour un Conseiller Expert afin de suivre
J'ai décidé de modifier le code de mon indicateur pour suivre le fonctionnement de ses signaux.
Je n'ai pas d'erreur lors de la compilation et il fonctionne sans erreur dans le testeur de stratégie.

Je ne sais pas comment l'utiliser.

Z.I. Je suis sûr qu'il y a beaucoup d'erreurs et de bêtises, s'il vous plaît tirez à blanc.


Prix d'ouverture
if (Sredn(TP_UP)>=2.5)OrderSend(Symbol(),OP_SELL,0.1,Close[i],2,50,20);
 if (Sredn(TP_DN)>=2.0)OrderSend(Symbol(),OP_BUY,0.1,Close[i],2,50,20);
 
Fox_RM:
Comment on force un comptage ?
Seul le signal sur la 0ème barre est important pour les Expert Advisors et l'ouverture de trades, n'est-ce pas ? Il faut donc raccourcir le cycle de calcul du nombre de barres au nombre requis pour ce calcul.
 
r772ra:

Prix d'ouverture

C'est-à-dire utiliser cette condition pour recalculer les barres ?

Mais dans mon indicateur, à chaque tick, les tableaux TP_UP et TP_DN sont calculés.C'est pourquoi nous devons d'abord les calculer.

 
ilunga:
Pour votre Expert Advisor et pour ouvrir des trades, la seule chose qui compte est le signal sur la 0ème barre, n'est-ce pas ? Il faut donc raccourcir le cycle de calcul du nombre de barres au nombre nécessaire pour ce calcul
.

J'ai essayé d'y ouvrir des ordres sur une nouvelle barre en utilisant la fonction NewBar(). Si elle est utilisée à cette fin ?

Par exemple if (NewBar())i++ ; Quelque chose comme ceci.

 
ilunga:
Pour votre conseiller expert et l'ouverture de votre position, seul le signal de la 0ème barre compte, n'est-ce pas ? Réduisez donc le cycle de calcul du nombre de barres au nombre requis pour ce calcul.
Et je ne comprends toujours pas bien quelle est la différence fondamentale entre ces deux calculs pour un conseiller expert ;(
 
Fox_RM:
Et une autre question relative au fonctionnement de la bibliothèque.
J'ai créé le fichier de la bibliothèque, je l'ai compilé, tout s'est passé sans erreur.
J'ai importé la fonction dans le code de l'indicateur, je l'ai compilé, tout est OK aussi.
Quand je lance l'indicateur, la fonction à importer n'est pas exécutée, quand j'utilise

code indicateur, tout fonctionne. Voici le code de la bibliothèque.

Il s'agit d'un appel dans le code de l'indicateur :

Peut-être n'avez-vous pas préparé le tableau correctement dans l'indicateur init() ? Si j'ai bien compris, la fonction importée n'a pas fonctionné à cet endroit ?
 
TarasBY:
Peut-être que le tableau n'a pas été préparé correctement dans l'indicateur init() ? Si j'ai bien compris, la fonction d'importation n'a pas fonctionné à cet endroit ?
Non, ce n'est pas le cas. Je l'ai vérifié, tout semble être correct. Et en outre, pourquoi fonctionne-t-il correctement lorsqu'il est utilisé dans le programme ?
Raison: