以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=183161) |
|
-- 作者:netlife88 -- 发布时间:2020/11/23 23:08:52 -- 平仓语句不起作用
===================== 想在15分钟周期,夜盘23点收盘前一分钟进行平仓 ,如22:59 CURRENTTIME这个函数也不能用 ,有没有合适的方法? |
|
-- 作者:FireScript -- 发布时间:2020/11/24 9:00: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 |
|
-- 作者:netlife88 -- 发布时间:2020/11/25 8:51:28 -- 用的你这个 昨晚也没起作用 |
|
-- 作者:FireScript -- 发布时间:2020/11/25 8:56:13 -- 你是固定轮询模式还是走完K的。 |
|
-- 作者:netlife88 -- 发布时间:2020/11/25 8:58:22 -- 固定轮询1秒 |
|
-- 作者:FireScript -- 发布时间:2020/11/25 9:17:11 -- 给你个简单的策略,白天测试下。另外这个触发信号前提是你模型里面有仓位,我怀疑你当时是不是没有虚拟持仓。 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 我本地运行结果: 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 平 卖 所以代码是没啥问题的,你排查下应该是其他原因导致的。 |
|
-- 作者:netlife88 -- 发布时间:2020/11/25 23:17:21 -- 辛苦了 再麻烦你下 : 如果交易信号与实际持仓不符合 如HOLDING=-1 实际持仓是多仓 ,这种情况就没有办法平仓了吗 |
|
-- 作者:FireScript -- 发布时间:2020/11/26 9:11:33 -- 是的。这种是不会出平多信号的。只会出平空信号的。 |
|
-- 作者:netlife88 -- 发布时间:2020/11/26 9:18:52 -- 有没有其它方法 强制平掉所有持仓 |
|
-- 作者:FireScript -- 发布时间:2020/11/26 9:45:35 -- 没有太好的办法了。你如果有后台程序化倒是可以写一个无条件,收盘全平的代码。否则图表上必须依赖出信号才行。 |