HQChart使用教程34-如何在麦语法中自定义函数

151 篇文章 33 订阅

新版本看下面教程(ver > 9129)

HQChart使用教程30-K线图如何对接第3方数据26-指标脚本自定义函数

麦语法变量

目前系统语法提供很多系统函数如MA, BETA …等。HQChart允许动态增加自定义函数,来满足你的业务需求

增加系统自定义变量函数

JSComplier.AddFunction(obj) 可以往HQChart增加一个自定义函数

JSComplier.AddFunction({ Name:'函数名',Download:函数所需数据下载函数, Invoke:函数调用 } );

Name

函数名, 大写,如果和系统提供的函数名冲突, 自定义函数无效

Download

函数需要数据下载函数, 在指标初始化的时候会调用, 支持异步取数据,如果不需要下载数据设置为null.

Invoke

自定义函数调用,及自定义函数功能实现。

例子 用户某一个股票持仓的市值数据

USERMARKETVALUE(close) = 用户买卖某一个股票市值, close 是每天的收盘价 ,
计算方法:每日的收盘价(close)*每天的持仓。
数据返回:持仓股票的市值

  1. 我们定义个用户股票持仓数据下载函数
 var USER_POSITION;  //用户某个股票的持仓
 function DownloadUserPosition(obj)
 {
     console.log('[DownloadUserPosition] obj ', obj);
     //模拟异步读取用户信息
     setTimeout(()=>
     { 
         USER_POSITION=new Map([         //日期 Vol:持仓
             [20190705, {Vol: 3000 }],   
             [20190714, {Vol: 4000 }],
             [20190806, {Vol: 2000 }],
             [20190826, {Vol: 3000 }],
             [20190902, {Vol: 10000 }],
         ]);
         obj.Success(); //通知HQChart数据已到达继续执行, 需要要调用,否则指标会一直等待
     }, 500);
     
 }

DownloadUserPosition入参(obj)说明

数据截图

在这里插入图片描述

Name

函数名称

Symbol

股票代码

Args

函数参数列表 数组类型。 再数据下载中,参数如果是一个变量,数据是没有的只有一个变量名。

KData

K线数据

Period

周期

Right

复权

Success

通知HQChart数据下载完成函数

  1. 定义一个USERMARKETVALUE函数实现
function GetUserMarketValue(obj)
 {
      console.log('[GetUserMarketValue] obj ', obj);
      var result=[];
      var preVol=0;   //最近一次持仓信息
      var aryClose=obj.Args[0];   //获取第1个参数 (收盘价)
      for(var i in obj.KData.Data)
      {
          result[i]=0;
          var item=obj.KData.Data[i];
          if (USER_POSITION.has(item.Date)) 
          {
              preVol=USER_POSITION.get(item.Date).Vol;
              result[i]=preVol*aryClose[i];
          }
          else    //延用最近一次的持仓信息
          {
              result[i]=preVol*aryClose[i];
          }
      }

      return result;
  }  

GetUserMarketValue入参(obj)说明

数据截图

在这里插入图片描述

Name

函数名称

Args

函数参数列表, 数组类型。 这里Args[0] 就对应 参数变量 close

Symbol

股票代码

KData

K线数据

Period

周期

Right

复权

返回

int/double 型的数组

  1. 把自定义函数添加到HQChart里
 JSComplier.AddFunction({ Name:'USERMARKETVALUE',Download:DownloadUserPosition, Invoke:GetUserMarketValue } );
  1. 写一个指标测试下吧
    T2:USERMARKETVALUE(CLOSE);

  2. 效果图
    在这里插入图片描述

如果还有问题可以加交流QQ群: 950092318

HQChart代码地址
地址:github.com/jones2000/HQChart

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值