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

 
законопослушный гражданин:

Les hiboux doivent ouvrir des transactions selon leur algorithme.

si stop, alors le prochain trade avec un martin, et ainsi de suite jusqu'au nombre de multiplications que j'ai spécifié (fonction -OrdersClose = ..... ;).

plus loin, si le hibou est désactivé en même temps que le terminal, il suffit d'appuyer sur le bouton "auto-trade" avec un autre hibou, alors le prochain trade commencera avec le lot de départ, et non avec le dernier augmenté par une martingale.

Il serait également agréable d'y associer un calendrier, mais cette idée vient juste de me venir à l'esprit.

Par exemple, il a été activé à 10h00 le lundi avec le lot de départ, puis il a été désactivé au cours de la journée lorsque certains résultats ont été obtenus, et le mardi matin, il a été activé à 10h00 et a recommencé avec le lot de départ.

tout.

comment traiter cette question jusqu'au bout ?

 
законопослушный гражданин:

comment aller au fond de cette question ?

Tu y réponds, tu y réponds,

mais vous disparaissez et on vous pose à nouveau les mêmes questions.

 
MakarFX:

vous répondez, vous répondez,

mais vous disparaissez et on vous pose à nouveau les mêmes questions.

Vous m'avez montré comment créer une variable globale, j'ai essayé mais j'ai une question.

Je n'y arrive pas encore. J'ai déjà un datetime OpenTime ; - dois-je le remplacer parun datetimeStart ou en plus ?

"et ensuite s'il n'y a pas d'ordres ouverts/fermés plus tard "Démarrer "Lots=Lot ;"- on ne sait pas du tout à quoi se référer ?

Vous avez ensuite demandé une brève description de la logique du hibou, de ce que j'en attends.

votre question comment réinitialiser automatiquement le lot à l'arrêt n'a pas encore reçu de réponse.

 
законопослушный гражданин:

Vous m'avez montré comment créer une variable globale, je l'ai essayé mais j'ai une question

Je ne suis pas encore très doué pour cela. J'ai déjà datetime OpenTime ; - dois-je le remplacer pardatetimeStart ou en plus ?

"et ensuite s'il n'y a pas d'ordres ouverts/fermés plus tard "Démarrer "Lots=Lot ;"- on ne sait pas du tout à quoi se référer ?

Vous m'avez ensuite demandé de décrire brièvement la logique de la chouette, ce que j'en attends.

Lorsque j'ai demandé comment faire pour que le lot automatique se réinitialise à l'arrêt, je n'ai pas obtenu de réponse.

Lorsque j'ai demandé une description de la logique de l'EA, je ne voulais pas parler du problème rencontré, mais des actions générales.

par exemple :

s'il y a un signal, nous ouvrons un ordre

si l'ordre se ferme avec un profit, nous attendrons un nouveau signal.

si l'ordre a été clôturé avec une perte, alors augmentez le lot et attendez un nouveau signal.


Je n'ai pas besoin de votre stratégie, j'ai juste besoin de comprendre ce que l'EA doit faire.

 
законопослушный гражданин:

Vous m'avez montré comment créer une variable globale, je l'ai essayé mais j'ai une question

Je ne suis pas encore très doué pour cela. J'ai déjà datetime OpenTime ; - dois-je le remplacer pardatetimeStart ou en plus ?

"et ensuite s'il n'y a pas d'ordres ouverts/fermés plus tard "Démarrer "Lots=Lot ;"- on ne sait pas du tout à quoi se référer ?

Vous m'avez ensuite demandé de décrire brièvement la logique de la chouette, ce que j'en attends.

Je n'ai pas obtenu de réponse à ma question : comment faire une réinitialisation automatique du lot à l'arrêt ?

Voici la fonction pour commencer :

//+----------------------------------------------------------------------------+
//|  Размер лота/профита и время последней закрытой позиции                    |
//|  1 - возвращает размер лота                                                |
//|  2 - возвращает размер профита с учетом комиссии и свопа                   |
//|  3 - возвращает время закрытия ордера                                      |
//+----------------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0;
   int i=OrdersHistoryTotal();

   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if((OrderSymbol()==_Symbol)&&(OrderMagicNumber()==Magic))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }

