开拓者期货期权程序化系统交易论坛

标题: 如何控制BAR交易次数 [打印本页]

作者: jsz123    时间: 2010-7-28 22:29:40     标题: 如何控制BAR交易次数

本帖最后由 jsz123 于 2010-7-28 23:13 编辑

2.A_SendOrder
使用全局变量计数,并且在判断条件中加入这个全局变量和限制交易次数做比较
if( date!=date[1] )
{
     SetGlobalVar(0,0);
}
if( con1 && GetGlobalVar(0)<=3 )
{
     A_SendOrder(省略);
     SetGlobalVar(0,GetGlobalVar(0)+1);
}
这个if( date!=date[1] )是控制日线周期的BAR,假如我想控制5分钟或者15分钟交易次数怎么办
换句话说,15分钟K线图上,用A函数开仓,平仓,再开仓,再平仓都必须在不同的BAR上(每根BAR只能发出一次交易指令!)
作者: lh948    时间: 2010-7-29 08:40:05

修改了例子,请看6楼
作者: jsz123    时间: 2010-7-29 09:53:20

本帖最后由 jsz123 于 2010-7-29 09:57 编辑

谢谢提供了思路,但是用时间控制,不是太准确吧?
比如说,我9点56分开的仓 SetGlobalVar(0)=0.0956*10000=956
956+15(分钟)=971 下一个15分钟已经过去了15-4=11分钟了 等于说 15分钟 下根BAR已经过去了11分钟才能开仓

另一个,必须要计算机的时间非常准确吧?[/color]font]
作者: hjl    时间: 2010-7-29 10:27:12

你的周期是15分钟呀!所以就不存在0.0956的bar了,我这么理解的,不知道对否
作者: jsz123    时间: 2010-7-29 10:33:30

if( con1 && time*10000==GetGlobalVar(0)+n )
{
     A_SendOrder(省略);
     SetGlobalVar(0,time*10000);
}
  
  这个   SetGlobalVar(0,time*10000);里的time是指开仓时候的时间吗?还是BAR一开始的的时间?
作者: lh948    时间: 2010-7-29 10:43:19

3# jsz123

修改一下例子
n是周期数

if( date!=date[1] )
{
     SetGlobalVar(0,0);
}
if( con1 && time*10000-GetGlobalVar(0)>=n )
{
     A_SendOrder(省略);
     SetGlobalVar(0,time*10000);
}
作者: lanshan    时间: 2011-6-30 17:52:34

6楼的例子似乎有问题,time是60进制的,变成数字计算会按100进制计算,这个会导致严重计算错误!




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2