找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 19|回复: 0

【MQL4函数】盈利判断模块

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 14:59:00 | 显示全部楼层 |阅读模式
首先我们把之前的挂单模块、开仓模块、K线开盘判断模块拿过来,然后需要写这个模型独有的模块。从以上规则中可以知道海龟交易系统的系统一和系统二是关联的,如果上一次入场是盈利的,那么系统二将不会生效,只有系统一工作。所以我们要写一个模块来判断上一个订单是否盈利。鉴于海龟系统是统一平仓的系统,订单关闭的时间都是一样的,所以我们可以通过检查订单平仓的时间来判断订单是否属于上一次入场。另外我们把四个订单都拆分开来,以便于订单的管理,每一个订单对应一个魔术号(MagicNumber),这里分别用1000、2000、3000、4000来作为四个订单的魔术号,魔术号为1000的订单为首单,其他为加仓单。用于判断上一次入场是否盈利的模块如下:


int magicnumber1=1000;
int magicnumber2=2000;
int magicnumber3=3000;
int magicnumber4=4000;
复制代码int profitjudge(string sym,int peri)
{
   int i;
   datetime time=0;
   int k=0;
   double profit=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==sym &&  OrderMagicNumber()==magicnumber1 &&
(OrderType()==OP_BUY || OrderType()==OP_SELL))
         {
            time=OrderCloseTime();
            break;
         }
      }
   }

   if(time==0)
   {
      return(0);
   }
   while(iTime(sym,peri,k)>=time)
   {
      k++;
   }
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if(OrderSymbol()==sym && OrderCloseTime()>=iTime(sym,peri,k) &&
                        (OrderType()==OP_BUY || OrderType()==OP_SELL) &&
           (OrderMagicNumber()==magicnumber1 ||
OrderMagicNumber()==magicnumber2 ||  
OrderMagicNumber()==magicnumber3 ||  
OrderMagicNumber()==magicnumber4))
         {
            profit=profit+OrderProfit();
         }
         if(OrderCloseTime()<iTime(sym,peri,k))
         {
            break;
         }
      }
   }
   if(profit>0)
   {
      return(1);
   }
   else
   {
      return(0);
   }
}复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 23:32 , Processed in 0.107366 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表