mql5的include库文件中自定义enum类型在指标文件中的调用方式

在mql5中编写指标,调用的include文件中某个类中使用了自定义ENUM枚举类型,如图所示:
在这里插入图片描述
enum Smooth_Method
{
MODE_SMA_, //SMA
MODE_EMA_, //EMA
MODE_SMMA_, //SMMA
MODE_LWMA_, //LWMA
MODE_JJMA, //JJMA
MODE_JurX, //JurX
MODE_ParMA, //ParMA
MODE_T3, //T3
MODE_VIDYA, //VIDYA
MODE_AMA //AMA
};
在图中CXMA类中的GetStartBars函数的第一个参数method需要使用smooth_method枚举类型定义的变量,那么在编写CXMA类中的GetStartBars函数时候,应该将该枚举变量参数,即method参数,先定义为int类型,而不用smooth_method定义,即写成如下形式:
class CXMA
{
public:
int GetStartBars(int Method,int Length,int Phase);
string GetString_MA_Method(int Method);
void XMAPhaseCheck(string PhaseName,int ExternPhase,int Method);
void XMALengthCheck(string LengthName,int ExternLength);
void XMAInit(int Method);
CXMA(){m_init=false;};
~CXMA();
}
而不是如下形式:
int GetStartBars(smooth_method Method,int Length,int Phase);
如果采用第二种写法,在指标文件中传入参数时候将可能出现“can not convert enum”错误,而修改为第一种就可以解决此问题。
然后在指标文件中调用该函数时候,才使用smooth_method类型定义传入GetStartBars函数的参数,如图所示:
在这里插入图片描述
input Smooth_Method HMA_Method=MODE_JJMA;
min_rates_total=XMAO.GetStartBars(HMA_Method ,HLength,HPhase)+1;
当然可以用print(HMA_Method)打印该变量的值,发现它显示的不是HMA_Method枚举类型中的MODE_JJMA,而是MODE_JJMA在Smooth_Method类型中的序号,因此该序号是一个整数,所以用int先定义类中的函数参数也是可以的,不过最后调用函数时候,应该用Smooth_Method枚举类型定义传入的参数变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sirhzx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值