6评论

2收藏

求MT4的赢利变亏损即平仓的代码!

avatar 小飞鱼20123 | 1171 人阅读 | 6 人评论 | 2023-09-07

10金币
    哪位兄弟可以提供一下代码,我的设想是,当开仓后赢利达到一定数额的美元,然后又变成亏损时自动平仓。我自己弄了几次都没有执行,多谢了!

最佳答案

查看完整内容

//-------------------------- static int 开启=0; if(保护开关==true) { if(AllProfit_1>保护启动金额 ) { 开启=1; } if(开启==1 && AllProfit_1=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic_ ...
""
还没有人打赏,支持一下

评论|共 6 个

WA263222

发表于 2023-9-7 15:36:57 | 显示全部楼层

  //--------------------------
      
      static int 开启=0;
      
      if(保护开关==true)
         {
            if(AllProfit_1>保护启动金额 )
               {
                 开启=1;
               }
            
            if(开启==1 && AllProfit_1<=保护金额 )
              {
                平仓();
              }
            
            if( BuyVol_1+SelVol_1==0)
              {
                开启=0;
              }
         }
      
      //--------------------------
void 平仓()
  {
    for(int i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic_1)
           {
            if(OrderType()==0)
              {
               if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),500,0))
                 {
                  Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
                 }
              }
            if(OrderType()==1)
              {
               if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),500,0))
                 {
                  Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
                 }
              }
            if(OrderType()>1)
              {
               if(!OrderDelete(OrderTicket(),0))
                 {
                  Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
                 }
              }
           }
        }
     
  }

WA263222

发表于 2023-9-7 16:50:15 | 显示全部楼层

这个多简单啊,移动止损启动保本点啊

小飞鱼20123

发表于 2023-9-8 10:08:46 | 显示全部楼层

多谢指点,我原来也是这个思路,就是没成功,刚刚测试可以了,谢谢!
static int 开启=0;
      double AllProfit_1=OrderProfit();
      
      if(保护开关==true)
         {
            if(AllProfit_1>保护启动金额 )
               {
                 开启=1;
               }
            
            if(开启==1 && AllProfit_1<=保护金额 )
              {
                CloseALL();
                开启=0;
              }
            
           // if( buys+sells==0)
           //   {
           //     开启=0;
           //   }
         }

WA263222

发表于 2023-9-8 12:53:31 | 显示全部楼层

嗯,有好的思路互相交流

大军

发表于 2023-10-21 18:31:42 | 显示全部楼层

谢谢

老虎要发威

发表于 2024-1-1 13:00:36 | 显示全部楼层

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则