Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 282

 

Bonjour à tous les membres du forum.

Des conseils de personnes bien informées ? J'ai un EA qui ouvre des trades sur le signal d'un indicateur, comment prescrire un compteur de signaux de manière programmatique, c'est-à-dire qu'après avoir pris un Take Profit ou fermé un ordre sur un Trailing Stop, l'EA saute les deux signaux suivants et n'ouvre pas de trades.

J'apprécierais votre aide.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   
   double AO = iIchimoku (Symbol(),0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,1); // верхняя граница облака 
   double BO = iIchimoku (Symbol(),0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,1); // нижняя граница облака 

      
   if(Volume[0]>1) return;

   if (AO>BO) // продажа
   {
   if (Open[1]>Close[1] && Close[1] < BO && Open[1]>BO) // продажа

     {
     Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятой
     if(StopLoss >= STOPLEVEL)
          if(StopLoss > 0)
      {
       SL = Price + StopLoss*Point; // вычисляем стоплос
       SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
      }
       else SL = 0;

      if(TakeProfit > 0)
      {
       TP = Price - TakeProfit*Point;
       TP = NormalizeDouble(TP, Digits); 
      }
       else TP = 0;

      { 
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",Magic,0,Red);
      return;
      }
    }
    }
 
alexey1979621:

Bonjour à tous les membres du forum.

Des conseils de personnes bien informées ? J'ai un EA qui ouvre des trades sur le signal d'un indicateur, comment prescrire un compteur de signaux de manière programmatique, c'est-à-dire qu'après avoir pris un Take Profit ou fermé un ordre sur un Trailing Stop, l'EA saute les deux signaux suivants et n'ouvre pas de trades.

J'apprécierais toute aide.


Je ne sais pas ce que je veux, mais veuillez me conseiller sur la manière de le mettre en œuvre.

Et qu'entendez-vous exactement par "sauter des signaux" ?

1) Une transaction virtuelle ? comme si nous ouvrions une position fictive, contrôlions, fermions également la position fictive ( Ilanim) ;

2) Essayez d'utiliser le signal après une certaine période de temps, un nouveau signal peut être reçu dans ХХХ minutes ;

3) Évaluation du signal après un certain nombre de barres? Un nouveau signal peut être reçu après ХХХХ barres ;

..................

Et toute autre demande :

remplacer la construction if(Volume[0]>1) return; elle ne se déclenchera pas toujours déjà en démo, et encore moins en réel ;

N'est-il pas possible de s'en sortir avec une condition de plus ?

if (StopLoss >= STOPLEVEL)         //    if (StopLoss > STOPLEVEL) так не проще?
   if(StopLoss > 0)

la logique n'est pas correcte, else traite la deuxième condition:

if (StopLoss >= STOPLEVEL)
   if (StopLoss > 0){
      SL = Price + StopLoss*Point; // вычисляем стоплос
      SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
   }
   else SL = 0;

et bien d'autres encore...

 
ALXIMIKS:


Je veux quelque chose, je ne sais pas quoi, mais dites-moi comment le mettre en œuvre.

Qu'entendez-vous exactement par "signaux manquants" ?

1) Une transaction virtuelle ? comme si nous ouvrions une position fictive, la contrôlions, la fermions aussi fictivement ( Ilanim) ;

2) Essayez d'utiliser le signal après une certaine période de temps, un nouveau signal peut être reçu dans ХХХ minutes ;

3) Évaluation du signal après un certain nombre de barres ? Un nouveau signal peut être reçu après ХХХХ barres ;

..................

Et toute autre demande :

remplacer la construction if(Volume[0]>1) return; elle ne se déclenchera pas toujours déjà en démo, et encore moins en réel ;

N'est-il pas possible de s'en sortir avec une condition de plus ?

la logique n'est pas correcte, else traite la deuxième condition:

et bien d'autres choses encore...

Je suis un rédacteur novice, c'est-à-dire que je me débrouille tout seul, l'essentiel étant que cela fonctionne. if(Volume[0]>1) fonctionne bien tant sur le réel que sur la démo, et dans le testeur. J'ai écrit mes souhaits très clairement. Une transaction est ouverte en fonction du signal de l'indicateur (j'ai joint la condition d'ouverture de la transaction dans le code). Après que la transaction précédente ait été fermée au niveau du Take Profit et du Trailing Stop, j'ai besoin de sauter 1 ou 2 ou 3 (paramètre ajustable) signaux de l'indicateur, c'est-à-dire ne pas ouvrir une transaction. Je ne sais pas comment le prescrire de manière programmatique, c'est pourquoi je demande de l'aide.
 

Bonjour à tous !) Je me suis récemment intéressé au MQL et j'ai rencontré les premiers problèmes. L'idée est que l'EA ouvre des positions selon la fonction mais ne veut pas les fermer, et donc ces ordres au marché sans aucun stop sont placés jusqu'à la fin de la session de test. La question est de savoir où j'ai fait mon erreur.

Voici un fragment proche :

 if(Level >= 0.000100 && LevelXP>LevelXM && CountSell() > 0)
          {
               for(i=OrdersTotal()-1; i >= 0; i--)
               {
                   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
                   {
                       if(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                          OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
                   }
               }
          }
 
ElhoroS:

Bonjour à tous !) Je me suis récemment intéressé au MQL et j'ai rencontré les premiers problèmes. L'idée est que l'EA ouvre des positions selon la fonction mais ne veut pas les fermer, et donc ces ordres au marché sans aucun stop sont placés jusqu'à la fin de la session de test. La question est de savoir où je me suis trompé.


1) Le problème se trouve peut-être dans les conditions de clôture (vous l'avez donné implicitement).

2) Vous n'avez fermé que l'OP_SELL dans ce code (avez-vous pensé à implémenter les conditions d'achat ? Assurez-vous que les conditions de fermeture sont correctes).

3) Lors de la vérification par force brute, vous ne vérifiez pas la paire de devises et le cadre temporel (pourquoi devrais-je le faire à nouveau ?).

4) Il n'y a pas de vérification des requêtes (dans le testeur de stratégie, tout devrait être correct, mais sur le compte démo ou réel, ce n'est pas toujours le cas).

5) Comme Artemis artmedia70 l'a déclaré, MarketInfo(Symbol(),MODE_ASK) est meilleur queAsk - il donne des prix plus pertinents.

 
ALXIMIKS:


5) Comme Artemis l'a dit, MarketInfo(Symbol(),MODE_ASK) sera meilleur queAsk - desprix plus pertinents seront donnés.

Non... assez avec les insultes...
 
artmedia70:
Nah... assez avec les insultes...


Oui, je me souviens de la dernière situation, Artyom, je suis désolé - ça a collé.
 
ALXIMIKS:

Oui, je me souviens de la situation passée, Artem, je suis désolé - ça a collé.
Artyom+Femis=Artemis ; Sois fier, Artyom ! C'est une confession ! Je vous souhaite de continuer ainsi !
 
borilunad:
Artyom + Themis = Artemis ; Sois fier, Artyom ! C'est une confession ! Je vous souhaite de continuer !
 
artmedia70:
D'où viennent les photos et comment faites-vous ? Certes, ces personnages ne représentent pas Thémis.
Raison: