我现在用的图表交易,比较方便,又便于回测,但总是有些小问题
比如,出仓时间无法控制到秒数,例如我想在尾盘14:59:50秒出仓,但是实际成交中无法做到,是否必须用到A函数?
您好,TB实盘用户,绝大多数应该都是使用图表信号做交易的。收盘前平仓问题,只要想想办法都是可以解决的。图表信号可能会有的问题,就是历史回测时,是无法结合机器时间来做判断,所以会导致信号消失,如果您确定收盘前一定能平得掉,那就直接把历史回测的按收盘价平仓信号标上即可。
你好 请问我想在尾盘14:59:50秒出仓,请问该怎么处理?用1分钟的close成交肯定是会出问题的,因为当时所在的BAR任何更新的时间都是close
用图表指令也能写,但图表信号价格未必就是14:59:50当时的价格,这里面会有一点小小误差,影响的也只是回测结果,不影响实际结果。具体编写要结合自己的策略和使用的数据时间周期来考虑。
我写了个简单例子,是5分钟叠加一个大周期的场景,策略也是虚构的,不具备任何价值。我想说的是,实际怎么写真的要结合策略来具体分析,无法一概而论。这段代码随手写的,未经认真测试,只当写法参考。
Params
Numeric Len1(5);
Numeric Len2(20);
Vars
Series<Numeric> ma1;
Series<Numeric> ma2;
Series<bool> tradeOK;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[1:1]
{
ma1 = Average(close,5);
ma2 = Average(close,20);
PlotNumeric(\"ma1\",ma1);
PlotNumeric(\"ma2\",ma2);
}
If(time==0.21 or time==0.09) tradeOk=True;
Numeric hh = Highest(High,20);
Numeric ll = Lowest(Low,20);
If(tradeOK And MarketPosition<>1 And Data1.ma1[1]>Data1.Ma2[1])
{
If(High>=hh) Buy(1,Max(Open,hh));
}
If(MarketPosition == 1 And Low<=ll) Sell(0,Min(Open,ll));
If(time == 0.1455)
{
tradeOK = False;
If(Barstatus==2)
{
If(CurrentTime>=0.145950) Sell(0,Close);
}
Else
{
Sell(0,Close);
}
}
}