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

 
sergey_r:

Bonjour à tous. Les gars, j'ai une condition pour trouver un maximum : mais dans un couloir.

pour (int max=1 ; max<1000 ; max++)
if (High[max+1] < High[max] && High[max] > High[max-1] && Low[max+1] < Low[max] && Low[max] > Low[max-1] &&
High[max] > low_level_s && High[max] < high_level_s) break ;

cela ne fonctionne pas.
Si j'enlève le couloir, tout va bien :

pour (int max=1 ; max<1000 ; max++)
if (High[max+1] < High[max] && High[max] > High[max-1] && Low[max+1] < Low[max] && Low[max] > Low[max-1] ) break ;

Quel pourrait être le problème... ?

Je suggère le script "max_sergey_r".
Le script se trouve dans le dossier "scripts" du terminal (par exemple, C:\Program Files\ FX Trader\experts\scripts).
Le script peut être placé sur le graphique de n'importe quel instrument, quelle que soit la période.
Dossiers :
 
Roger:
Ouvrez l'indicateur dans deux fenêtres et définissez la ligne non désirée comme la couleur de fond.
Si les valeurs de ligne ont un ordre différent, la moitié de la sous-fenêtre sera un espace vide lorsqu'elle sera affichée de cette manière. Actuellement, je dois afficher chaque valeur de l'indicateur principal par le biais d'un indicateur supplémentaire avec sa propre sous-fenêtre. Par conséquent, la fenêtre principale est chargée en arrière-plan pour CHAQUE sous-fenêtre ouverte de l'indicateur supplémentaire, d'où la charge supplémentaire sur le processeur. Ce n'est pas critique, mais je voulais la "perfection" :)
 

5e forum // suis-je le seul à obtenir une erreur ?

 
abolk:

5e forum // suis-je le seul à obtenir une erreur ?


Probablement oui.
 

Les gens, aidez-moi à comprendre ce que c'est ! Mon EA est conçu pour sortir un oplot, et si le prix ne l'atteint pas, mais se retourne vers le niveau de son stop, l'oplot doit être supprimé. Mais sur le testeur, il arrive qu'un oplot soit sorti et immédiatement supprimé avant même d'atteindre le stop. Quel est le problème ? Voici une capture d'écran et le code de suppression.

Voici le code :

     if (Bid>SL)                                                              // Если Bid>уровня стопа
      {
      for (k = OrdersTotal()-1; k >= 0; k--)
         {
         OrderSelect(k,SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {
            if (OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
               {
               if(OrderDelete(OrderTicket())==true)
                  {
                  Iterration--;
                  Alert ("Ордер SellStop удален.");
                  }
                }
             }
          }
       }

Quelle est l'erreur ici ?

 
vovan-gogan:

Et voici le code :

Quelle est l'erreur ici ?

Il n'y a pas d'erreur dans le code, seulement de la logique. Bid>SL est vérifié et tous les ordres en attente sont supprimés (l'origine de SL n'est pas claire dans le code). Si quelque chose d'autre est nécessaire, l'objectif est énoncé étape par étape dans un langage compréhensible.
 

Je veux construire un conseiller expert pour différentes échéances.

Je veux construire un EA pour différentes échéances, envoyez-moi un "poisson".

meilleures salutations

 
splxgf:
Aucune erreur dans le code, seulement des erreurs de logique. Bid>SL est vérifié et tous les ordres en attente sont supprimés (l'origine de SL n'est pas claire dans le code). Si quelque chose d'autre est nécessaire, l'objectif est énoncé étape par étape dans un langage compréhensible.

Le SL est fixé au niveau de la MA20 avec 3 bougies en arrière.
 
vovan-gogan:

Les gens, aidez-moi à comprendre ce que c'est ! Mon EA est conçu pour sortir un oplot, et si le prix ne l'atteint pas, mais se retourne vers le niveau de son stop, l'oplot doit être supprimé. Mais sur le testeur, il arrive qu'un oplot soit sorti et immédiatement supprimé avant même d'atteindre le stop. Quel est le problème ? Voici une capture d'écran et le code de suppression.

Voici le code :

Quelle est l'erreur ici ?


remplacer

if (Bid>SL)
{

à l'adresse

if (Bid>SL)
{
   Print("Bid=",Bid," SL=",SL);

et voyez ce que dit le journal.

 
PapaYozh:


remplacer

à

et voir ce que dit le journal de bord.


Quel est l'intérêt ? Le niveau SL est correct. Lorsque je règle la variable SL sur MA20 avec un décalage de 3, je sors le niveau SL par Alert et il est toujours au bon niveau. Je ne sais pas pourquoi l'ordre est supprimé avant d'atteindre le niveau SL.