以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 新手乐园 (http://222.73.7.161/bbs/list.asp?boardid=16) ---- 有关在交易策略中图表和后台策略编写相互混用的说明 (http://222.73.7.161/bbs/dispbbs.asp?boardid=16&id=140324) |
|
-- 作者:小峨武 -- 发布时间:2016/9/30 12:42:16 -- 有关在交易策略中图表和后台策略编写相互混用的说明
首先,金字塔不建议程序化初学者在图表程序化交易策略中使用后台程序化函数,因为图表和后台是基于2种不同的工作机制,比如图表的Holding函数,必须要在使用Buy、Buyshort交易函数在图表的历史价位上开仓后才会有正确结果,同理例如后台的TENTERPRICE函数也同样需要TBUY等后台专用交易语句在后台程序化的环境下才能正常使用。如果图表上贸然使用TENTERPRICE函数,将会导致该函数无法返回正常值,而导致图表交易策略没法正常工作。 那么既然2者混用编程会导致问题,金字塔为什么还允许2者同时可以存在一个策略中而不导致编译出错呢?因为金字塔是面向高端投资者的一款程序化交易软件,两者混用编程虽然容易导致问题,但是并不表示不可以,一些特殊场合情况是允许这样操作的,我们主要举例如下:
图表交易策略中使用后台函数
这是目前我们最普遍使用的一种方式,主要原因是图表交易策略使用的是虚拟的持仓,以及借助历史虚拟交易记录的这么一个工作体系,如果您此刻对图表程序化的工作机制还不了解的话,我们强烈建议认真学习一下我们的科普教程贴 深度理解金字塔公式系统的工作机理 。如果我们在实盘交易过程中,需要盘中对我们的实际的持有资金以及实际的仓位进行控制的话,那么图表虚拟交易就显得有些过于不方便,这时我们就可以考虑在代码中加入适量的后台资金管理和仓位函数进行控制,因为后台的函数全部是基于你的实际持仓和资金的。
范例1:假设我们的图表策略上,如果当前我们已经有实际持仓了,图表策略再出现开仓信号后则不再实际开仓交易。为了满足这个条件,我们必须要使用后台的THOLDING函数,考虑到我们有的是股票的交易客户,股票是T+1模式,当日开仓后由于不能平仓,THOLDING将一直为0,因此我们使用更灵活的TBUYHOLDING(1)来代替,由于后台交易在逐K线模式下仅最后一个K线周期才是有效的,对于我们图表策略来说是不能直接使用的,因为如果将后台的函数带入图表的开平仓条件中,将导致整个图表策略全部失效了,因此我们需要做一些特别处理,也就是历史的信号保护措施,处理方案就是将我们的开仓代码进行一些控制,因为我们的实盘交易是在最后 1-2根K线出现信号后才有效的(走完K线模式是倒数第二根),因此我们只要控制最后的K线按照我们要求出现信号,而不影响历史的交易信号即可。为了能使用后台的函数,我们一般是将后台的这类函数封装成一个独立的用户函数,然后再图表策略中调用。 上述范例要求的代码范例如下: 我们新建一个公式,名称比如是 : MYHOUTAIFUN, 然后公式运行一定要选择为“序列”模式,因为只有这样,我们在逐K线模式引用时才可以在非最后一根K线上使用该函数返回值。 公式代码只有一行: MYHOLDING:TBUYHOLDING(1);
那么接下来我们在实际的图表策略中,可以这样写了
cond := 开仓条件; MYHOLDING:= #MYHOUTAIFUN.MYHOLDING#; //引用我们之前设计的公式
|