设为首页收藏本站

 找回密码
 注册
楼主: 追涨杀跌
打印 上一主题 下一主题

跨周期数据转换函数以及跨周期技术指标调用的实现 [复制链接]

Rank: 10Rank: 10Rank: 10

精华
0
UID
20842
积分
931
帖子
382
主题
2
阅读权限
255
注册时间
2010-12-3
最后登录
2022-2-15
51#
发表于 2011-7-12 11:40:04 |只看该作者
回复 56# 读书山林

XAverage的其实已经写了,在MtMACD的实现中,就用到了,当时省得函数调用函数,就直接写里面了,您可以参考一下。回头再把它单独写到MtXaverage中。

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
52#
发表于 2011-7-12 17:24:31 |只看该作者
回复 57# 追涨杀跌


   
追涨老师帮看下MtXAverage函数 写的对吗
  1. //------------------------------------------------------------------------
  2. // 简称: MtXAverage
  3. // 名称: 跨期求指数移动平均(EMA)
  4. // 类别: 用户函数
  5. // 类型: 用户函数
  6. // 输出: 数值型
  7. //------------------------------------------------------------------------


  8. Params
  9.         Numeric TimeFrame(1440);        // 目标时间周期参数,参数说明参见MtBar
  10.         Numeric BarsBack(1);         // 目标时间周期BAR偏移参数,说明见MtBar函数
  11.         Numeric Length(10);


  12. Vars
  13.         NumericSeries mtBarCnt;
  14.         NumericSeries mtCurBar;
  15.         NumericSeries mtClose;
  16.                
  17.         Numeric refCurBar;
  18.         Numeric refOpen;
  19.         Numeric refHigh;
  20.         Numeric refLow;
  21.         Numeric refClose;
  22.         Numeric refVol;
  23.         Numeric refOpenInt;
  24.         
  25.         Numeric sFcactor;
  26.         NumericSeries XAvgValue;
  27.         
  28. Begin

  29.         mtBarCnt = MtBar(TimeFrame,BarsBack,refCurBar,refOpen,refHigh,refLow,refClose,refVol,refOpenInt);
  30.         mtCurBar = refCurBar; // 目标时间周期下的Bar索引
  31.         mtClose = refClose;   // 目标时间周期下的开盘价
  32.                
  33.                 sFcactor = 2 / ( Length + 1 );
  34.                 if (MtCurBar == 0 || XAvgValue1[mtBarCnt] == InvalidNumeric)
  35.                 {
  36.                         XAvgValue = XAvgValue1 = mtClose;
  37.                 }else
  38.                 {
  39.                         XAvgValue = XAvgValue1[mtBarCnt] + sFcactor * ( mtClose - XAvgValue1[mtBarCnt] ) ;
  40.                 }       
  41.                 Return XAvgValue;

  42. End
复制代码

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
53#
发表于 2011-7-12 17:28:24 |只看该作者
回复 57# 追涨杀跌

有点错误 重新整理了一下
  1. //------------------------------------------------------------------------
  2. // 简称: MtXAverage
  3. // 名称: 跨期求指数移动平均(EMA)
  4. // 类别: 用户函数
  5. // 类型: 用户函数
  6. // 输出: 数值型
  7. //------------------------------------------------------------------------


  8. Params
  9.         Numeric TimeFrame(1440);        // 目标时间周期参数,参数说明参见MtBar
  10.         Numeric BarsBack(1);         // 目标时间周期BAR偏移参数,说明见MtBar函数
  11.         Numeric Length(10);


  12. Vars
  13.         NumericSeries mtBarCnt;
  14.         NumericSeries mtCurBar;
  15.         NumericSeries mtClose;
  16.                
  17.         Numeric refCurBar;
  18.         Numeric refOpen;
  19.         Numeric refHigh;
  20.         Numeric refLow;
  21.         Numeric refClose;
  22.         Numeric refVol;
  23.         Numeric refOpenInt;
  24.         
  25.         Numeric sFcactor;
  26.         NumericSeries XAvgValue;
  27.         
  28. Begin

  29.         mtBarCnt = MtBar(TimeFrame,BarsBack,refCurBar,refOpen,refHigh,refLow,refClose,refVol,refOpenInt);
  30.         mtCurBar = refCurBar; // 目标时间周期下的Bar索引
  31.         mtClose = refClose;   // 目标时间周期下的开盘价
  32.                
  33.                 sFcactor = 2 / ( Length + 1 );
  34.                 if (MtCurBar == 0 || XAvgValue[mtBarCnt] == InvalidNumeric)
  35.                 {
  36.                         XAvgValue = mtClose;
  37.                 }else
  38.                 {
  39.                         XAvgValue = XAvgValue[mtBarCnt] + sFcactor * ( mtClose - XAvgValue[mtBarCnt] ) ;
  40.                 }       
  41.                 Return XAvgValue;

  42. End
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
0
UID
20842
积分
931
帖子
382
主题
2
阅读权限
255
注册时间
2010-12-3
最后登录
2022-2-15
54#
发表于 2011-7-12 18:27:53 |只看该作者
本帖最后由 追涨杀跌 于 2011-7-12 18:29 编辑

