请教大佬,我每次都必须在公式里修改交易手数,感觉很麻烦,怎么能在参数优化那里可以直接任意改手数呢?谢谢
Params
Numeric Ma_First_length(2);
Numeric Ma_Second_length(1);
Numeric Ma_Third_length(3);
Vars
Series<Numeric> Ma_First;
Series<Numeric> Ma_Second;
Series<Numeric> Ma_Third;
Bool dic_filter;
Series<Numeric> Vibration;
Series<Numeric> spread;Series<Bool> g;
Series<Bool> cro_over;
Series<Bool> cro_und;
Events
OnInit()
{
//=========除权换月相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
//=========交易相关设置==============
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
//
IF(Date>=20240202)Return;
Vibration = (Highest(High,Vibration_length)-Lowest(Low,Vibration_length))/Lowest(Low,Vibration_length);
Commentary(\"Vibration\"+Text(Vibration));
Ma_First = AverageFC(Close,Ma_First_length);
Ma_Second = AverageFC(Close,Ma_Second_length);
//PlotNumeric(\"Ma_First\",Ma_First);
//PlotNumeric(\"Ma_Second\",Ma_Second);
//PlotNumeric(\"Ma_Third\",Ma_Third);
If (Time >= 155500*0.000001 And Time <= 200500*0.000001 or Time >= 032500*0.000001 And Time <= 080500*0.000001)
{
Commentary(\"时间过滤\");
//PlotBool(\"aaa\",(Time >= 145500*0.000001 And Time <= 205500*0.000001));
if(MarketPosition ==1)
{
Sell(0,Open);
}
if(MarketPosition ==-1)
{
BuyToCover(0,Open);
}
Return;
}
If (Close[1] > Ma_First[1]) dic_filter = True;
Else dic_filter = False;
If(MarketPosition == 0 And Vibration>Vibration_val)
{
If(dic_filter And cro_over[1])
{
Buy(1,Max(Open,Close[1]));
buylasthigh=EntryPrice;
}
Else If(Not dic_filter And cro_und[1])
{
SellShort(1,Min(Open,Close[1]));
selllastlow=EntryPrice;
}
定义一个参数,然后在交易命令里填这个参数
比如 numeric lots(1);
然后
buy(lots,price);类似这样