设为首页 收藏本站 切换语言

怎么设止损在固定价位,不管是买单还是卖单,买单以第一笔止损价格来设置其他止损,买单也是,请大神指教

| 发表于 2023-3-5 20:05:53 | 显示全部楼层 |复制链接
请各位大神赐教
图片2.png
举报

评论 使用道具

精彩评论6

恶狠狠QWQ
D
| 发表于 2023-3-5 22:04:04 | 显示全部楼层
在第一单开启时用一个参数记录实时价格,然后在出单的地方进行对比判断
Ask是买 Bid是卖
举报

点赞 评论 使用道具

willyangget
DD
| 发表于 2023-3-5 23:12:32 | 显示全部楼层
OrderSelect找到第一张订单,SLP=OrderStoploss(); break; 找到止损价,后面再OrderModify就可以了
举报

点赞 评论 使用道具

天下有道
DD
 楼主 | 发表于 2023-3-12 18:54:55 | 显示全部楼层
恶狠狠QWQ 发表于 2023-3-5 22:04
在第一单开启时用一个参数记录实时价格,然后在出单的地方进行对比判断
Ask是买 Bid是卖 ...

麻烦能具体点吗?怎么改呀?新手有些地方不是很懂
源码如下
for(i=0; i<=OrdersTotal()-1; i++)
     {
      result=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
        {
         if(OrderType()==OP_BUY)
           {
            buys++;
            LastBuyPrice=OrderOpenPrice();
            tol=tol+OrderLots();
            top=top+OrderLots()*OrderOpenPrice();
            if(SLp==0 && SL>0) SLp=OrderOpenPrice()-SL*db*Point;
            }
         if(OrderType()==OP_SELL)
           {
            sells++;
            LastSellPrice=OrderOpenPrice();
            tol=tol+OrderLots();
            top=top+OrderLots()*OrderOpenPrice();
            if(SLp==0 && SL>0) SLp=OrderOpenPrice()+SL*db*Point;
           }
        }
     }
//---------------------------------------------------------------------------------------------
//----修改订单

   for(i=0; i<=OrdersTotal()-1; i++)
     {
      result=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MagicNumber) continue;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
      
      
        {
         if(OrderType()==OP_BUY)
           {
            if(SLp>0 && DoubleToStr(OrderStopLoss(),Digits)!=DoubleToStr(SLp,Digits))
              {
               result=OrderModify(OrderTicket(),OrderOpenPrice(),SLp,OrderTakeProfit(),0,Green);
               if(result<0) Print("BUY 止损修改出错"+DoubleToStr(OrderStopLoss(),Digits)+"-->"+DoubleToStr(SLp,Digits));
              }
           }
         if(OrderType()==OP_SELL)
           {
            if(SLp>0 && DoubleToStr(OrderStopLoss(),Digits)!=DoubleToStr(SLp,Digits))
              {
               result=OrderModify(OrderTicket(),OrderOpenPrice(),SLp,OrderTakeProfit(),0,Red);
               if(result<0) Print("SELL 止损修改出错"+DoubleToStr(OrderStopLoss(),Digits)+"-->"+DoubleToStr(SLp,Digits));
              }
              }

           }
    }
举报

点赞 评论 使用道具

恶狠狠QWQ
D
| 发表于 2023-3-12 20:33:54 | 显示全部楼层
天下有道 发表于 2023-3-12 18:54
麻烦能具体点吗?怎么改呀?新手有些地方不是很懂
源码如下
for(i=0; i0) SLp=OrderOpenPrice()-SL*db*Po ...

我也不是很看得懂,但是我用的代码就是定义一个新的参数在第一单的时候记录下那时候的黄金现价,然后再在判断是否出单的地方加一个或,然后再判断那时候记录的价格和现在的价格是否达到了你的止损预期
举报

点赞 评论 使用道具

天下有道
DD
 楼主 | 发表于 2023-3-13 20:51:14 | 显示全部楼层
willyangget 发表于 2023-3-5 23:12
OrderSelect找到第一张订单,SLP=OrderStoploss(); break; 找到止损价,后面再OrderModify就可以了 ...

大神能具体说说怎么改吗?
举报

点赞 评论 使用道具

willyangget
DD
| 发表于 2023-3-18 20:26:15 | 显示全部楼层
天下有道 发表于 2023-3-13 20:51
大神能具体说说怎么改吗?

   double 空单止损=0;

   for(int i=0; i<=OrdersTotal()-1; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
           {
            if(OrderType()==OP_SELL)
              {
               空单止损=OrderStopLoss();
               break;
              }
           }
     }
   Comment(空单止损);

买单改一改就行
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

天眼云VPS
简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)