以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://weistock.com/bbs/list.asp?boardid=2) ---- 请教 (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=66269) |
-- 作者:qq代人发帖 -- 发布时间:2014/6/17 16:08:29 -- 请教 请教:同样的单个策略,运行在33个周期上,通过引用各个周期的持仓,汇总交易,挂在不同的服务器上,交易结果手续费差异很大。 怎样单策略运行在33个周期上进行交易,只允许交易前25个信号,后8个信号屏蔽,怎么办可以做到呢?目前我用引用的方式,
发现某个时刻会发生频繁的平开的交易,造成额外的手续费和消耗,如今天一台就出现,另外一台就没有,怎么回事呢? 此主题相关图片如下:1.jpg 此主题相关图片如下:2.jpg [此贴子已经被作者于2014/6/17 16:09:40编辑过]
|
-- 作者:yukizzc -- 发布时间:2014/6/17 16:20:30 -- 首先看下不同服务器图表开平信号位置都一样不?频繁的开平交易这个需要你勾选下交易日志然后贴出来我们来分析是什么造成的。 只允许交易前25个信号,后8个信号屏蔽。这个是指只交易25次这个意思后面即使条件达到了也不会去开平,可以看下这个帖子的2.2限定交易次数http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=53236&star=1 |
-- 作者:Ivan -- 发布时间:2014/6/17 16:21:04 -- 我觉的之所以频繁平了,再开,原因可能是汇总各个周期的持仓时,在某些时刻,某个周期还没计算完信号,而轮询时间到了,就会出现汇总偏差,导致发生不该发生的交易,如20个周期开了多单,但在某些时候,有1个周期没计算完,这个时候轮询时间到了,那么只有19个周期有信号,这个时候是会平仓,接下来持仓同步会恢复持仓,这样就频繁平开交易了,怎么组合多周期交易呢? |
-- 作者:yukizzc -- 发布时间:2014/6/17 16:28:02 -- 你各周期信号本身稳定吗?加上小周期引用大周期本来就是相当于有了未来函数,加上你还启用同步持仓功能 |
-- 作者:admin -- 发布时间:2014/6/17 17:03:53 -- 金字塔提供了DEBUGFILE函数,专用用来调试策略的,估计你从来不用 |
-- 作者:Ivan -- 发布时间:2014/6/17 22:41:23 -- 以下是引用yukizzc在2014/6/17 16:28:02的发言:
你各周期信号本身稳定吗?加上小周期引用大周期本来就是相当于有了未来函数,加上你还启用同步持仓功能 是调用各周期的持仓信号,而各周期的持仓信号是自身周期的数据计算出来的,哪来的未来函数?各周期偶尔会有信号闪,但很少的,问题是同样一套策略,运行在不同电脑上,一个实盘一个模拟,怎么实盘会是模拟3倍的手续费呢? |
-- 作者:Ivan -- 发布时间:2014/6/17 22:59:51 -- 以下是引用yukizzc在2014/6/17 16:20:30的发言:
首先看下不同服务器图表开平信号位置都一样不?频繁的开平交易这个需要你勾选下交易日志然后贴出来我们来分析是什么造成的。 只允许交易前25个信号,后8个信号屏蔽。这个是指只交易25次这个意思后面即使条件达到了也不会去开平,可以看下这个帖子的2.2限定交易次数http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=53236&star=1
2014-06-17 13:36:55.753 【图表】IF00 运行完毕 2014-06-17 13:37:53.753 【图表】IF00 运行完毕 2014-06-17 13:38:52.753 【图表】IF00 运行完毕
2014-06-17 13:39:54.753 【图表】IF00 运行完毕 2014-06-17 13:41:58.753 【图表】IF00 运行完毕 2014-06-17 13:42:50.753 【图表】IF00 运行完毕 |
-- 作者:Ivan -- 发布时间:2014/6/17 23:03:12 -- 以下是引用yukizzc在2014/6/17 16:20:30的发言:
首先看下不同服务器图表开平信号位置都一样不?频繁的开平交易这个需要你勾选下交易日志然后贴出来我们来分析是什么造成的。 只允许交易前25个信号,后8个信号屏蔽。这个是指只交易25次这个意思后面即使条件达到了也不会去开平,可以看下这个帖子的2.2限定交易次数http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=53236&star=1 我的意思是每个周期是单手下单的,33个周期前25个开仓的信号允许交易,而后面其它周期开仓的信号则不允许交易,不是限制交易次数,也就是说,最大允许交易的手数是25手。 |
-- 作者:qwer123 -- 发布时间:2014/6/18 8:31:57 -- 1.手续费:如果你的实盘手续费和模拟盘的手续费设置是一样的,程序不存在其他问题,那么手续费的结果应该一样。 如果手续费设置一样,而结果不一样,说明交易次数出现了差异。你可以查一下两台机子的交易次数。 2.手续费的不同意味着你的交易次数是不同的,这种净单交易最怕的是信号闪,所以在程序中你要避免信号不稳定的问题,提前下单是禁止使用的,在下单条件中都要使用 if ref(a,1).......then 就是上根k线条件成立,这根k线开盘时交易(稳定的信号可以当根k线交易)。 3.同样的程序,在同样的服务器配置和机房,如果程序信号本身存在“闪”的问题,那么运行结果(交易次数)是不一样的。 4.同样的程序,在同样的服务器配置和机房,信号不闪,交易的结果(收益)也不一样。 3.4主要是数据时间差,发单时间差,单子排队的顺序不同造成的。 5.最大允许交易手数25手的方法: h1:=stkindiex(\'\',\'abc.持仓\',0,.......); h2:=.................. ................. h33:=....................hh:=h1+.......+h33; hhh:=if(hh<=25 and hh>=-25,hh,if(hh<-25,-25,25)); 如果你是用后台,不会出现什么问题,如果你是使用图表(从你的叙述来看你用的是图表)一定要注意“每根k线,每个语句的单方向只交易一次”的问题,一般来说如果你的信号是稳定的就不要使用“持仓同步”了。 6.效率问题,我有一台8核服务器,在用净单方法交易时,使用了10个stkindiex,结果有一个核的cpu达到80%,有4个为0,其他3个核就是4-5%左右。你用了33个“stkindiex”,我想一定会很卡的,系统没有办法正常运行,会出现意想不到的交易情况。在这里也咨询运行金字塔的客服,有没有办法解决这个问题。 你使用的是图表,引用了33个持仓,最大持仓25,那么要么你使用最小的周期,这样要求参与计算的k线数就很多,要么你使用大一点的周期但主程序必须运行25变,以确保不会丢单。 7.程序代码 r12:=hhh; hd1:=0; //***************第一遍*************** if holding=0 and r12>0 then buy(1,r12,limitr,c+hd1); if holding=0 and r12<0 then buyshort(1,abs(r12),limitr,c-hd1); if holding>0 and r12>0 and holding>r12 then sell(1,holding-r12,limitr,c-hd1); if holding>0 and r12>0 and holding<r12 then buy(1,r12-holding,limitr,c+hd1); if holding>0 and r12<0 then begin sell(1,holding,limitr,c-hd1); buyshort(1,abs(r12),limitr,c-hd1); end if holding<0 and r12<0 and holding>r12 then buyshort(1,holding-r12,limitr,c-hd1); if holding<0 and r12<0 and holding<r12 then sellshort(1,r12-holding,limitr,c+hd1); if holding<0 and r12>0 then begin sellshort(1,holding,limitr,c+hd1); buy(1,r12,limitr,c+hd1); end if r12=0 and holding>0 then sell(holding>0,0,limitr,c-hd1); if r12=0 and holding<0 then sellshort(holding<0,0,limitr,c+hd1); //***************第二遍*************** if holding=0 and r12>0 then buy(1,r12,limitr,c+hd1); if holding=0 and r12<0 then buyshort(1,abs(r12),limitr,c-hd1); if holding>0 and r12>0 and holding>r12 then sell(1,holding-r12,limitr,c-hd1); if holding>0 and r12>0 and holding<r12 then buy(1,r12-holding,limitr,c+hd1); if holding>0 and r12<0 then begin sell(1,holding,limitr,c-hd1); buyshort(1,abs(r12),limitr,c-hd1); end if holding<0 and r12<0 and holding>r12 then buyshort(1,holding-r12,limitr,c-hd1); if holding<0 and r12<0 and holding<r12 then sellshort(1,r12-holding,limitr,c+hd1); if holding<0 and r12>0 then begin sellshort(1,holding,limitr,c+hd1); buy(1,r12,limitr,c+hd1); end if r12=0 and holding>0 then sell(holding>0,0,limitr,c-hd1); if r12=0 and holding<0 then sellshort(holding<0,0,limitr,c+hd1); 。。。。。。。。。。。。。。。。。。。。 |
-- 作者:瑟郎 -- 发布时间:2014/6/18 8:48:20 -- 你这是明显信号闪烁了,导致持仓同步频繁工作了 |