回复 59# 读书山林

写得很正确。 SMA也可以尝试写一下,应该可以的。

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
55#
发表于 2011-7-12 18:39:46 |只看该作者
本帖最后由 追涨杀跌 于 2011-7-12 23:31 编辑

回复 60# 追涨杀跌


    恩 再帮我检查下看SMA 有什么错误吗
  1. //------------------------------------------------------------------------
  2. // 简称: MtSMA
  3. // 名称: 跨期求移动平均
  4. // 类别: 用户函数
  5. // 类型: 用户函数
  6. // 输出: 数值型
  7. //------------------------------------------------------------------------

  8. Params
  9.     Numeric TimeFrame(1440);        // 目标时间周期参数,参数说明参见MtBar
  10.         Numeric BarsBack(1);         // 目标时间周期BAR偏移参数,说明见MtBar函数
  11.         Numeric Length(10);
  12.         Numeric Weight(1);
  13. Vars
  14.         NumericSeries mtBarCnt;
  15.         NumericSeries mtCurBar;
  16.         NumericSeries mtClose;
  17.                
  18.         Numeric refCurBar;
  19.         Numeric refOpen;
  20.         Numeric refHigh;
  21.         Numeric refLow;
  22.         Numeric refClose;
  23.         Numeric refVol;
  24.         Numeric refOpenInt;
  25.         
  26.             NumericSeries SMAValue;
  27. Begin

  28.         mtBarCnt = MtBar(TimeFrame,BarsBack,refCurBar,refOpen,refHigh,refLow,refClose,refVol,refOpenInt);// 目标时间周期内小周期Bar的索引
  29.         mtCurBar = refCurBar; // 目标时间周期下的Bar索引
  30.         mtClose = refClose;   // 目标时间周期下的收盘价
  31.                
  32.                 if (MtCurBar == 0 || SMAValue[mtBarCnt] == InvalidNumeric)
  33.                 {
  34.                         SMAValue = mtClose;
  35.                 }else
  36.                 {
  37.                         SMAValue = (SMAValue[mtBarCnt]*(Length-Weight)+mtClose*Weight)/Length;
  38.                 }       
  39.                 Return SMAValue;
  40. End
复制代码

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
0
UID
20842
积分
931
帖子
382
主题
2
阅读权限
255
注册时间
2010-12-3
最后登录
2022-2-15
56#
发表于 2011-7-13 11:03:17 |只看该作者
回复 61# 读书山林

代码没有问题,谢谢读书山林的热心帮助!!

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
57#
发表于 2011-7-13 14:47:49 |只看该作者
可是把自己的策略跨期写了一下,输出值不对

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
58#
发表于 2011-7-13 15:09:12 |只看该作者
回复 62# 追涨杀跌


    追涨老师把 MtXAverage 和MtSMA 函数中的  数据源 mtClose 直接替换为Price,当Price=一个序列变量的时候可以直接调用吗,源码不用做其他的修改吧

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
30159
积分
1116
帖子
280
主题
23
阅读权限
60
注册时间
2011-3-23
最后登录
2019-3-21
59#
发表于 2011-7-13 16:24:16 |只看该作者
回复 62# 追涨杀跌


    我检查了一下 还是MtSMA函数的问题,我写的 SMA 函数 求目标周期的收盘价mtClose 的SMA是没问题,可以一把mtClose 替换为其他序列变量就不可以啦 ,请追涨老师写一个数据源为Price,可以替换为任意序列变量的跨期SMA

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
0
UID
20842
积分
931
帖子
382
主题
2
阅读权限
255
注册时间
2010-12-3
最后登录
2022-2-15
60#
发表于 2011-7-13 22:30:26 |只看该作者
回复 65# 读书山林

我觉得是不可能写一个数据源为Price,然后任何序列数据替换进去都可以的MtSMA,否则就不是跨周期的SMA函数。这里面的原因就在于,mtClose和普通Close的区别。所以处理上是有区别的

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-9 08:10

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部