precisam de conselhos de um profissional de arrasto que controla duas posições independentemente uma da outra, como pode ser implementado? - página 6

 
charony:

É assim que funciona.


somente não estou interessado nos critérios para ativar a rede de arrasto

eu preciso de arrasto para lidar com cada posição aberta separadamente das outras

Esta trilha começa a arrasto somente nas posições que estão no plus, não se move para nas posições negativas.

"É possível definir uma rede de arrasto de 50 pips para ambas as posições,

mas eles não fecharão ao mesmo tempo.

Ambas as posições têm uma rede de arrasto de 50 pips".

Ambos fecharão somente se estiverem no mais, se um estiver no mais e o outro no menos, então a parada se moverá somente no mais.

 
PozitiF:

Não li todas as páginas, mas acho que tenho a essência do assunto.

https://www.mql5.com/ru/articles/1390 aqui, crie um array com pedidos, quando você cria um pedido pegue uma mágica de algum lugar, você pode escrever Magic = 1 nos parâmetros de entrada da EA, por exemplo, e aumente o valor em 1 com o próximo pedido aberto,

Se o terminal cair, você será capaz de restaurar a matriz.

O tríptico que a Magia toma como parâmetro na página anterior que escrevi.



Não é a matriz correta, você não pode colocar int e dobrar juntos na mesma matriz.
 
charony:

A matriz está errada, você não pode colocar int e dobrar juntos na mesma matriz.
Você pode, ele apenas coloca um inteiro à frente do ponto.
 
PozitiF:
Você pode, ele apenas coloca um inteiro à frente do ponto.


preço duplo EUR/USD 1,3915 em 1 int

int venda = 1, em vendadupla = 1,0

então procure por que o programa não funciona????????

ou pior, o tio "Kolya Margin" vem junto.

 

E por que você colocaria o preço em int, eu não escrevi nada sobre isso ou sugeri nada sobre isso.

Eu escrevi que você pode colocar o número int em uma variável do tipo duplo.

do dobro para a int de novo e tudo funciona novamente para você) https://www.mql5.com/ru/forum/136406

 

Eu coloquei int MN= TimeCurrent(); e este OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green);

ou seja, um magik é atribuído a cada pedido

na rede de arrasto após a seleção

int Tip=OrderType();

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

if(OrderMagicNumber()==MN)

Vou tentar agora.

 

Não é não, algo mais deve estar errado, estou falando agora da rede de arrasto.

Vamos procurá-lo.

 
PozitiF:

E por que você colocaria o preço em int, eu não escrevi nada sobre isso ou sugeri nada sobre isso.

Eu escrevi que você pode colocar o número int em uma variável do tipo duplo.

do dobro para a int de novo e tudo funciona novamente) https://www.mql5.com/ru/forum/136406

dobro do preço EUR/USD 1,3915 para o int 1 e depois de novo para odobro e você recebe 1,0.

preço duplo EUR/USD 1.3915 =========> duplo 1,0

onde risos??????????????????



int 1------> duplo 1.0 ------> int 1 provavelmente funcionará aqui, mas não é legal

 
charony:

Não é não, algo mais deve estar errado, estou falando agora da rede de arrasto.

Vou procurar por ele.

Trall está 100% funcionando, funciona em quase todos os meus 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);
   }
}

Deve ser arrasto.

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

Eu inseri o código, a rede de arrasto funciona.

mas o problema persiste.