以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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肯定是稳定的,最高价也只可能更高,只要中间有一次满足上穿条件,那么这个信号就应该是稳定的。