Vars
Numeric HH1;
Numeric LC1;
Numeric HC1;
Numeric LL1;
Numeric RANGE1;
Numeric BuyLine;
Numeric SellLine;
Numeric Time1[50];
Numeric k1[0.5];
Numeric Open1;
Begin
HH1 = HHV(High,Time1);
LC1 = LLV(Close,Time1);
HC1 = HHV(Close,Time1);
LL1 = LLV(Close,Time1);
Open1 = Time=0900 And Open;
RANGE1 = Max(HH1-LC1,HC1-LL1);
BuyLine = Open1 +k1* RANGE1;
SellLine = Open1 - k1*RANGE1;
If(CrossUp(Close,BuyLine)
{
当价格向上突破上轨时,如果当时持有空仓,则先平仓,再开多仓;如果没有持仓,则直接开多仓;
}
If(CrossDown(Close,SellLine)
{
当价格向下突破下轨时,如果当时持有多仓,则先平仓,再开空仓;如果没有持仓,则直接开空仓;
}
End
老师这里有几个问题帮忙解答修改一下,在MQ软件中K1值我定义为一个变量系数,如何要在回测当中修改枚举如何进行操作这么定义是否正确、第二点、我调用今日早盘的开盘价0900;用Open1这么赋值正确么?如果不正确应该怎么写、第三点,MQ中的开仓和平仓函数都有哪些,格式应该如何编写?
这个策略是经典策略Dual_Thrust。如何还有哪里写作方式的错误请帮我指正出来,谢谢老师
回复问题一:
需要优化的参数应该写在Params字段下,参考这样的格式:
Params
Numeric RANGE1(20); //定义参数部分
Vars
Numeric HH1;
Numeric LC1;
..................
回复问题二:
OPEN1编写有误参考: Open1 = ValueWhen(Time=0.0900,Open);
Params
Numeric k1(0.5);
之前的问题解决了,现在提示参数不可以为小数,浮点型的函数是什么?怎么修改?
是的,参数缺省值不支持小数
实现方式:
Params
Numeric k1(0.5);
Begin
BuyLine = Open1 +k1*0.1* RANGE1;

