[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 498

 
rigc:
(ce n'est pas du tout un dessin)))


Je ne sais pas - c'est le cas. L'indicateur est simple comme bonjour :

int start()
  {
   
//----
  double F1=0, F3=0, F13;    // номера фракталов
  int    B1, B3, SR=3;               // номера баров
  
  while(F3==0)                       //поиск фракталов
  {
    F13=iFractals(NULL,0,MODE_UPPER,SR);
    if (F13!=0) 
    {
      if      (F1==0){B1=SR; F1=F13;}
      else if (F3==0){B3=SR; F3=F13;}
    }
    SR++; 
  }
    ObjectSet("Rezist", OBJPROP_TIME1 ,iTime(NULL,0,B3));
    ObjectSet("Rezist", OBJPROP_TIME2 ,iTime(NULL,0,B1));
    ObjectSet("Rezist", OBJPROP_PRICE1,iHigh(NULL,0,B3));
    ObjectSet("Rezist", OBJPROP_PRICE2,iHigh(NULL,0,B1));
    ObjectSet("Rezist", OBJPROP_RAY   , True);

  
//----
   return(0);
  }

SR=3, c'est ce que j'ai corrigé. C'est le numéro de barre SR=2 à partir duquel on peut commencer à chercher une fractale.

 
Figar0:


Je ne sais pas, j'ai essayé. L'indicateur est simple comme bonjour :

SR=3, c'est ce que j'ai corrigé. C'est le numéro de barre SR=2 à partir duquel on peut commencer à chercher une fractale.

Yep, je l'ai eu)))

Merci

Je vous en dois une.

 
sss2019:
Pouvez-vous me dire comment exécuter une condition ? Nous avons une condition pour ouvrir un ordre d'achat au prix actuel dès que le prix atteint 1.2550. Ainsi, lorsque le prix est supérieur ou égal à 1.2550, l'ordre est ouvert et lorsque l'ordre est ouvert, la variable statique bloque l'ouverture de nouveaux ordres, jusqu'à ce que l'ordre atteigne 0. Ainsi, dès que l'ordre est fermé et qu'il n'y a plus d'ordres avec cette magie, l'interdiction d'ouverture est levée et un nouvel ordre est ouvert, mais le prix s'est éloigné de ce niveau depuis longtemps. Nous avons besoin que l'EA ouvre les ordres de marché lorsque le prix atteint ce niveau mais pas les ordres en attente.
Vous avez un contrôle pour plus ou égal à 1.2550. En d'autres termes, lorsque le prix est plus élevé(il a disparu depuis longtemps), le critère est invariablement vrai et les positions seront donc ouvertes.
Vous devez considérer la condition - le prix a franchi le niveau de 1,2550.
 
artmedia70:
Vous avez une vérification pour une valeur supérieure ou égale à 1,2550. C'est-à-dire que lorsqu'il est plus élevé(le prix est parti depuis longtemps), le critère est toujours vrai, et donc les positions seront ouvertes.
Vous devez considérer la condition - le prix a franchi le niveau de 1,2550.


Merci, je pense que cela peut être fait avec le calcul du temps. Par exemple, si le dépôt sur mon compte est en euros ou en roubles, le conseiller expert peut-il faire des erreurs ?

 

Pouvez-vous me dire comment l'EA peut réduire la taille de la RAM, la mettre à zéro de temps en temps ou autre chose, parce qu'un terminal consomme jusqu'à 100 Mo et comme je l'ai remarqué, il consomme jusqu'à ce qu'il atteigne 100%. J'ai 25 terminaux installés sur un ordinateur quelque part.

Je vous rappelle que je n'ai qu'un seul tableau en service et qu'il n'est pas affiché. Cependant, les données sont utilisées à partir de dizaines de paires de devises.

La taille des fichiers de données historiques peut-elle affecter la charge de la mémoire ? Si nous ne laissons que les données quotidiennes, cela fonctionnera-t-il plus rapidement ?

 
sss2019:


Merci, je pense que cela peut se faire avec le timing. Par exemple, si le dépôt est en EUR ou en RUB, mon conseiller expert peut-il faire des erreurs?

Pourquoi tu ferais ça ? Vous pouvez, par exemple, utiliser une MA avec une période de 0. Vous vérifiez que la première et la deuxième barre ne croisent pas le niveau. A celui que vous ouvrez actuellement.

Les erreurs peuvent être dans la tête du programmeur, pas dans le dépôt du compte :)

 

Bonjour à tous !

Chers professionnels - veuillez résoudre ma question : https://www.mql5.com/ru/forum/116542

 

Pouvez-vous me dire pourquoi ce cycle ne fonctionne pas correctement, il ne cherche pas le maximum le plus élevé, je ne trouve pas l'erreur. Il saute le maximum le plus élevé et prend comme résultat le maximum de la bougie précédente.

Toutes les valeurs du tableau buystoploss sont 0 par défaut.

Dans l'image, il semble que la boucle ait trouvé le maximum de la 13ème bougie, en sautant les maximums supérieurs.

  i2=0;
  for(i=0;i<7;i++)
    {
    while(i2 <= 19)
      {
      if(High[i2]>buystoploss[i])
        {
        buystoploss[i]=High[i2];
        }
      i2++;
      }
    }
    Alert(" ",buystoploss[4]);
 
sss2019:

Pouvez-vous me dire pourquoi ce cycle ne fonctionne pas correctement, il ne cherche pas le maximum le plus élevé, je ne trouve pas l'erreur. Il saute le maximum le plus élevé et prend comme résultat le maximum de la bougie précédente.

Toutes les valeurs du tableau buystoploss sont 0 par défaut.


C'est une vraie blague :

Alert(" ",buystoploss[4]);

?

 
sss2019:

Pouvez-vous me dire pourquoi ce cycle ne fonctionne pas correctement, il ne cherche pas le maximum le plus élevé, je ne trouve pas l'erreur. Il saute le maximum le plus élevé et prend comme résultat le maximum de la bougie précédente.

Toutes les valeurs du tableau buystoploss sont 0 par défaut.

Pour commencer, l'i2 n'est mis à zéro qu'une seule fois...