金字塔全自动交易问题,故障.
坏境:
1 最版本免费版的模拟账号
2 一个框架下8个窗口,分别是8个不同的品种,均采用5分钟周期.
3 8个品种使用同一个策略文件mytest,见后面策略文件代码.
4 启动图标程式化交易,固定时间间隔 1秒 信号消失次周期自动恢复持仓 锁定画面所有品种 没有选择高频
5 CPU I7 3730 使用率9%左右,其中winstock使用率2-4%,内存8G,有足够剩余内存,win7系统.
故障现象:
1 交易输出P3不是连续的跳动,而是存在跳帧.有时跳3,4秒.即程序有可能无法保证每秒中执行一次;
2 策略文件中的限制理论上每个品种只有1手持仓,但实际上有2,3,4,5手的都有.
3 策略文件中的限制,理论上每个品种委托时间的秒数应该是56,但实际上多数在58秒,57秒,偶尔有56秒.
说明:
该策略文件目的旨在对同时交易多个品种,实现全自动交易,指令发出时间仅限于K线结束前N秒,发出的价格为当前的对手价,并且能够在指令发出后K线结束前的N秒内信号消失能够起到校验作用,同时希望可以设定几秒未成交自动撤单追价的功能,确保实际交易和理论的完全一致(在牺牲一些点位的基础上,等待修正同步前允许存在几秒的偏差).
交易策略代码如下:
//交易手数:
tn:=1;
//持续下单次数
cx:=1;
//提前下单量(秒)
xd:=5;
//交易时间区间
p1:=time>091500 and time<=144500;
p2:=if(islastbar,dynainfo(207),time);
p3:time0-timetot0(p2)linethick0;
IF P3<XD THEN
BEGIN
if C>o then
sellshort(holding<0,0,thisclose);//p3<=xd 表是一根k线走完前xd秒开始下单
if c<o then
sell(holding>0,0,thisclose);
if c<o then
buyshort(holding=0,tn,thisclose);
if c>o then
buy(holding=0,tn,thisclose);
END
{
平空:SELLSHORT(PK,20%,THISCLOSE); //平空信号
开多:BUY(KD AND HOLDING=0,20%,THISCLOSE); //开多信号
平多:SELL(PD,20%,THISCLOSE); //平多信号
开空:BUYSHORT(KK AND HOLDING=0,20%,THISCLOSE); //开空信号
}
//信号语句排列规则——先平后开
//“费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:
持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;
如果希望策略精确掉1秒或者更小的,那么用后台或者VBA,不要用图表了
我就要求到1秒钟.偶尔有延时1秒钟也可以接受,但不能总是延时.而且现在我这个策略实际上是空策略,没有运行任何实际上的计算,如果加上一定程度的运算量,这个延时跳帧可能就不止延时这么一点了.
另外,后台或者VB又如何来控制呢?不能接受程序运行完全没有监控,希望在图表上可以同步显示出来当前的交易信息,使得后台万一出现下单的故障,我任然可以把策略当指标,电话或者下单软件进行手动操作.
还有校验机制,对多个品种如何设置呢? 对于上面代码上中发出的委托(thisclose),是当前最新价,还是当前对手价? (我希望是对手价)对于已发委托,几秒未能成交如何进行追价设置?
我愿意牺牲点位,我愿意接受等待几秒钟的系统校验时间,但是不能接受,实际交易指令未能按照策略指定的执行.
8个图表非常影响运行效率,但是后台监控8个品种就不会