欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 模型平仓时间编写问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2769人关注过本帖树形打印复制链接

主题:模型平仓时间编写问题

帅哥哟,离线,有人找我吗?
1252527484
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:37 积分:0 威望:0 精华:0 注册:2020/2/8 11:24:38
模型平仓时间编写问题  发帖心情 Post By:2020/2/15 13:43:35    Post IP:118.116.89.53[只看该作者]

m1:ma(c,3);
m2:ma(c,5);
n1:cross(m1,m2);
n2:cross(m2,m1);
SELLSHORT(n1,1,MARKET);
BUY(n1,1,MARKET);
sell(n2,1,MARKET);
BUYSHORT(n2,1,MARKET);
if T0TOTIME(TIMETOT0(CLOSETIME(0))-180)<=DYNAINFO(207) or (time=190000 and not(ISLASTBAR)) then begin
    sell(1,holding,MARKET);
end
if n1=1 and time>093000 AND TIME<143000 THEN BEGIN
    BUY(n1,1,MARKET);
END
if n2=1 and time>093000 AND TIME<143000 THEN BEGIN 
    BUYSHORT(n2,1,MARKET);
end 
IF holding<>0 and time=145700 then begin
sell(n2,1,MARKET);
end
IF holding<>0 and time=145700 then begin
  SELLSHORT(n1,1,MARKET);
end


老师   这个模型并没有在下午14:30后停止开仓   14点57分也没有全部平仓   是哪里有问题呢?

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/2/15 14:35:00    Post IP:101.88.97.123[只看该作者]

运行在什么周期下的?用的什么运行模式。

 

[此贴子已经被作者于2020/2/15 14:35:23编辑过]


编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
1252527484
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:37 积分:0 威望:0 精华:0 注册:2020/2/8 11:24:38
  发帖心情 Post By:2020/2/15 17:42:40    Post IP:118.116.89.53[只看该作者]

图表程式化   300股指1分钟和3分钟

 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2020/2/15 18:38:10    Post IP:101.88.97.123[只看该作者]

结合你上个帖子中的需求表述:

//我是想  9点30开始开仓    下午14:30之后就不再开仓   前面开的仓如果没用平统一都在14点57分平仓  提前收盘三分钟       应该怎么编写    

问题总结:

1.限制时间无效:因为你代码中的第5--8行,的开平语句未做时间限制造成的。(这个应该是你修改后,未注释掉。根据你的需求,他们是不应该存在的)

2.你需求中,应该是希望在金死叉时进行开平反手的操作。而代码中你限定的时间是time=145700 。那么最终结果是,在整个交易时间内,只有在14:57分才会进行平仓。

3.之前给你的代码中,提供了两种提前下单的方法。根据你上面的用法看,你并没有理解。建议你认真分析下代码和处理逻辑。

 

修改如下:

 


m1:ma(c,3);
m2:ma(c,5);
n1:cross(m1,m2);
n2:cross(m2,m1);
//SELLSHORT(n1,1,MARKET);
//BUY(n1,1,MARKET);
//sell(n2,1,MARKET);
//BUYSHORT(n2,1,MARKET);

if n1=1 and time>093000 AND TIME<143000 THEN BEGIN
 SELLSHORT(HOLDING<0,1,MARKET);
    BUY(HOLDING=0,1,MARKET);
END
if n2=1 and time>093000 AND TIME<143000 THEN BEGIN
 sell(HOLDING>0,1,MARKET);
    BUYSHORT(HOLDING=0,1,MARKET);
end

 

//14:57全平仓位
IF time=145700 then begin
 sell(HOLDING>0,HOLDING,MARKET);
 SELLSHORT(HOLDING<0,HOLDING,MARKET);
end

//这段代码用必须在固定的时间间隔模式下,并且提前下单的时间必须是最后一根k线。否者需要修改代码中的time
//if T0TOTIME(TIMETOT0(CLOSETIME(0))-180)<=DYNAINFO(207) or (time=190000 and not(ISLASTBAR)) then begin
//  sell(HOLDING>0,HOLDING,MARKET);
// SELLSHORT(HOLDING<0,HOLDING,MARKET);
//end



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
1252527484
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:37 积分:0 威望:0 精华:0 注册:2020/2/8 11:24:38
  发帖心情 Post By:2020/2/15 20:22:17    Post IP:118.116.89.53[只看该作者]

好的  谢谢老师

 回到顶部