besoin de conseils d'un pro du chalut qui contrôle deux positions indépendamment l'une de l'autre, comment le mettre en œuvre ? - page 6

 
charony:

C'est à peu près comme ça que ça marche.


seulement les critères d'activation du chalut ne m'intéressent pas.

J'ai besoin que le chalut traite chaque position ouverte séparément des autres

Cette piste commence à traîner uniquement les positions qui sont dans le plus, elle ne déplace pas les arrêts sur les positions négatives.

"Il est possible de définir un chalutage de 50 pips pour les deux positions,

mais ils ne se fermeront pas en même temps.

Les deux positions ont un trawl de 50 pips".

Les deux ne fermeront que s'ils sont dans le plus, si l'un est dans le plus et l'autre dans le moins, le stop ne bougera que dans le plus.

 
PozitiF:

Je n'ai pas lu toutes les pages, mais je pense en avoir saisi l'essentiel.

https://www.mql5.com/ru/articles/1390 ici, créez un tableau avec des ordres, quand vous créez un ordre prenez une magie de quelque part, vous pouvez écrire Magic = 1 dans les paramètres d'entrée d'un EA, par exemple, et augmenter la valeur de 1 avec le prochain ordre ouvert,

Si le terminal tombe en panne, vous pourrez restaurer le tableau.

Le trull que Magic prend comme paramètre sur la page précédente que j'ai écrite.



Ce n'est pas le bon tableau, vous ne pouvez pas mettre int et double dans le même tableau.
 
charony:

Le tableau est faux, vous ne pouvez pas mettre int et double dans le même tableau.
Tu peux, ça met juste un nombre entier avant le point.
 
PozitiF:
Tu peux, ça met juste un nombre entier avant le point.


double prix EUR/USD 1.3915 dans int 1

int sell = 1, en double sell = 1.0

puis chercher à savoir pourquoi le programme ne fonctionne pas ????????.

ou pire, l'oncle "Kolya Margin" arrive.

 

Et pourquoi mettre le prix en int, je n'ai rien écrit à ce sujet du tout.

J'ai écrit que vous pouvez mettre le nombre int dans une variable de type double.

de double puis de nouveau de int et tout fonctionne à nouveau pour vous) https://www.mql5.com/ru/forum/136406

 

J'ai mis int MN= TimeCurrent(); et cet OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green) ;

c'est-à-dire qu'un magik est attribué à chaque commande

dans le chalut après la sélection

int Tip=OrderType() ;

si(OrderSymbol()!=Symbol()||Tip>1)continuer ;

si(OrderMagicNumber()==MN)

Je vais essayer maintenant.

 

Non, il doit y avoir un autre problème, je parle du chalut maintenant.

Nous allons le chercher.

 
PozitiF:

Et pourquoi mettre le prix en int, je n'ai rien écrit à ce sujet ou suggéré du tout.

J'ai écrit que vous pouvez mettre le nombre int dans une variable de type double.

de double puis de nouveau de int et tout fonctionne à nouveau) https://www.mql5.com/ru/forum/136406

prix double EUR/USD 1.3915 dans int 1 et ensuite de nouveau dans double et vous obtenez 1.0.

double prix EUR/USD 1,3915 =========> double 1.0

où rire ??????????????????



int 1------> double 1.0 ------> int 1 va probablement fonctionner ici, mais ce n'est pas cool

 
charony:

Non, il doit y avoir un autre problème, je parle du chalut maintenant.

Je vais le chercher.

Trall fonctionne à 100%, il fonctionne dans presque tous mes EAs.

int Trall = 50;

int MN= TimeCurrent();

OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green);

int Tip=OrderType();

if(OrderSymbol()!=Symbol()||Tip>1)continue;
for(int i = 0; i<OrderTotals(); i++){
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true){
      if(OrderMagicNumber()==MN) TrailingStop(Trall, 5, MN);
   }
}

Ça devrait être un chalut.

 
//+-----------------------------trailingstop----------------------------------------------+
 total=OrdersTotal();
    for(int n=0;n<total;n++)
     {
      if(OrderSelect(n, SELECT_BY_POS, MODE_TRADES) == true)
         { 
         int Tip=OrderType();                  
         if(OrderSymbol()==Symbol()&&OrderType()==Tip)
            {
                MN = OrderMagicNumber();
                TrailingStop(level_ts, level_step , MN);
            } 
         }    
      }
 
  

   
   return;                             // exit start()
  }
//+-----------------------------start end----------------------------------------------+

void TrailingStop(int level_ts,int level_step , int MN) 
{
   int ot, err, quantity_orders, cx;
   bool fm;
   double op, as, bd, pt, sl, tp, ut;
//----
   quantity_orders = OrdersTotal();
   if(quantity_orders >= 0) {
      for(cx = 0; cx < quantity_orders; cx++) {
         if(!OrderSelect(cx, SELECT_BY_POS, MODE_TRADES)) {
            Print("Error: SimpleTrailing(), OrderSelect: " + cx + ". Îøèáêà: " + GetLastError());
         }
         if (OrderMagicNumber()==MN ) 
         {   
            pt = MarketInfo(OrderSymbol(), MODE_POINT);
            bd = MarketInfo(OrderSymbol(), MODE_BID);
            as = MarketInfo(OrderSymbol(), MODE_ASK);
            op = OrderOpenPrice();
            ot = OrderType();
            sl = OrderStopLoss();
            tp = OrderTakeProfit();
            ut = level_ts + level_step;
         
            if(ot == OP_BUY) {
               if(sl == 0 || sl < op) {                              
                  if(op <  (bd - ut * pt)) {                         
                     sl = bd - level_ts * pt;
                  }
               }
               else {
                  if(sl < (bd - ut * pt) && bd > (op + ut * pt)) {
                     sl = bd - level_ts * pt;
                  }
               }
            }
            if(ot == OP_SELL) {
               if(sl == 0 || sl > op) {
                  if(op > (as + ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
               else {
                  if(sl > (as + ut * pt) && as < (op - ut * pt)) {
                     sl = as + level_ts * pt;
                  }
               }
            }
            if (sl != OrderStopLoss()) {
               op = NormalizeDouble(op, Digits);
               tp = NormalizeDouble(tp, Digits);
               sl = NormalizeDouble(sl, Digits);
               fm = OrderModify(OrderTicket(), op, sl, tp, 0, CLR_NONE);
               
            }
         }
      }
   }
}

//+-----------------------------trailingstop end----------------------------------------------+

J'ai inséré le code, le chalut fonctionne.

mais le problème persiste.

Raison: