Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1659

 
Une dernière chose - lorsque je lance l'EA, un ordre s'ouvre sur la première bougie, même s'il n'y a pas de signaux à ce moment-là. Comment peut-on l'enlever ?
Dossiers :
 
artem artem prix d'ouverture dans la même période - 29 ordres ?

+ plusieurs ordres ont explicitement manqué leur prix d'ouverture s'ils ont été testés par des ticks. J'ai joint une capture d'écran qui montre

Essayez

Dossiers :
artem.mq4  13 kb
 
Maintenant, il ouvre le même nombre d'ordres à la fois par ticks et par prix d'ouverture. 23ordres au total pendant la même période de temps. Seulement maintenant, pour une raison quelconque, j'entre à partir de la 7ème bougie et non de la 4ème.
 
artem artem ordres au total pendant la même période de temps. Seulement maintenant, nous entrons par la 7ème bougie, et non la 4ème.

J'ai supprimé tout ce qui n'était pas nécessaire... cela semble fonctionner comme il se doit.

Dossiers :
artem.mq4  11 kb
 
Pouvez-vous me dire s'il existe un moyen de délimiter les chaînes de paramètres EA dans le terminal afin qu'elles ne puissent pas être effacées ? Si vous écrivez extern string dans le code, cela vous permet de modifier la chaîne, et si vous la supprimez accidentellement, vous devez appuyer sur "reset" pour la restaurer, mais alors tous les paramètres sont réinitialisés. Ils peuvent bien sûr être sauvegardés au préalable dans un fichier, mais je suis juste curieux de savoir s'il est possible de faire une "table de pierre").
 

Vérifié, tant sur les ticks que sur le prix d'ouverture... RA-BO-TA-ET !!!!

MakarFX, merci beaucoup ! !! Cela fait deux semaines que je m'amuse avec ce puzzle, en vain jusqu'à aujourd'hui. Merci beaucoup, encore une fois ! Il me reste littéralement quelques clarifications à apporter, et je ne vous retiendrai pas plus longtemps, tant votre temps a été gaspillé. En fait, voici ce qui m'intéresse :


1) Si je comprends bien, si je veux changer le nombre de "chandeliers de confirmation", il suffit de remplacer un chiffre par un autre dans la constante, et c'est tout ?

void OnTick()
  {
//---
   StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); 
   //---
   if(newbar!=Time[0])
     {
      if(CheckForOpen()!=Start)
        {Start=CheckForOpen(); cnt=1;}
      else
        {cnt+=1;}
      //---
      if(cnt==8)
        {
         // Открытие ордера по методу Пуриа
         if(CheckForOpen()==0) // Если сигнал для покупок 
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");}
              else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1) // Если сигнал для продаж 
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");}
              else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];
     }
  }

Lorsque je lance le Conseiller Expert, le premier ordre de VENTE est ouvert sur le premier chandelier, même s'il n'y a pas de signaux. Cela signifie que ce tout premier ordre est redondant, et que l'EA ne doit pas ouvrir une transaction immédiatement au premier ordre, simplement parce que l'EA vient d'être lancée. Comment cela pourrait-il être réparé ? J'ai l'impression que c'est Init qui est responsable de cela et que je devrais simplement le changer en "false", ou supprimer complètement cet Init ?

bool OrderBuy = true, OrderSell = true, Order = false, Init = true;

Enfin, si je laisse le système tel quel et que je l'utilise pour négocier plusieurs paires de devises à la fois, fonctionnera-t-il comme il le devrait ? Ou bien je dois prescrire quelque chose d'autre dans le code, pour qu'il n'y ait pas de bogues et ainsi de suite. En particulier, si cet EA peut fonctionner sur plusieurs paires de devises à la fois ?

En fait, c'est tout ce qui m'intéresse, mais quoi qu'il en soit, merci encore ! Si je l'avais fait moi-même, je ne sais pas combien de temps cela aurait pris).

 
artem artem #:

Vérifié, tant sur les ticks que sur le prix d'ouverture... RA-BO-TA-ET !!!!

MakarFX, merci beaucoup ! !! Cela fait deux semaines que je m'amuse avec ce puzzle, en vain jusqu'à aujourd'hui. Merci beaucoup, encore une fois ! Il me reste littéralement quelques clarifications à apporter, et je ne vous retiendrai pas plus longtemps, tant votre temps a été gaspillé. En fait, voici ce qui m'intéresse :


1) Si je comprends bien, si je veux changer le nombre de "chandeliers de confirmation", il suffit de remplacer un chiffre par un autre dans la constante, et c'est tout ?

Lorsque je lance le Conseiller Expert, le premier ordre de VENTE est ouvert sur le premier chandelier, même s'il n'y a pas de signaux. Cela signifie que ce tout premier ordre est redondant, et que l'EA ne doit pas ouvrir une transaction immédiatement au premier ordre, simplement parce que l'EA vient d'être lancée. Comment cela pourrait-il être réparé ? J'ai l'impression que c'est Init qui est responsable de cela et que je devrais simplement le changer en "false", ou supprimer complètement cet Init ?

Enfin, si je laisse le système tel quel et que je l'utilise pour négocier plusieurs paires de devises à la fois, fonctionnera-t-il comme il le devrait ? Ou bien je dois prescrire quelque chose d'autre dans le code, pour qu'il n'y ait pas de bogues et ainsi de suite. En particulier, si cet EA peut fonctionner sur plusieurs paires de devises à la fois ?

En fait, c'est tout ce qui m'intéresse, mais quoi qu'il en soit, merci encore ! Si j'avais essayé moi-même, je ne sais pas combien de temps cela prendrait).

1) Oui, ce sont les valeurs du nombre de "bougies de confirmation" .

2) Non, le premier ne s'ouvre pas, seulement après un nombre donné de "bougies de confirmation" .

3) Changer le magik et le mettre sur n'importe quelle paire

Il est préférable de faire du magik une variable externe.

 
Ivan Butko #:
Pouvez-vous me dire s'il existe un moyen de délimiter les chaînes de paramètres EA dans le terminal afin qu'elles ne puissent pas être effacées ? Si vous écrivez extern string dans le code, cela vous permet de modifier la chaîne, et si vous la supprimez accidentellement, vous devez appuyer sur "reset" pour la restaurer, mais alors tous les paramètres sont réinitialisés. Ils peuvent, bien sûr, être conservés dans un fichier d'ensemble, mais je suis juste curieux de savoir s'il est possible de faire un "tableau de pierre").
Faire un ENUM
 
MakarFX #:
Faites le ENUM

Je vais essayer, merci.

 
Ivan Butko #:

Je vais essayer, merci.

enum MODE
  {
   MODE_1=1,    // Мертвая строка
  };
//--- input parameters
input MODE mode= MODE_1; // Эта строка