设为首页收藏本站

 找回密码
 注册
查看: 1822|回复: 2
打印 上一主题 下一主题

函数解读,求老师帮忙 [复制链接]

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
1#
发表于 2019-11-12 09:40:29 |显示全部楼层
先给你一个①的解决方案。趁今早有时间,编了指数移动平均的算法,做成了公式应用 - 交易策略,可以直接用在K线图上检验。没有做成函数,你可以根据自己的需求改成函数。
  1. Params
  2.         Numeric Length(30);
  3.         Numeric Weight(1);
  4. Vars
  5.         NumericSeries EWMAValue;
  6.         Numeric lambda;
  7. Begin
  8.         // 计算前Length周期内Bar的移动平均值(SMA),作为初始EWMA值
  9.         If (CurrentBar == 0)
  10.                 EWMAValue = Close;
  11.         Else If(CurrentBar <= Length)
  12.                 EWMAValue = (EWMAValue[1]*(Length-Weight)+Close*Weight)/Length;
  13.        
  14.         // 计算加权移动平均值(EWMA)
  15.         lambda = 2/(1+Length);
  16.         If(CurrentBar > Length)
  17.                 EWMAValue = Close*lambda + EWMAValue[1]*(1-lambda);

  18.         PlotNumeric("EWMA",EWMAValue);
  19. End
复制代码

使用道具 举报

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
2#
发表于 2019-11-13 16:41:58 |显示全部楼层
应该不能这样用。做成函数的话要有一个输入序列变量,如NumericSeries Price(1)。你可以参照其他公式函数。然后将程序里面的Cloes变成Price。但还有另外一个待问题,就是我这种简单的程序没法直接变成函数。最简单的办法是把这一段程序加到你自己的程序里,这样就可以直接用EWMAValue值了,而且运行速度比做成函数要快很多。

使用道具 举报

Rank: 4

精华
0
UID
110114
积分
380
帖子
314
主题
16
阅读权限
50
注册时间
2012-4-20
最后登录
2021-12-29
3#
发表于 2019-11-14 13:26:40 |显示全部楼层
因为EWMAValue不是函数,是变量,所以不能写成EWMAValue()的形式。如果想设N=50,则需要在公式应用设置中将Length的参数制改为50就可以了。如果你的X指的不是收盘价,而是成交量或K线高点的话,那就要将程序中的Close改为Vol或High。这样CAOPANXIAN = EWMAValue;就可以了。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-4 03:33

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部