设为首页收藏本站

 找回密码
 注册
查看: 11871|回复: 10

请教斑竹,用全局变量避免重复开仓的写法。。。 [复制链接]

Rank: 3Rank: 3

精华
0
UID
4814
积分
207
帖子
15
主题
6
阅读权限
40
注册时间
2009-7-7
最后登录
2010-3-30
发表于 2009-9-23 14:17:08 |显示全部楼层
我编的一个日内的系统,使用了全局变量记录开仓信息。整个系统没有使用marketposition函数,不加仓。开仓价格也使用全局变量记录。同时使用交易助手保证成交。
请教版主这样的写法可以避免反复开仓不?图表上是否有信号?
有没有什么问题?

entrypri=getgloblevar(0);            //取记录开仓价格的全局变量值
ishaveposition=getgloblevar(1);  //取记录持仓的全局变量值
if(ishaveposition==0)                  //判断是否空仓
{
if(entrycon)                                 //满足开仓条件
{
buy(1,close);                             //以最新价开仓
setgloblevar(1,1);                    //记录开多仓,开空仓记录为-1
setgloblevar(0,close);              //记录开仓价格
}
if(ishavepositiion==1)             //判断是否有多仓
{
if(exitcon)                             //满足平仓条件
{
sell(1,close);                       //以最新价平仓
setgloblevar(1,0);              //将全局变量归零,记录账户持仓为零
}

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
发表于 2009-9-23 15:04:09 |显示全部楼层
entrycon与exitcon的判断条件决定信号是否会易消失.如果是一个易消失的信号.也会造成反复开仓,这里用到的全局变量不能杜绝因信号消失造成的反复开仓.

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4814
积分
207
帖子
15
主题
6
阅读权限
40
注册时间
2009-7-7
最后登录
2010-3-30
发表于 2009-9-23 15:55:44 |显示全部楼层
原帖由 小米 于 2009-9-23 15:04 发表
entrycon与exitcon的判断条件决定信号是否会易消失.如果是一个易消失的信号.也会造成反复开仓,这里用到的全局变量不能杜绝因信号消失造成的反复开仓.


我以为全局变量在开仓后变为1或-1,不能满足第一个的判断语句"if(ishaveposition==0)",所以后边的判断开仓条件“entrycon"都不会被执行,因此不会重新开仓。


我的理解是如果使用“marketposition"函数进行第一个判断的话,由于“marketposition"函数需要一个返回时间,在此期间,如果有一个能满足的tick进来,由于”marketposition"函数的值还没有改变,导致开仓条件被执行,又会产生一个开仓信号。

而使用全局变量时,开仓后全局变量的值立即改变,下一个tick进来后不会再执行“entrycon",因此不会产生开仓信号。直到平仓后,全局变量重新归零。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
发表于 2009-9-23 17:12:51 |显示全部楼层
首先,不会因为是marketposition的返回时间原因而造成反复开仓. 造成反复开仓的绝大部分是判断条件的原因而造成信号的忽闪.
以上你的写法对于entrycon的原因造成信号忽闪从而反复开仓是记不住的.
你可以试一下这段代码:
if(ishaveposition==1)                  //判断是否空仓
{
buy(1,close);
}else if(entrycon && ishaveposition==0)                                 //满足开仓条件
{
buy(1,close);  
ishaveposition=1;                           //以最新价开仓
setgloblevar(1,1);                    //记录开多仓,开空仓记录为-1
}

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
4814
积分
207
帖子
15
主题
6
阅读权限
40
注册时间
2009-7-7
最后登录
2010-3-30
发表于 2009-9-23 19:13:56 |显示全部楼层
,谢谢指教

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
6925
积分
903
帖子
175
主题
25
阅读权限
60
注册时间
2010-2-9
最后登录
2012-5-3
发表于 2010-3-7 00:15:31 |显示全部楼层

回复 1# uuvvqq 的帖子

学习了,好东西多多益善

使用道具 举报

Rank: 2

精华
0
UID
5161
积分
66
帖子
9
主题
1
阅读权限
30
注册时间
2009-8-16
最后登录
2011-8-20
发表于 2010-9-7 18:07:26 |显示全部楼层
首先,不会因为是marketposition的返回时间原因而造成反复开仓. 造成反复开仓的绝大部分是判断条件的原因而造成信号的忽闪.
以上你的写法对于entrycon的原因造成信号忽闪从而反复开仓是记不住的.
你可以试一下这段代 ...
小米 发表于 2009-9-23 17:12

============================================================
请问上面两段代码,TB处理起来的差别?
用close变量做条件判断,TB是否要求等到BAR结束才处理

多谢

使用道具 举报

Rank: 2

精华
0
UID
5161
积分
66
帖子
9
主题
1
阅读权限
30
注册时间
2009-8-16
最后登录
2011-8-20
发表于 2010-9-7 18:51:17 |显示全部楼层
TB是怎么保证用HIGH和LOW进行条件判断时的重复开仓问题的?直接忽略掉后续TICK的high和low同样满足开仓条件?
如果是这样的化,用当前的close进行开仓条件判断?若该close满足开仓条件,是否可在对应的TICK直接开仓;同时忽略后续close,不管是否满足触发条件。
请问到底是什么机制导致的close判断必须重复开仓,而high/low则只需开一次
如果将close的值赋给一个全局变量,由全局变量代替close进行条件判断
TB是否还会考虑所谓的信号消失问题?
多谢

使用道具 举报

Rank: 2

精华
0
UID
5161
积分
66
帖子
9
主题
1
阅读权限
30
注册时间
2009-8-16
最后登录
2011-8-20
发表于 2010-9-7 18:59:29 |显示全部楼层
按照常见问题Q&A中的解决办法,其实就是等bar结束后,close值不再变化了,再进行判断
bar结束后的close值,其实也不过是bar所遍历的价格中的一个,后面还会有无数个close。
换个角度看,bar中间的close也可看作当前bar的某一子周期bar的收盘close吧。比如5分钟bar中的某1分钟bar收盘close。
实在看不出解决办法的优势所在,能否解释一二
多谢

使用道具 举报

Rank: 1

精华
0
UID
234975
积分
6
帖子
5
主题
1
阅读权限
10
注册时间
2016-5-22
最后登录
2018-3-28
发表于 2017-2-8 23:15:57 |显示全部楼层
小米 发表于 2009-9-23 15:04
entrycon与exitcon的判断条件决定信号是否会易消失.如果是一个易消失的信号.也会造成反复开仓,这里用到的全 ...

请问为什么易消失信号也会造成反复开仓 呢? 不是开仓之后全局变量也就改变了吗?好奇。求解谢谢哦

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-3-29 04:46

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部