以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- [求助]标准版收盘平仓问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=167307) |
-- 作者:雪松fj303 -- 发布时间:2018/12/24 15:08:26 -- [求助]标准版收盘平仓问题 老师: 我用的是标准版图表交易,信号执行固定间隔,数据30分钟,意图收盘前1-2分钟平仓。代码这样写,为什么总是14:30分平仓。 SPJ:=valuewhen(time>=145858,CLOSE); if time>=145858 then BEGIN 收盘平多:sell(1,PN%,LIMITR,SPJ-mindiff); 收盘平空:sellshort(1,PN%,LIMITR,SPJ+mindiff); end 请求给予指导。
|
-- 作者:FireScript -- 发布时间:2018/12/24 15:40:30 -- 你这个time判断里面写的时间是北京时间吗? 1.time本身返回值和你时区有关系,你如果用的金字塔时区,你写的值应该按照金字塔时区来进行。比如下午14:30 对应金字塔时间实际是18:30。 2.因为time返回的是K线时间, 你这个思路也是不行的。如果是30分钟K,当前K对应下午14:30 那么上一个K则是14:00 没有中间值的。你这个思路是要这个中间值来做对比和判断是不行的。
|
-- 作者:雪松fj303 -- 发布时间:2018/12/25 11:48:58 -- 对,我使用的是北京时间。 这个思路不行,网络上看到一个这样的代码(有小改),老师看看行吗? p:=100; SPJ:=valuewhen(time>=145959,CLOSE); 交易时间:=time>=090000 and time<=145959; If islastbar<>1 and 交易时间<>1 then begin 收盘平多:sell(1,P%,LIMITR,SPJ-mindiff); 收盘平空:sellshort(1,P%,LIMITR,SPJ+mindiff); end 老师有好的表述方法吗? 另外还有个问题:用标准版‘固定间隔’跑程序化,用 LIMITR 触发限价交易,触发价是当周期最高价上穿上一周期前M周期最高价,有CROSS(H,REF(HHV(H,M),1)) 和 H>=REF(HHV(H,M),1) 两种代码写法,那一种符合要求,不会出现信号闪烁。 谢谢老师! |
-- 作者:FireScript -- 发布时间:2018/12/25 13:40:55 -- 1.收盘前提前下单 abb:(time0-timetot0(dynainfo(207))<=120) or not(islastbar);//提前120s下单 if abb and time=150000 then BEGIN 收盘平多:sell(1,1,market); 收盘平空:sellshort(1,1,market); end 你的周期必须大于你这里设置的提前下单的秒数,当然你现在是30分钟周期是没问题的,如果切换周期的话,需要注意修改下。 2.上穿的逻辑只能CROSS(H,REF(HHV(H,M),1)) 满足。 其实因为你
REF(HHV(H,M),1)) 在当前K肯定是稳定的,最高价也只可能更高,只要中间有一次满足上穿条件,那么这个信号就应该是稳定的。 |