我们来解决这个问题:一个问题的解决方法和途径有很多。在下面我只是选择了几个解决这类问题的方法进行分享。
REF,,SPK;
HIGH>REF,,BK;
CROSS,BPK;
在信号的分析和统计上应用信号竞争与仲裁的情况较多。
a.选择等待K线走完再发指令,也就是勾选文华软件界面上的等待K线走完选项。
例如:在设计追踪止损模块时,根据追踪止损概念,设定的获利阀值和回撤止损值全部是固定的某一数值,在真正的应用中,即使是有一定效果,可是这个效果并不是很好,观察下来不难发现,这个止损的合理值和近期的振幅存在非常大的关系,同时这种关联的表现类似为一个顶点在第一象限的二次函数象。
根据历史数据的分析和统计,我们知道一些前辈们已经总结出非常多的有意义的规律,但是如果我们再加以深度观察,或许可以发现一些不曾被重视的规律。
在我们设计和调整程序化交易模型的过程之中,我们一定会遇到大大小小,各个方面的问题,当我们遇到问题的时候,不能遇到问题就是简单的解决就完事了。我们要研究发生这个问题的根本原因,做出深入的分析,避免同类问题的产生。
发现规律和利用规律
下面就是我以简单的均线穿透模型为例,和大家来分析一下,其中可能存在的问题和解决方案:
CROSS,SPK;
-B/=F;
虽然上面的方法可以解决这个问题,但是还是存在一点瑕疵,就是它也带来了与理想设计相比的延时情况。我们要想做到理想效果的话,不如就试一试以上穿为例,来分析一下穿透的瞬态,我们以简单平均算法的原理和开平条件为根据,可以发现穿透瞬态一定要满足下面的条件:
REF,,BPK;
用简单的哲理解决复杂的问题
MA1:=MA;
CLOSE=HIGH并且MA1>=MA同时MA1和MA2要共用CLOSE,因为HIGH拥有上增长不可逆这一特点,在这个瞬间我们选择HIGH替代和它相等的CLOSE,就能够做到排除指令反复和消失情况。自然大家也看出来,这只是对这个连续持仓的模型而言,假如是断续持仓的模型,那要考虑的问题就更多了。
这样做就能够使计算机在IF的控制下执行和做完今天所有的安排,假如只能在表的最后一天统计或者绘甚至交易,自然也可以按照自己本身的习惯有其他姊妹写法,但是前提必须是天天向上。比如:
把上面的方程组解开,就可以求出A和B,接下来将A,B,D带入上面的函数表达式,就完成了Y代表的止损值的自适应变化,Y会在最小止损值D到最大止损值TOP这个范围内,它的变化会根据X的变化而变化,事实上,它就是上面抛物线函数在第一象限的部分连续曲线段。
MA1:=,*+CLOSE)/N1;
所以现在我们假定D是最小止损值,振幅是X,实际止损值是Y,那么下面就是文华语言的函数关系式表示:
CROSS,BPK;
根据这个例子,在反手操作上同样应用它,实际效果也是很好的。
MA2:=MA;
发现问题分析问题解决问题
MA1:=MA;
/4A=TOP;
TODAY:=IF,0);
现在我们就可以应用下面的代码,来体现原模型的思想和解决指令反复和消失的情况。
我们来分析一下这个问题:从上表中,我们可以了解到价格特征和均价公式,因为引用了盘中可变的CLOSE,所以致使指令反复和消失。
我们都知道,时间是最珍贵的东西,它过去了就是过去了,不可能再回来了。所以我们今天的事情,不可以拖拖拉拉,要珍惜时间,今天事今日毕。同样的道理也适用在程序化交易的程序中,让它们也按照这个道理执行下去:
LOW很明显,在持续持仓的系统中假如把上面的两条语句的条件部分应用其中,因为平台有自动过滤机制,就不会出现大的问题,可是假设把它应用到不过滤系统或者有混合指令的断续交易系统中去呐?要是在空仓状态下,当本周最高价>前四周最高价的同时最低价<前4周最低价,这个时候在相同的一个周期内既要做多又要做空就出现了冲突,换句话说就是信号竞争,模型是多还是空呢?这个时候就有必要引入仲裁机制了。
Y:=MAX+B*X+D);
我们根据上面的数据,可以分析得出,这个模型在实盘交易中,一定会出现指令反复和消失的情况,那我们来研究一下这个问题。我们都知道。在K线的数据之中,像开盘价、最高价、最低价、收盘价这四种数据,是经常使用的。
MA1L:=,*+LOW)/N1;
在交易模型设计中,是允许竞争的,也不一定必须仲裁,但是一定要根据实际情况,各种因数都考虑到,在做出决定要不要仲裁。
信号竞争与仲裁
验证
一般的情况下也会选择形化验证,历史数据测试,K线复盘,实时模拟测试等等方式。
TODAY:=ZIGZAG;
对竞争进行仲裁的方法非常多,利用趋势仲裁或者使用已经发生的某一状态和指标等来进行仲裁都可以。
以MA原理为依据可以知道,下面的两行代码是等价。
或者TODAY:=PEAK;
MA1H:=,*+HIGH)/N1;
MA1:=MA;
MA2:=MA;
MA2L:=,*+LOW)/N2;
b.选择不勾选等待K线走完,而是将模型更改如下,选用开盘价测试相对来说会准确一些,交易模型成交点会在开盘价附近产生,信号显示与指令是同一时间,指令时效与上面的一样。
CROSS,SPK;
MA2H:=,*+HIGH)/N2;
止损值必须要有一定的范围,因此第一步就是定义最小值D和最大值,通过统计分析就能够得出来,与此同时还能够找到对应止损最大值的幅度,用F代表这个已知幅度,因为函数曲线的顶点在第一象限,顶点值也就是最大止损值,用TOP代表已经知道的最大止损值,现在要想计算出A和B可以应用线面的方程组:
文章为作者独立观点,不代表股票交易接口观点