necesito consejo de un profesional de la pesca de arrastre que controle dos posiciones independientemente una de la otra, ¿cómo se puede implementar? - página 6

 
charony:

Así es como funciona.


sólo que no me interesan los criterios de activación de una red de arrastre

Necesito que la red de arrastre maneje cada posición abierta por separado de otras

Esta pista comienza a rastrear sólo las posiciones que están en el plus, no mueve los topes en las posiciones negativas.

"Es posible establecer un arrastre de 50 pips para ambas posiciones,

pero no se cerrarán al mismo tiempo.

Ambas posiciones tienen un arrastre de 50 pips"

Ambas se cerrarán sólo si están en el plus, si una está en el plus y la otra en el menos entonces el stop se moverá sólo en el plus.

 
PozitiF:

No he leído todas las páginas, pero creo que he captado lo esencial.

https://www.mql5.com/ru/articles/1390 aquí, crear un array con órdenes, cuando se crea una orden tomar una magia de alguna parte, puede escribir Magic = 1 en los parámetros de entrada de la EA, por ejemplo, y aumentar el valor en 1 con la siguiente orden abierta,

Si el terminal se bloquea, podrás restaurar la matriz.

El trull que Magic toma como parámetro en la página anterior lo escribí yo.



No es el array correcto, no puedes poner int y double juntos en el mismo array.
 
charony:

El array está mal, no puedes poner int y double juntos en el mismo array.
Se puede, sólo pone un entero antes del punto.
 
PozitiF:
Se puede, sólo pone un entero antes del punto.


doble precio EUR/USD 1.3915 en int 1

int vender = 1, en double vender = 1.0

entonces busca por qué el programa no funciona????????

o peor, el tío "Kolya Margin" aparece.

 

Y por qué pones el precio en int, no he escrito nada de eso en absoluto.

Escribí que puedes poner el número int en una variable de tipo double.

de double y luego de nuevo a int y todo vuelve a funcionar para ti) https://www.mql5.com/ru/forum/136406

 

Pongo int MN= TimeCurrent(); y este OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green);

es decir, se asigna un magik a cada orden

en la red de arrastre después de la selección

int Consejo=Tipo de orden();

if(OrderSymbol()!=Symbol()||Tip>1)continue;

if(OrderMagicNumber()==MN)

Voy a intentarlo ahora.

 

No es así, algo más debe estar mal, estoy hablando de la red de arrastre ahora.

Lo buscaremos.

 
PozitiF:

Y por qué pones el precio en int, yo no he escrito nada de eso ni lo he sugerido en absoluto.

Escribí que puedes poner el número int en una variable de tipo double.

de double y luego de nuevo a int y todo vuelve a funcionar) https://www.mql5.com/ru/forum/136406

precio doble EUR/USD 1,3915 en int 1 y luego de nuevo en doble y se obtiene 1,0.

precio doble EUR/USD 1,3915 =========> doble 1.0

donde laugh??????????????????



int 1------> double 1.0 ------> int 1 probablemente funcione aquí, pero no es genial

 
charony:

No es así, algo más debe estar mal, estoy hablando de la red de arrastre ahora.

Lo buscaré.

Trall funciona al 100%, funciona en casi todos mis 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);
   }
}

Debería arrastrar.

 
//+-----------------------------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----------------------------------------------+

He insertado el código y la red de arrastre funciona.

pero el problema persiste.