- 精华
- 0
- 在线时间
- 322 小时
- UID
- 257171
- 积分
- 133
- 帖子
- 99
- 阅读权限
- 40
- 注册时间
- 2017-9-28
- 最后登录
- 2019-11-16
- 精华
- 0
- UID
- 257171
- 积分
- 133
- 帖子
- 99
- 主题
- 32
- 阅读权限
- 40
- 注册时间
- 2017-9-28
- 最后登录
- 2019-11-16
|
本帖最后由 masterhdd 于 2018-5-9 15:54 编辑
小米 发表于 2018-5-8 08:59
在非最后K线时直接按信号标识开仓信号,是为了与最后K线的是实时处理区别开。必竟历史里不需要反手延迟。 ...
还是不明白。比如:一直没有持有多头仓位MarketPosition <>1,在第四根BAR出现了AvgValue1 > AvgValue2,然后到了第五根BAR就会满足MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]的条件,然后就会执行下一句If(MarketPosition==0 || BarStatus!=2),此时只要MarketPosition==0就可以执行Buy(1,Open)了。或者在MarketPosition==-1的情况下且BarStatus!=2就Buy(1,Open)开多仓,但显然此时是BarStatus==2的,也就无法执行Buy(1,Open)开多仓,等到了下一根BAR也就是第六根BAR再运行的时候,BarStatus还是等于2的,这.......怎么可能执行Buy(1,Open)开多仓呢?请指出我的理解错在了哪里?看不懂太痛苦了。
我们假设一直持有空头仓位MarketPosition==-1,所以也就满足MarketPosition <>1的条件,在第四根BAR出现了AvgValue1 > AvgValue2,然后到了第五根BAR就会满足MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]的条件,然后就会执行下一句If(MarketPosition==0 || BarStatus!=2),由于MarketPosition==-1所以MarketPosition==0这一项就放弃了,此时就只有依靠BarStatus!=2的条件来Buy(1,Open)了,但面临的每根BAR都是BarStatus==2的,难道还能回头向后运行程序吗?
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
If(MarketPosition==0 || BarStatus!=2)
{
Buy(1,Open);
} |
|