系统交易论坛 - 开拓者期货自动交易平台's Archiver

jsz123 发表于 2010-7-28 22:29

如何控制BAR交易次数

[i=s] 本帖最后由 jsz123 于 2010-7-28 23:13 编辑 [/i]

[b][/b]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分钟交易次数怎么办
[color=Red]换句话说,15分钟K线图上,[font=黑体][font=微软雅黑][u][size=5]用A函数[/size][/u][/font]![/font]开仓,平仓,再开仓,再平仓都必须在不同的BAR上(每根BAR只能发出一次交易指令!)[/color]

lh948 发表于 2010-7-29 08:40

修改了例子,请看6楼

jsz123 发表于 2010-7-29 09:53

[i=s] 本帖最后由 jsz123 于 2010-7-29 09:57 编辑 [/i]

[font=楷体_GB2312][size=6][color=Blue]谢谢提供了思路,但是用时间控制,不是太准确吧?
比如说,我9点56分开的仓 SetGlobalVar(0)=0.0956*10000=956
956+15(分钟)=971 下一个15分钟已经过去了15-4=11分钟了 等于说 15分钟 下根BAR已经过去了11分钟才能开仓[/color][/size][size=6][color=Blue]![/color][/size][/font]
[font=楷体_GB2312][color=SeaGreen][size=6]另一个,必须要计算机的时间非常准确吧?[/[/size]color]font]

hjl 发表于 2010-7-29 10:27

你的周期是15分钟呀!所以就不存在0.0956的bar了,我这么理解的,不知道对否

jsz123 发表于 2010-7-29 10:33

[quote]if( con1 && time*10000==GetGlobalVar(0)+n )
{
     A_SendOrder(省略);
     SetGlobalVar(0,time*10000);
}[/quote]   
  这个   SetGlobalVar(0,time*10000);里的time是指开仓时候的时间吗?还是BAR一开始的的时间?

lh948 发表于 2010-7-29 10:43

[b] [url=http://tradeblazer.net/forum/redirect.php?goto=findpost&pid=52612&ptid=9028]3#[/url] [i]jsz123[/i] [/b]

修改一下例子
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

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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.