需要一个拖网专业人员的建议,即控制两个位置相互独立,如何实现? - 页 6

 
charony:

这大概就是它的工作原理。


只是我对启动拖网的标准不感兴趣。

我需要拖网来分别处理每一个未结头寸和其他头寸

这条线索只开始搜索处于正数的位置,它不会在负数位置上移动止损。

"可以为这两个位置设置50个点的拖网。

但它们不会同时关闭。

两个位置都有50点的拖累"

只有当两者都在正数时才会关闭,如果一个在正数,另一个在负数,那么止损将只在正数的位置移动。

 
PozitiF:

我没有读完所有的页面,但我想我已经知道了它的要点。

https://www.mql5.com/ru/articles/1390,用订单创建一个数组,当你创建一个订单时,从某个地方取一个魔术,你可以在EA的输入参数中写上魔术=1,例如,在下一个开仓订单中增加1的值。

如果终端崩溃了,你将能够恢复阵列。

在我写的前一页中,Magic作为参数的trull。



这不是正确的数组,你不能把int和double放在同一个数组中。
 
charony:

这个数组是错误的,你不能把int和double放在同一个数组中。
你可以,它只是在点的前面放一个整数。
 
PozitiF:
你可以,它只是在点的前面放一个整数。


双重价格 EUR/USD 1.3915 in int 1

int sell = 1, in double sell = 1.0

然后寻找程序不工作的原因????????

或者更糟的是,"科利亚-马金 "叔叔出现了。

 

而且你为什么要把价格放在int里,我根本没有写过任何关于这个的内容,也没有建议过。

我写道,你可以把int数放在一个double类型的变量中。

从双倍数再回到int,对你来说都是有效的)https://www.mql5.com/ru/forum/136406

 

我把int MN=TimeCurrent(); and this OrderSend(Symbol(),OP_BUY,Lots_New,Ask,2,0,0,NULL,MN,0,Green)。

也就是说,每个订单都有一个魔法。

在选择后的拖网中

int Tip=OrderType()。

如果(OrderSymbol()!=Symbol()||Tip>1)继续。

如果(OrderMagicNumber()==MN)

我现在要试试。

 

不是的,一定是其他方面出了问题,我现在说的是拖网。

我们将寻找它。

 
PozitiF:

而且你为什么要把价格放在int里,我根本没有写过任何关于这个的东西,也没有建议过。

我写道,你可以把int数放在一个double类型的变量中。

从double再回到int,又都能正常工作了)https://www.mql5.com/ru/forum/136406

双重价格EUR/USD 1.3915进入int 1,然后再次回到 双重价格,你会得到 1.0

双重价格 欧元/美元 1,3915 =========> 双重 1.0

其中笑??????????????????



int 1------> double 1.0 ------> int 1在这里可能会起作用,但它并不酷。

 
charony:

不是的,一定是其他方面出了问题,我现在说的是拖网。

我去找找看。

Trall是100%有效的,它几乎在我所有的EA中都有效。

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);
   }
}

它应该是拖网式的。

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

我插入了代码,拖网工作了。

但问题仍然存在。