龙听期货论坛's Archiver

龙听 发表于 2019-1-6 22:10

【模块】金字塔关于模型“排序”解决方案(图表版)

[font=verdana][size=14px][size=16px]去年发布了一个金字塔排序解决方案。主要是用通过金字塔的后台tinsort函数,解决实盘排序的问题。但并不完美,留下的遗憾是tinsort为后台函数无法测试。[/size][/size][/font]
[color=#323e32][font=verdana][size=14px][size=16px]
[/size][/size][/font][/color]
[color=#323e32][font=verdana][size=14px][size=16px]通过此贴,我们将彻底解决此问题,不再留有遗憾,图表也能方便的进行排序、测试啦!![/size][/size][/font][/color]
[color=#323e32][font=verdana][size=14px][size=16px]那为什么以前不可以,现在可以了呢?这个得益于金字塔2.93版改进的数组(矩阵)功能。[/size][/size][/font][/color]
[color=#323e32][font=verdana][size=14px][size=16px]
[/size][/size][/font][/color]
[color=#323e32][font=verdana][size=14px][size=16px]以往我们图表要做与”排序“相关的策略是个很复杂的过程。比如我们开盘要对10个品种的涨幅进行排序。笨办法是我们通过STKINDI两两比较后,才能得出结果。技术稍高的朋友会采用“冒泡排序”,但冒泡排序理解起来相对复杂、繁琐,实际操作中求品种所对应的排名有一定难度。[/size][/size][/font][/color]
[color=#323e32][font=verdana][size=14px][size=16px]
[/size][/size][/font][/color]
[color=#323e32][font=verdana][size=14px][size=16px]那么现在通过金字塔的改进后的数组功能后,情况是怎么样的?我们为了统一,依然以后台版的例子为例。[/size][/size][/font][/color]
[color=#323e32][font=simsun][size=14px][p=18, 2, left][size=16px]
[/size][/p][p=18, 2, left][size=16px]描述:开盘后,我们根据KDJ的K值由大到小排序,品种为CU,RU,M,CF,IF,[/size][/p][p=18, 2, left][size=16px]策略:当交易的品种为CU, CU的排名为第一且无持仓时下单。[/size][/p][p=18, 2, left][size=16px]
[/size][/p][p=18, 2, left][size=16px]首先,我们需要建立数组,然后通过HOD2函数取的排序值。[/size][/p][p=21, 2, left] [/p][p=21, 2, left][size=16px]VARIABLE: X[5]=0;[/size][/p][p=21, 2, left][size=16px]X[1]:=STKINDI('CU00','KDJ.K',0,6,0);[/size][/p][p=21, 2, left][size=16px]X[2]:=STKINDI('RU00','KDJ.K',0,6,0);[/size][/p][p=21, 2, left][size=16px]X[3]:=STKINDI('M00','KDJ.K',0,6,0);[/size][/p][p=21, 2, left][size=16px]X[4]:=STKINDI('CF00','KDJ.K',0,6,0);[/size][/p][p=21, 2, left][size=16px]X[5]:=STKINDI('IF00','KDJ.K',0,6,0);[/size][/p][p=21, 2, left][size=16px]
[/size][/p][p=21, 2, left][size=16px]CU排名:HOD2(X,5,X[1]),LINETHICK0;[/size][/p][p=21, 2, left][size=16px]RU排名:HOD2(X,5,X[2]),LINETHICK0;[/size][/p][p=21, 2, left][size=16px]M排名:HOD2(X,5,X[3]),LINETHICK0;[/size][/p][p=21, 2, left][size=16px]CF排名:HOD2(X,5,X[4]),LINETHICK0;[/size][/p][p=21, 2, left][size=16px]IF排名:HOD2(X,5,X[5]),LINETHICK0;[/size][/p]
[p=21, 2, left][url=http://www.weistock.com/bbs/UploadFile/2013-2/20132617341044418.jpg][attach]6363[/attach][/url]
[size=16px]如上图,我们排序值都求出来了,接下来就简单了。[/size][/p][p=21, 2, left][size=16px]
[/size][/p][p=21, 2, left][font=&quot][size=16px]以CU为例,若CU排序为1,并且无持仓,我们就下单。[/size][/font][/p][p=21, 2, left][size=16px][font=&quot]IF [/font][font=&quot]CU排名=1 and holding=0 then buy(1,1,market);[/font][/size][/p][p=21, 2, left][font=&quot][size=16px]
[/size][/font][/p][p=21, 2, left][font=&quot][size=16px]注:这个范例抛砖引玉,通过新的数组功能,以往很复杂的计算都能很简单的处理了。例如N个值中取最大、最小值。[/size][/font][/p][p=21, 2, left][font=&quot][size=16px]    其次HoD2是从大到小排,反过来从小到大排用Lod2函数。[/size][/font][/p][p=21, 2, left][font=&quot][size=16px]    最后HOD2 LOD2的函数说明读起来不太易理解,主要的参数问题,是在于我代码中用[b]红色[/b]表示的部分。[/size][/font][/p][p=21, 2, left][font=&quot][size=16px]    概括的讲,以这次举例是例,5个值排序这个值就选5,是20个这个值就取20。具体说明待下个版本完善。[/size][/font][/p][/size][/font][/color]

页: [1]