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

 
artmedia70:

1. S'il y a une position de prise fermée, ...

1.1 Si son type est OP_BUY, ...

1.1.2 S'il existe une position ouverte OP_SELL, .....

1.1.3 Si le temps de la barre actuelle moins le temps de la position Sell ouverte est supérieur ou égal au nombre de barres pour un délai, ...

1.1.4 Fermer une position de vente

1.2 Si son type est OP_SELL, ...

1.2.2 S'il existe une position ouverte OP_BUY, ...

1.2.3 Si le temps de barre actuel moins le temps d'ouverture de la position d'achat est supérieur ou égal au nombre de barres pour un délai, ...

1.2.4. Nous clôturons la position d'achat.

Merci pour l'algorithme, il est beaucoup plus compliqué que je ne le pensais(

Pourriez-vous esquisser le code en général, car il m'a fallu beaucoup de temps pour écrire le précédent, et je n'ai pas pu trouver d'EAs similaires.....

Je ne trouve pas d'EAs similaires, mais je vous en serais très reconnaissant !

 
Avant d'essayer de résoudre un problème à la limite, il est préférable d'essayer d'évaluer si la solution est vraiment nécessaire.
Et il y a beaucoup de fonctions similaires ici - Fonctions utiles de KimIV. Il existe également un modèle prêt à l'emploi pour votre tâche.
 

Bonjour.

Veuillez m'aider à trouver une erreur. Le code compte la somme des valeurs de RangeX0_D1

Le résultat est seulement le dernier (sixième) membre de la séquence.

Merci d'avance.

  int k;
  double RangeX0_D1  = 0;  
  for (k=1;k<=6;k++) 
   {
    RangeX0_D1  = (iHigh(NULL,1440,k)-iLow(NULL,1440,k))/Point;
    if (RangeX0_D1>0)
    RangeX0_D1++;
   }
 
int k;
  double RangeX0_D1  = 0;  
  for (k=1;k<=6;k++) 
   {
    RangeX0_D1  += (iHigh(NULL,1440,k)-iLow(NULL,1440,k))/Point;
   }
 
FAQ:
Merci pour votre aide, votre précision et votre rapidité :)
 
nemo811:
Merci pour votre aide, votre précision et votre rapidité :)


Pour accélérer les calculs, il est préférable de faire les choses un peu différemment

int k;
  double RangeX0_D1  = 0;  
  for (k=1;k<=6;k++) 
   {
    RangeX0_D1  += (iHigh(NULL,1440,k)-iLow(NULL,1440,k));
   }
   RangeX0_D1 /= Point;

La division prend beaucoup de temps. C'est mieux de le faire une fois.

 
Bonjour, pourriez-vous me dire pourquoi les devis du 10 juin au 22 septembre de cette année ne peuvent être téléchargés ? J'ai effectué deux ou trois téléchargements d'historique et tous présentent le même écart dans les données.
 
Bonjour, quelques conseils : La boucle recherche les valeurs qui répondent à certaines conditions. Les valeurs trouvées sont écrites dans un tableau. On ne sait pas à l'avance combien de valeurs seront trouvées, la taille du tableau à déclarer est donc inconnue. Du point de vue du temps et des ressources, je préférerais ne pas faire deux exécutions (afin de pouvoir compter le nombre de valeurs trouvées dans la première exécution, déclarer le tableau et écrire des données dans le tableau dans la seconde). Existe-t-il un moyen d'obtenir le résultat souhaité en une seule fois ?
 
Elenn:
Bonjour, quelques conseils : La boucle recherche les valeurs qui répondent à certaines conditions. Les valeurs trouvées sont écrites dans un tableau. On ne sait pas à l'avance combien de valeurs seront trouvées, la taille du tableau à déclarer est donc inconnue. Du point de vue du temps et des ressources, je préférerais ne pas faire deux exécutions (afin de pouvoir compter le nombre de valeurs trouvées dans la première exécution, déclarer le tableau et écrire des données dans le tableau dans la seconde). Existe-t-il un moyen d'obtenir le résultat souhaité en une seule fois ?

Un tableau de longueur "infinie" peut être déclaré dans l'indicateur. Déclarez-le et ensuite, dans la boucle, écrivez immédiatement les valeurs trouvées dans le tableau. La seule question qui se pose est de savoir comment transférer la sélection nécessaire à l'Expert Advisor/Script ? Il existe des outils, mais nous devons en évaluer la complexité. Peut-être serait-il vraiment plus facile de faire 2 exécutions - dans la première, nous comptons le nombre de valeurs filtrées, puis nous changeons la dimension du tableau, et dans la seconde, nous entrons les valeurs dans le tableau ?
 
Elenn:
Bonjour, quelques conseils : La boucle recherche les valeurs qui répondent à certaines conditions. Les valeurs trouvées sont écrites dans un tableau. On ne sait pas à l'avance combien de valeurs seront trouvées, la taille du tableau à déclarer est donc inconnue. Du point de vue du temps et des ressources, je préférerais ne pas faire deux exécutions (afin de pouvoir compter le nombre de valeurs trouvées dans la première exécution, déclarer le tableau et écrire des données dans le tableau dans la seconde). Existe-t-il un moyen d'obtenir le résultat souhaité en une seule fois ?

Déclarer le tableau plus grand que la taille maximale requise.