以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 交易策略发布专区 (http://weistock.com/bbs/list.asp?boardid=10) ---- 【模块】金字塔”排序“解决方案(图表)版 (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=48494) |
-- 作者:RogarZ -- 发布时间:2013/2/6 17:43:10 -- 【模块】金字塔”排序“解决方案(图表)版 去年发布了一个金字塔排序解决方案。主要是用通过金字塔的后台tinsort函数,解决实盘排序的问题。但并不完美,留下的遗憾是tinsort为后台函数无法测试。 通过此贴,我们将彻底解决此问题,不再留有遗憾,图表也能方便的进行排序、测试啦!!。 那为什么以前不可以,现在可以了呢?这个得益于金字塔2.93版改进的数组(矩阵)功能。 以往我们图表要做与”排序“相关的策略是个很复杂的过程。比如我们开盘要对10个品种的涨幅进行排序。笨办法是我们通过STKINDI两两比较后,才能得出结果。技术稍高的朋友会采用“冒泡排序”,但依然相当复杂、繁琐,每个品种所对应的排名依然很难获得。 那么现在通过金字塔的改进后的数组功能后,情况是怎么样的?我们为了统一,依然以后台版的例子为例。 描述:开盘后,我们根据KDJ的K值由大到小排序,品种为CU,RU,M,CF,IF, 策略:当交易的品种为CU, CU的排名为第一且无持仓时下单。 首先,我们需要建立数组,然后通过HOD2函数取的排序值。 VARIABLE: X[5]=0; X[1]:=STKINDI(\'CU00\',\'KDJ.K\',0,6,0); X[2]:=STKINDI(\'RU00\',\'KDJ.K\',0,6,0); X[3]:=STKINDI(\'M00\',\'KDJ.K\',0,6,0); X[4]:=STKINDI(\'CF00\',\'KDJ.K\',0,6,0); X[5]:=STKINDI(\'IF00\',\'KDJ.K\',0,6,0); CU排名:HOD2(X,5,X[1]),LINETHICK0; RU排名:HOD2(X,5,X[2]),LINETHICK0; M排名:HOD2(X,5,X[3]),LINETHICK0; CF排名:HOD2(X,5,X[4]),LINETHICK0; IF排名:HOD2(X,5,X[5]),LINETHICK0;
以CU为例,若CU排序为1,并且无持仓,我们就下单。 IF CU排名=1 and holding=0 then buy(1,1,market); 注:这个范例抛砖引玉,通过新的数组功能,以往很复杂的计算都能很简单的处理了。例如N个值中取最大、最小值。 其次HoD2是从大到小排,反过来从小到大排用Lod2函数。 最后HOD2 LOD2的函数说明读起来不太易理解,主要的参数问题,是在于我代码中用红色表示的部分。 概括的讲,以这次举例是例,5个值排序这个值就选5,是20个这个值就取20。具体说明待下个版本完善。 “排序”后台版: http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=25476&page=2 汇总贴: http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=34055 |
-- 作者:ackvz -- 发布时间:2013/2/6 18:53:20 -- 顶 你不早点写这个模版 这玩意我搞了好多天
后来出了LOD2 HOD2 这2个函数 才搞定 |
-- 作者:D -- 发布时间:2013/3/3 12:04:43 -- 如果想取得排名第五的KDJ的K值,怎样得到? |
-- 作者:Change_1206_ -- 发布时间:2013/3/30 11:39:41 -- http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=48494&page=2 这是你关于这个问题的解决方法!最近我也针对你这个解决方案只做了一个策略模型,也是选取8个主力 合约,获取他们固定时间涨跌幅的值,对涨跌幅至进行排序,排序之后获得最大值和最小值,做多最大 值,同时做空最小值对应的合约。那么现在我在编写的过程中遇到了一个问题,我这是一个对冲策略, 到了第二天,我会在开盘后九点过2分钟的时候分别对着两个约合的盈利情况做一个判断,如果说整体 是盈利的,那么我同时将这两个合约同时平仓掉,如果说整体是亏损的,那么我将两个合约同时拿到九点半 ,到了九点半不管是亏是赢,都平仓掉。 那么问题是,我需要用穷举法,分别将模型加载到这五个合约的K线图上,举个简单的例子,今天结束做多CU ,做空pta,分别将模型对应加载上去。到了第二天,在做整体判断盈利情况的时候,在CU上,我需要调用pta 开盘后的数据,获得他是亏是赚,在结合自身做比较,如果都是赚的,则马上平仓,如果都是亏的,那么拿到 九点半平仓,我想知道这个过程我该如何实现?
|
-- 作者:RogarZ -- 发布时间:2013/3/30 19:56:02 -- 以下是引用Change_1206_在2013-3-30 11:39:41的发言:
1、使用stkindi函数引用 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=48494&page=2 这是你关于这个问题的解决方法!最近我也针对你这个解决方案只做了一个策略模型,也是选取8个主力 合约,获取他们固定时间涨跌幅的值,对涨跌幅至进行排序,排序之后获得最大值和最小值,做多最大 值,同时做空最小值对应的合约。那么现在我在编写的过程中遇到了一个问题,我这是一个对冲策略, 到了第二天,我会在开盘后九点过2分钟的时候分别对着两个约合的盈利情况做一个判断,如果说整体 是盈利的,那么我同时将这两个合约同时平仓掉,如果说整体是亏损的,那么我将两个合约同时拿到九点半 ,到了九点半不管是亏是赢,都平仓掉。 那么问题是,我需要用穷举法,分别将模型加载到这五个合约的K线图上,举个简单的例子,今天结束做多CU ,做空pta,分别将模型对应加载上去。到了第二天,在做整体判断盈利情况的时候,在CU上,我需要调用pta 开盘后的数据,获得他是亏是赚,在结合自身做比较,如果都是赚的,则马上平仓,如果都是亏的,那么拿到 九点半平仓,我想知道这个过程我该如何实现?
2、使用全局变量EXTGBDATA、EXTGBDATASET记录(适用于整个金字塔)
[此贴子已经被作者于2013-3-30 19:56:17编辑过]
|
-- 作者:ljwgbb -- 发布时间:2013/4/23 9:31:57 -- 好帖,强大,顶! |
-- 作者:hlrhjh -- 发布时间:2013/8/14 19:12:51 -- 根本不行的 |