开拓者期货期权程序化系统交易论坛

标题: 我已开户,请帮忙写指标 [打印本页]

作者: 人生如梦    时间: 2008-8-27 11:37:27     标题: 我已开户,请帮忙写指标

求助nopain老大编写二个函数,急!


在日线中用户函数中有一个求最高值出现的Bar的函数HighestBar,和 求最高值出现的Bar(快速计算版本)的函数HighestBarFC,我想在分钟图上能使用这一个函数找到日线上最高值出现的Bar,并定位。不知道是否能解决这个问题,可以方便我利用日线的最高最低价在分钟图上对压力和支撑位进行判断!

求老大写这样的二个函数一个求日线的最高值的bar在分钟图上出现的位置!并定位!一个求日线的最低值的bar在分钟图上出现的位置!并定位!


是在分钟图上求最近N天最高价/最低价出现的位置!

主要是定位的问题,我是想利用日线找到最高值的bar,然后再找到它在分钟周期上的位置,难就难在如何利用日线找到最高值的bar并体现在分钟图上?


我已经在上海中期开户了,请帮我写一下这个指标好吗?
作者: nopain    时间: 2008-8-27 12:03:16

您的需求是不是这样的:
你希望找到在1分钟线上找到最近5天的最高价出现的Bar.

可以这么来做,先计算对于当前Bar,最近5天应该是多少根1分钟K线。保存到一个序列变量MyLength里面,然后把Length传入HighestBar(High,MyLength); 就可以求出这个Bar的索引值。

问题的难点在于如何动态的求MyLength值,稍后我写一个函数给您吧。
作者: nopain    时间: 2008-8-27 12:34:19

函数BarIndexOfnDays
  1. Params
  2.         Numeric daysAgo(2);
  3. Vars
  4.         NumericSeries barCnt;
  5.         Numeric i;
  6.         Numeric j;
  7.         Numeric nIndex(0);
  8. Begin
  9.         If(Day != Day[1])
  10.         {
  11.                 barCnt = 1;
  12.         }Else
  13.         {
  14.                 barCnt = barCnt[1] + 1;
  15.         }
  16.                
  17.         If(daysAgo == 0)
  18.         {
  19.                 return barCnt;
  20.         }Else
  21.         {
  22.                 For i = 1 To daysAgo
  23.                 {
  24.                         If( i == 1)
  25.                         {       
  26.                                 j = 0;
  27.                         }Else
  28.                         {
  29.                                 j = j + BarCnt[j];                               
  30.                         }
  31.                         If (j > CurrentBar ) Return InvalidNumeric;
  32.                         nIndex = nIndex + BarCnt[j];
  33.                 }
  34.                 Return nIndex;
  35.         }
  36. End
复制代码

作者: nopain    时间: 2008-8-27 12:34:55

测试指标:

  1. Params
  2.         Numeric Length(3);
  3. Vars
  4.         Numeric MyIndex;
  5. Begin
  6.         MyIndex = BarIndexOfnDays(Length);
  7.         If(MyIndex!=InvalidNumeric)
  8.         {
  9.                 PlotNumeric("HighValuer",Highest(High,MyIndex));
  10.                 PlotNumeric("HighIndex",HighestBar(High,MyIndex));
  11.         }
  12. End
复制代码

作者: nopain    时间: 2008-8-27 12:35:37

这个函数计算很慢,因为用到大量的循环,特别是日期设置比较长的时候。
作者: thjyqr    时间: 2008-8-27 13:09:32

return barCnt;不是只能用于函数编写吗
作者: 人生如梦    时间: 2008-8-27 14:34:02

很谢谢老大的帮助,我回去试试
作者: nopain    时间: 2008-8-27 15:10:01

原帖由 thjyqr 于 2008-8-27 13:09 发表
return barCnt;不是只能用于函数编写吗


这不就是在函数中用嘛




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2