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

szdfc 发表于 2008-6-9 00:19

怎样限制,在一根Bar上最多只开一次仓?

怎样限制,在一根Bar上最多只开一次仓?

nopain 发表于 2008-6-9 14:50

开仓后直接 return

szdfc 发表于 2008-6-9 22:59

直接 Return 是后面的代码都不执行了?还是之后价格再变动代码都不再循环执行了?还是??!

nopain 发表于 2008-6-10 09:37

直接返回,后面的代码都不执行了

szdfc 发表于 2008-6-10 11:04

TB的代的执行过程是,有价格变动,就执行一次,那么下次价格变动,带Return的语句,还会执行吗?

nopain 发表于 2008-6-10 12:45

会的

szdfc 发表于 2008-6-10 15:19

晕呢,那样的话不是还是要执行这段代码吗?我看还是用全局变量吧!

nopain 发表于 2008-6-10 15:40

每次行情更新都会执行,但是如果当前Bar前面已经发过单了,系统会检测到,然后会过滤该信号

szdfc 发表于 2008-6-10 18:25

还是不懂也,看来这个Return很复杂呀,我把我的理解整理如下:

比如:
if(x=x)
{
Buy(Y,Y);
Return;
}
就是说,在上面这个语句块里用了Return,那么
1,每次行情变动的时候,这个语句块都不会再执行?
2,每次行情变动的时候,这个语句块会执行,但是交易指令会被忽略?
3,每次行情变动的时候,这个语句块会执行,但是已经发生过的同方向的交易指令会被忽略?

nopain 发表于 2008-6-11 09:47

上面的理解都不对。
如下面的代码:

if(conEntry)
{
    Buy(Y,Y);
    Return;
}

If(ConExit)
{
   Sell(z,z);
}

Return的意思是如果条件满足的情况下,执行了Buy操作,然后就会直接返回。不会执行下面的3行代码。
关于return的详细信息,请在google上搜索相关内容

szdfc 发表于 2008-6-11 11:26

恩,那就是说Return和C语言里的Return意思差不多呀,但是,在实际交易中,当价格再次变动的时候,还会执行前面的代码,所以,还是无法实现“一根K线只开一次仓”的效果呀!

nopain 发表于 2008-6-12 08:59

当然可以实现,您自己写点代码测试一下不就都知道了?

szdfc 发表于 2008-6-12 10:16

哎,我用全局变量,已经解决这个而问题了,我只是想理解Return的用法啊,就算我试出了效果,不理解又怎么灵活取用呢!!

nopain 发表于 2008-6-12 10:41

前面我已经解释过了啊,重新解释一下:
假设一根1分钟的Bar,每秒钟刷新一个Tick。这个Bar会被计算60次。
假设在第10个Tick时条件满足,开仓。
第11个Tick刷新时,还会同样的执行这些代码,但是系统已经记录到这个Bar已经开过仓,所以不会重复发送,所以您的这个理解是不正确的。
[quote]但是,在实际交易中,当价格再次变动的时候,还会执行前面的代码,所以,还是无法实现“一根K线只开一次仓”的效果呀![/quote]

szdfc 发表于 2008-6-12 10:43

呵呵,这样解释,我就理解了,原来Return是这样用的呀 :——)

jsz123 发表于 2010-7-28 14:41

可以用在A函数吗?

lh948 发表于 2010-7-28 16:46

A函数要用全局变量控制发单次数

欲速不达 发表于 2010-7-28 22:35

buy,sell函数组就只开平一次,不需其它控制

evilflower 发表于 2010-7-29 10:39

我用了return,不过还是重复开仓,好像return没有起到作用

speed_fj 发表于 2010-7-29 10:45

就是C语言

页: [1] 2

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