//=========除权换月相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
同时又设置了当日如果有交易了,不能平仓, if( Date>LastEntryDate) //当日不能平仓
那么除权换月当天,早上开盘就自动进行了换月,但当天又出现了交易信号,因为早盘有过交易了,不能再平仓操作,这个如何规避?
说的有道理,自己水平还没有到达,搞不定。这是简单四周交易策略,如何修改?
Params
Numeric length1(45);
Numeric length2(45);
Numeric lots(3);
Vars
Numeric highline;
Numeric lowline;
Events
OnInit()
{
//=========除权换月相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
}
onBar(ArrayRef<Integer> indexs)
{
highline=Highest(High[1],length1);
lowline=Lowest(Low[1],length2);
PlotNumeric(\"highline\",highline);
PlotNumeric(\"lowline\",lowline);
If(CurrentBar >=0)//
{
If(MarketPosition<>1 And High>=highline)
if( Date>LastEntryDate) //当日不能平仓
{
Buy(lots,Max(Open,highline));//开多单
Return;
}
If(MarketPosition<>-1 And Low<=lowline)
if( Date>LastEntryDate) //当日不能平仓
{
SellShort(lots,Min(Open,lowline));//买入空单
Return;
}
}
}
如果用了自动换月信号,那么开仓价格开仓日期开仓bar等相关数据就只能自己定义一个状态容器来记录了,系统函数不要用