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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 平仓语句不起作用

   

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


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

主题:平仓语句不起作用

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/24 9:00:26    Post IP:58.246.57.26[显示全部帖子]

大周期上面这样不行的。上面那个是基于你1分钟这种小周期的。如果是大周期的话,你没办法在小于周期的时间跨度上做这种时间判断的。


所以只能这样,在历史K上信号都是显示在收盘K上的:
INPUT:N(3,1,200,1);

abb:=timetot0(CLOSETIME(1))-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时
abb3:=timetot0(CLOSETIME(1))-timetot0(dynainfo(207)),NODRAW;//当前时间距离收盘K时间   


if (abb<N*60 and abb>=0 and (not(ISLASTBAR))) or (ISLASTBAR and  abb3>=0 and abb3<N*60)  then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);   
DRAWICON(1,h,1); //显示下信号位置,用于测试效果,可自行删去。
end




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/25 8:56:13    Post IP:58.246.57.26[显示全部帖子]

 你是固定轮询模式还是走完K的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/25 9:17:11    Post IP:58.246.57.26[显示全部帖子]

给你个简单的策略,白天测试下。另外这个触发信号前提是你模型里面有仓位,我怀疑你当时是不是没有虚拟持仓。

buy(TODAYBAR=1,1,market);
INPUT:N(3,1,200,1);
//红色部分你自行调一个时间,这是9点15分的。你改成新的时间测试即可
abb:=timetot0(131500)-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时
abb3:=timetot0(131500)-timetot0(dynainfo(207)),NODRAW;//当前时间距离收盘K时间   


if (abb<N*60 and abb>=0 and (not(ISLASTBAR))) or (ISLASTBAR and  abb3>=0 and abb3<N*60)  then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
end


我本地运行结果:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


2020-11-25 09:14:02.790    【图表】AG00 运行完毕
2020-11-25 09:14:04.820    【图表】框架:Technic 触发下单 SELL 品种 AG00 下单K线 2020.11.25 13:15:00 公式:次月合约 窗格ID:Main 代码行:10
2020-11-25 09:14:04.820    【图表】模型下单 1
2020-11-25 09:14:04.820    【图表】下单系数调整后 手数:1
2020-11-25 09:14:04.820    【图表】实际持仓 3
2020-11-25 09:14:04.820    【图表】直接下单
2020-11-25 09:14:04.830    【图表】AG00 运行完毕
2020-11-25 09:14:04.830    【下单】AG12 价0.000000 量1 买卖1 类型1 开平1 账户113049 Formula 1
2020-11-25 09:14:04.830    【下单】确认报单已发送 ID=-1351922169 RefID = 860
2020-11-25 09:14:04.900    【指令】收到回报指令 ID = -1351922169 RefID = 860
2020-11-25 09:14:04.900    【回报】113049 : ag2012 - 已报单 1 价格:4892 平 卖
2020-11-25 09:14:04.900    【指令】收到回报指令 ID = -1351922169 RefID = 860
2020-11-25 09:14:04.900    【指令】收到成交回报指令 REFID = 860 vol = 1
2020-11-25 09:14:04.910    【回报】113049 : ag2012 - 已成交 1 价格:4895 平 卖


所以代码是没啥问题的,你排查下应该是其他原因导致的。




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/26 9:11:33    Post IP:58.246.57.26[显示全部帖子]

 是的。这种是不会出平多信号的。只会出平空信号的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/26 9:45:35    Post IP:58.246.57.26[显示全部帖子]

没有太好的办法了。你如果有后台程序化倒是可以写一个无条件,收盘全平的代码。否则图表上必须依赖出信号才行。




命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2020/11/26 10:09:49    Post IP:58.246.57.26[显示全部帖子]

 或者这样子也行,你可能需要新建2个框架,一个框架平多,一个平空。因为涉及到一个设置,这个设置是每个框架单独有效。所以没办法在一个框架下操作。先把多框架显示的地方设置下:
工具-选项:

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


多头平仓的代码如下:

buy(TODAYBAR=1,1,market);//第一个K开仓
INPUT:N(3,1,200,1);//提前的时间
//红色部分你自行调一个时间,你可以直接写成收盘K的K线时间即可。
abb:=timetot0(134500)-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时
abb3:=timetot0(134500)-timetot0(dynainfo(207)),NODRAW;//当前时间距离收盘K时间   

if (abb<N*60 and abb>=0 and (not(ISLASTBAR))) or (ISLASTBAR and  abb3>=0 and abb3<N*60)  then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,0,market);//这里参数直接写0表示多头全平
end


最主要的设置如下

图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看

开仓程序化的时候务必把这里开仓的勾选去掉。然后上面代码的开仓部分会被忽略,但是平仓信号能正常执行。这样就行了。


上面是多头,空头你把语句替换下就行了。


**
需要注意,你多头平仓 和空头平仓,你必须用2个框架。每个框架下开启程序化的地方,都要把信号过滤那里的开仓信号直接过滤掉。  你设置时候注意下,别把你正常交易的主程序那里也给勾选了,这样的话会导致无法开仓的。



命数如织,当如磐石。
 回到顶部