最近大盘行情不太好,自行折腾点小玩意。
玩指标少不了折腾模板,指标虽然不是万能的,但离开指标又空荡荡的。相信很多同学都习惯将常用指组合成一个个模板,方便看大盘行情及作出趋势判断。但用过通达信的同学都知道,通达信的模板管理功能很弱的,不能自由组合编辑,并且还有模板数量限制。如果你只是需要几个模板看盘的话,自已动动手,在通达信K线图里组合一下就行了,也不需要看下去了。如果你有大量的用户指标,要不断的生成新模板,删除旧模板的话,就要花不少时间精力去组合模板了,而且很多指标都用不上,你还得删掉,折腾来折腾去,人累不说,连看盘的精力都没了。有没有更好的模板组合方法呢?目前好像没有,下面是自己折腾出的一点小玩法,抛砖引玉,供大家参考一下。 一、原理方法 其实很简单,用一张excel表格(大概65536行*256列),将你需要的指标名称放入表格中,(当然,前提是\T0002\prics.dat或prigs.dat文件中要有这些指标公式,并且名称完全相同),按照主图、副图组合的方式形成一个个指标模板,50个指标模板为一组(与系统限制对应),每个指标模板含一个主图和至多9个副图(与系统限制对应)。这样,在表格里就可以实现指标的自由组合,模板的自由编辑,并且你所有用得着的公式指标统统都可以放进去,即便通达信把你的指标模板整丢了,也可以通过这种方式重新生成原模板,也可以生成新模板。 二、首先通过prigs.xls中的vba代码,从prigs.dat读取所有用户指标公式名称(下图中已经把vba代码设置成菜单选项,呵呵,大家不必去学习vba编程,只看看如何操作就行了) 上图中,中间空白行上面是各主图公式名称,下面是各副图公式名称。 三、接下来打开pripack.xls文件,其中sheet1就是我们需要制作的模板格式,再把前面导出的主、副图公式名称复制到sheet2中,这样的可以在pripack.xls文件中进行各个模板制作了。 下面是一张pripack.xls表格,看看做成的模板是什么样的。 说明一下: 1、 表格中阴影部分是一组指标模板,其第一列数据为该组模板各行的说明兼模板组定位。第2列至51列分别对应该组的1~50个指标模板。52列之外为空白。 2、 各个指标模板的数据结构如下:第一行:模板名称(小于8个汉字或16个字符即可,上图中以数字命名,需手工填写);第二行:指标窗口数(主、副图窗口总和,由程序自动统计);第三行:绑定周期(手工填入);第四行:主图名称(复制,粘贴即可);其余各行为副图名称(复制粘贴即可)。 3、 每组模板数据结构是完全相同的。(只是副图数量不同,行数也不同) 三、表格中各组模板编辑好后,保存一下,下面还要用到。如果是严格按上述格式填入数据的,就不用检查了,否则要一项项检查是否有错。 四、模板写入 通达信只能使用其中一组模板(最多50个指标模板,最新版本好像也有这个限制),因此你可以任意写入一组,其余的作为备用,当然如果需要随时可以再次写入其它模板组,达到短时间切换模板看盘的目的。写入方法:1、先点击任意指标,(如果你编辑没有错误的话),该指标对应的模板组被选中,其背景为阴影(如上图所示)。2、点击自定义菜单的“模板写入”项,这样,选中的模板组就被写到了T0002\pripack.dat当中了。(注:通达信启动时是通过pripack.dat调用用户指标模板的)。说明一下:自定义菜单中有三个菜单项,这里分别给它们编写了三个宏模块,(excel一般都自带vba编辑器,其实你懂点vba的话也可以自行编写相关命令,高手都懂的),分别执行模板检查、模板写入、模板读出功能,三个模块配合运行。各个模块的原码都在附件里。这里就贴一下“模板写入”原码,有点凌乱,感兴趣的同学请自行完善。) Option Base 1 Sub writing() Dim temm$, r As Integer, n As Integer, m As Integer, a As Integer, b As Integer, c As Integer, i As Integer Dim j As Integer, k As Integer, s As Integer, p As Integer, q As Integer, arr() As String Application.ScreenUpdating = False If UBound(moban) > 0 And log = True Then i = ActiveCell.Row j = ActiveCell.Column For k = 1 To UBound(moban) - 1 If i >= moban(k) And i < moban(k + 1) Then p = moban(k): q = moban(k + 1) - moban(k) r = Application.CountA(Range(Cells(p, 2), Cells(p, 51))) Exit For End If Next k If q > 0 Then ReDim Preserve arr(r, q) b = 0 For m = 2 To 51 If Cells(p, m).Formula <> "" And b <= r Then b = b + 1 c = 0 For n = p To p + q - 1 c = c + 1 arr(b, c) = Cells(n, m).Formula Next n End If Next m End If Kill path Open path For Binary As #1 temm = Chr(0) For m = 1 To r k = 356 For n = 1 To q If arr(m, n) <> "" And n <> 2 And n <> 3 Then arr(m, n) = Trim(arr(m, n)) Put #1, , arr(m, n) For s = 1 To 32 - LenB(StrConv(arr(m, n), vbFromUnicode)) Put #1, , temm Next s k = k - 32 ElseIf n = 2 Then arr(m, n) = Trim(arr(m, n)) Put #1, , CInt(arr(m, n)) k = k - 2 ElseIf n = 3 And arr(m, n) <> "" Then arr(m, n) = Trim(arr(m, n)) Put #1, , CInt(arr(m, n)) k = k - 2 ElseIf n = 3 And arr(m, n) = "" Then Put #1, , temm + temm k = k - 2 End If Next n If k > 0 Then For s = 1 To k Put #1, , temm Next s End If Next m Close #1 Else MsgBox ("模板有错误,请检查!!!") End If Application.ScreenUpdating = True End Sub 五、接下来看看写入的效果。以上图表格中选中的模板组(阴影部分)写入为例。重启一下通达信,(因为pripack.dat只在通达信启动时才读入内存,不重启新模板是不生效的),如下图 (见截图8) 呵呵,各个指标模板在K线图里已经有了。点击6号模板,看看是不是表格中组合的模板。如下图: (见截图9) 呵呵,还真的一样,说明写入成功!!! 补充一点,如果你的指标模板不见了,可以将任意一个文件放在T0002\下,重命名为pripack.dat,然后照上述方法重写一下,原来的模板又回来了。(注:T0002\prics.dat是系统自带的,里面是系统公式指标,估计各个版本做得差不多的;T0002\prigs,dat里面是用户自编公式指标,所以prigs,dat和表格是万万不能弄丢的) 喜欢的同学请顶一下,不喜请飘过。 PriGs.rar (17.78 KB) pripack.rar (30.85 KB) userini.rar (25.24 KB) (鉴于重新编辑时间有限,请喜欢的同学跟帖交流。) 简单说下: prigs.xls用于读取 prigs.dat中的用户指标名称; pripack.xls用于向pripack.dat读取、写入新模板; (user.xls用于向user.ini读取,写入50个常用指标名称,也许有的同学用不上。); 各个文件已包含完整原码。 注意备份prigs.dat,pripack.dat,user.ini文件; 注意修改prigs.xls,pripack.xls,user.xls文件中VBA代码所对应的文件路径。 祝大家折腾愉快。 [ 本帖最后由 苏州大王 于 2014-6-24 10:12 编辑 ]股票论坛 www. |
|