si une commande est à perte

   if(GetInfoLastPos(2)<0)
     {Lots=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);}
   else 
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 

Concernant

datetime Start;

int OnInit()
{
   Start=TimeCurrent();
.....................
}
void OnTick()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL("Торговля",0,0,0,Red,"Торговля запрещена");
      Start=TimeCurrent();
      return;
   } 
.....................
}

si l'heure du dernier ordre clôturé est inférieure à l'heure de début du conseiller.

   if(GetInfoLastPos(3)<Start)
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 
MakarFX:

Lorsque j'ai demandé une description de la logique de l'EE, je ne faisais pas référence au problème rencontré, mais aux actions générales

par exemple :

s'il y a un signal, nous ouvrons un ordre

si l'ordre se ferme avec un profit, nous attendrons un nouveau signal.

si l'ordre a été clôturé avec une perte, alors augmentez le lot et attendez un nouveau signal.


Je n'ai pas besoin de votre stratégie, j'ai juste besoin de comprendre ce que l'EA doit faire.

s'il y a un signal, alors nous ouvrons un ordre avec le premier lot

si l'ordre a été clôturé en profit, nous attendrons un nouveau signal.

si l'ordre a été clôturé avec une perte, alors augmentez le lot et attendez un nouveau signal.

si le profit atteint xxxx (dans la devise du dépôt), le conseiller ferme toutes les transactions et remet le lot à sa valeur initiale.

si la perte atteint yuu (dans la devise du dépôt), le conseiller ferme toutes les transactions et réinitialise le lot à celui de départ

si le conseiller a été éteint puis rallumé - s'il y a un signal, nous ouvrons un ordre avec le lot de départ

n'est-ce pas ?

 
законопослушный гражданин:

s'il y a un signal, nous ouvrons un ordre avec un lot de départ

si l'ordre a été clôturé avec un profit, nous attendons un nouveau signal.

Si l'ordre a été clôturé avec une perte, augmentez le lot et attendez un nouveau signal.

si le profit atteint xxxx (dans la devise du dépôt), le conseiller ferme toutes les transactions et remet le lot à sa valeur initiale.

si la perte atteint yuu (dans la devise du dépôt), le conseiller ferme toutes les transactions et réinitialise le lot à celui de départ

si le conseiller a été éteint puis rallumé - s'il y a un signal, nous ouvrons un ordre avec le lot de départ

comme ça ?

Oui, comme ça.

Que se passe-t-il si l'EA a été désactivé, puis réactivé, et qu'il y a un ordre ouvert?

 
MakarFX:

Oui, c'est vrai.

Que se passe-t-il si l'EA est désactivé puis réactivé et qu'il y a un ordre ouvert?

Si l'EA est désactivé, avant de l'être, il ferme tous les ordres ouverts, qu'ils soient en bénéfice ou en perte,

Lorsque la chouette est remise en marche, le "champ vide", le lot de départ, est fermé.

Indicateur qui donne un signal d'ouverture, dans l'exemple c'était le RSI mais je suppose qu'il faut tester trois chouettes différentes sur des indicateurs différents.

Donc si j'ai un exemple de code pour la logique ci-dessus, j'espère que je pourrai retravailler moi-même les codes d'autres EA, ils sont open source et disponibles gratuitement.

 
законопослушный гражданин:

Si les hiboux sont désactivés, avant qu'ils ne le soient, ils clôturent tous les ordres ouverts, qu'ils soient en bénéfice ou en perte,

L'indicateur qui donne les signaux d'ouverture était le RSI, mais je suppose qu'il a été supprimé.

Indicateur qui donne un signal d'ouverture, dans l'exemple c'était le RSI mais je suppose qu'il faut tester trois chouettes différentes sur des indicateurs différents.

Donc si j'ai un exemple de code pour la logique ci-dessus, j'espère que je pourrai retravailler moi-même les codes d'autres EAs, j'espère qu'ils sont open source et disponibles gratuitement.

et owl.s'éteint lorsque vous changez de délai, problèmes de communication, et 100500 et une raison de plus....

l'EA se recharge, c'est sa nature naturelle