以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- [求助] (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=48172) |
-- 作者:grace -- 发布时间:2013/1/28 17:02:59 -- [求助] 我写了一段在固定时间间隔模式下交易情况的测试代码,开仓条件是出阳线后开多仓,反之开空仓,平仓条件是出阴线平多,出阳线平空.可经常会多次开仓,我设了标志限制一根K线一种情况只能操作一次,可还是会多次开仓,请高手帮忙看一下是哪里的问题,代码如下 : 谢谢!
runmode:0; ///////止损价//开多标志///开空标志////平多标志///平空标志//周期数 if zq<>TODAYBAR then begin entertime:=time>091500 and time<151500; priceD:=ref(c,1)-0.4; if holding>0 and 平多条件 then BEGIN if holding<0 and 平空条件 then BEGIN 空离场:sellshort(1,1,limitr,priceK),ORDERQUEUE ; PK1:=1; if holding=0 and 开多条件 then BEGIN if holding=0 and 开空条件 then BEGIN if 多止损条件 and holding>0 then begin 多止损:sell(1,1,limitr,zs-0.2),ORDERQUEUE; cc:=0; end if 空止损条件 and holding<0 then begin 空止损:sellshort(1,1,limitr,zs+0.2),ORDERQUEUE; end
收盘空离场:sellshort(1,1,limitr,MARKET+0.4),ORDERQUEUE ; |
-- 作者:jinzhe -- 发布时间:2013/1/28 17:22:38 -- 如果需要一根k开一次仓,那么就用全局变量来记录 vairable:n=0; if 开多 and n=0 then begin buy; n:=1; end
if 开空 and n=0 then begin buyshort; n:=1; end |
-- 作者:grace -- 发布时间:2013/1/28 18:05:51 -- 我是这样做的,可还是多次开仓,为什么? |
-- 作者:RogarZ -- 发布时间:2013/1/28 20:32:42 -- 一些代码不是很能理解你的意图 if zq<>TODAYBAR then begin 你用H L等控制避免信号闪烁了。金字塔默认一根K线只能开多、开空、平多、平空各一次。除非用后台的allowrepeat功能打开。 这段代码感觉没意义。
你指的多次开仓又是何意义,指图表信号,还是模拟?在什么周期上运行?不讲清楚,没法帮助你。
你的止损代码有些问题,有可能造成止损条件在开多后,马上就成立,即L<ZS在你开仓前就成立了,开完仓马上又平仓了. 我不清楚同时你是不是又勾选了自动持仓同步,造成的混乱。 从逻辑上讲,我们建议用户定义清楚各种情况,那种1根K线上即开多,又平多的情况要尽量避免。 |