以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://www.weistock.com/bbs/list.asp?boardid=4) ---- 过滤连续信号的问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=167320) |
||||
-- 作者:qq代人发帖 -- 发布时间:2018/12/25 10:23:03 -- 过滤连续信号的问题 请教:我想要解决的问题第一步是过滤连续信号的问题:
LASTBUY:= TENTERBARS(0)>0 AND (( TEXITBARS(0)<0 ) OR (TENTERBARS(0)<TEXITBARS(0))) ; LASTSELL:=TEXITBARS(0)>0 AND (TEXITBARS(0)<TENTERBARS(0)) ; TBUY(CONDBUY AND not(LASTBUY) ,10000,MKT,0,0,ZH1,PZ1 ); //如果上次不是卖出 TSELL(CONDSELL AND not(LASTSELL) ,10000,MKT,0,0,ZH1,PZ1); 这个在15分钟间隔 实盘模拟中看起来没问题,一买后一卖, 但是在后台程序化 回测中,无法过滤连续买卖, 用DEBUGFILE也是显示的一塌糊涂 |
||||
-- 作者:FireScript -- 发布时间:2018/12/25 10:27:21 -- 截图看下你的回测结果,说明下你说的连续买卖是什么情况。 |
||||
-- 作者:qq代人发帖 -- 发布时间:2018/12/25 10:52:24 -- 正在注册账号。。 请帮加如下debugfile内容: 2018-12-25 09:30:39.253 持仓=30000 2018-12-25 09:30:39.255 TODAYHOLDING=0 2018-12-25 09:30:39.256 HOLDING=0 2018-12-25 09:30:39.257 TENERBARS=-1 2018-12-25 09:30:39.258 TEXITBARS=-1 2018-12-25 09:30:39.259 LASTBUY=0 2018-12-25 09:30:39.261 LASTSELL=0 2018-12-25 09:30:39.262 DAYHOLDING=0 2018-12-25 09:30:39.271 持仓=30000 2018-12-25 09:30:39.272 TODAYHOLDING=0 2018-12-25 09:30:39.273 HOLDING=0 2018-12-25 09:30:39.275 TENERBARS=-1 2018-12-25 09:30:39.276 TEXITBARS=-1 2018-12-25 09:30:39.277 LASTBUY=0 2018-12-25 09:30:39.278 LASTSELL=0 2018-12-25 09:30:39.280 DAYHOLDING=0 2018-12-25 09:30:39.289 持仓=40000 2018-12-25 09:30:39.291 TODAYHOLDING=0 2018-12-25 09:30:39.292 HOLDING=0 2018-12-25 09:30:39.293 TENERBARS=-1 2018-12-25 09:30:39.294 TEXITBARS=-1 2018-12-25 09:30:39.296 LASTBUY=0 2018-12-25 09:30:39.297 LASTSELL=0 此主题相关图片如下:1.png [此贴子已经被作者于2018/12/25 10:54:26编辑过]
|
||||
-- 作者:FireScript -- 发布时间:2018/12/25 11:14:15 -- 1.HOLDING这个是图表上的持仓啊。和后台概念不一样的。还是说你这里面只是一个名称而已。贴下你debugfile的语句。 3.TENTERBARS TEXITBARS 相关的判断应该没能限制到你开平仓了。所以还得看你的CONDBUY CONDSELL 如何定义的了。 最好还是给下你的完整代码吧。
|
||||
-- 作者:xlxl -- 发布时间:2018/12/25 13:12:50 -- ZH1:=\'\'; PZ1:=\'SH510500\'; //条件判断 DIFF := EMA(CLOSE,S) - EMA(CLOSE,P); DEA := EMA(DIFF,M); MACD1 := 2*(DIFF-DEA); CONDBUY:= MACD1>0; CONDSELL:= MACD1<0; //控制日内交易次数 //IF TTOTALDAYTRADE>=2 THEN EXIT; LASTBUY:= TENTERBARS(0)>0 AND ( TEXITBARS(0)<0 OR (TENTERBARS(0)<TEXITBARS(0)) ) ; LASTSELL:=TEXITBARS(0)>0 AND (TEXITBARS(0)<TENTERBARS(0) ) ; a:=TBUYHOLDINGEX(ZH1 ,PZ1 ,2 ); DEBUGOUT(\'持仓=%.0f\',a); //DEBUGOUT(\'TODAYHOLDING=%.0f\',TODAYHOLDING); DEBUGOUT(\'THOLDING=%.0f\',THOLDING); DEBUGOUT(\'TENERBARS=%.0f\',TENTERBARS(1)); DEBUGOUT(\'TEXITBARS=%.0f\',TEXITBARS(1)); DEBUGOUT(\'LASTBUY=%.0f\',LASTBUY ); DEBUGOUT(\'LASTSELL=%.0f\', LASTSELL); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'持仓=%.0f\',a); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'TODAYHOLDING=%.0f\',TODAYHOLDING); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'THOLDING=%.0f\',THOLDING); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'TENERBARS=%.0f\',TENTERBARS(1)); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'TEXITBARS=%.0f\',TEXITBARS(1)); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'LASTBUY=%.0f\',LASTBUY ); DEBUGFILE(\'C:\\金字塔测试\\test2.txt\',\'LASTSELL=%.0f\', LASTSELL); //如果上次不是买入 TBUY(CONDBUY AND not(LASTBUY) ,10000,MKT,0,0,ZH1,PZ1 ); //如果上次不是卖出 TSELL(CONDSELL AND not(LASTSELL) ,10000,MKT,0,0,ZH1,PZ1); ENTERBARS(0)>0 AND ( TEXITBARS(0)<0 or="OR" (TENTERBARS(0)
[此贴子已经被作者于2018/12/25 13:14:17编辑过]
|
||||
-- 作者:xlxl -- 发布时间:2018/12/25 13:18:52 -- 这个是测试debugfile和测试报告, 谢谢 |
||||
-- 作者:xlxl -- 发布时间:2018/12/25 13:26:44 -- 不好意思,上面公式的最后一行是不存在的,可能编辑帖子的时候多加的 ENTERBARS(0)>0 AND ( TEXITBARS(0)<0 or="OR" (TENTERBARS(0)
这个是监测399905,买卖510500的
以下是部分模拟实盘预警信息, 运行结束 |
||||
-- 作者:xlxl -- 发布时间:2018/12/25 13:47:05 -- 以下是引用xlxl在2018/12/25 13:18:52的发言:
这个是测试debugfile和测试报告, 谢谢 文档好像没传上去,再传一遍
|
||||
-- 作者:FireScript -- 发布时间:2018/12/25 14:04:50 -- LASTBUY:= TENTERBARS(0)>0 AND (( TEXITBARS(0)<0 ) OR (TENTERBARS(0)<TEXITBARS(0))) ; LASTSELL:=TEXITBARS(0)>0 AND (TEXITBARS(0)<TENTERBARS(0)) ; 这里面的 TENTERBARS TEXITBARS 没能限制到你的开平仓。因为回测时候这2函数返回值都是-1. 这2个函数依赖于监控的记录,所以回测时候这2个函数不能正确取值的。 你需要用其他方式去实现你的需求。 上面2行代码思路是什么?为什么不直接用持仓情况去判断上次是买还是卖? |
||||
-- 作者:xlxl -- 发布时间:2018/12/25 14:28:59 -- 持仓 容易被其他策略的持仓混淆,TBUYHOLDINGEX无法识别哪个策略的买入 用虚拟持仓HOLDING,DAYHOLDING好像也不行
|