期货量化交易软件:创建多交易品种、多周期指标

本文详细解释了赫兹量化交易软件中指标的计算与绘图过程,涉及指标句柄的使用、时间序列数据的管理和CopyBuffer函数的作用。文章还介绍了资源高效计算策略,如OnCalculate函数和如何在多交易品种、多周期环境下处理数据和时间框架转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本原则

为了正确理解指标操作的逻辑,赫兹量化交易软件试着了解它是如何工作的。指标分为两部分:计算和绘图。这些部分中的每一个都对另一个一无所知。当创建指标时,终端子系统在图表上查找这样的指标是否存在。在这种情况下,它会查找具有相同名称和参数的指标。如果这样的指标已经在图表上运行,或者已经为此图表以编程方式创建,则终端将使用现有指标的句柄,而不是创建新指标。指标的绘图部分使用其句柄从计算部分接收所需的数据。可能存在多个绘图部件同时访问一个计算部件的情况。

计算部分的缓冲区将计算出的指标的数据存储在具有从现在到过去排列的数据的数组中。缓冲区数组索引0处的数据对应于当前图表数据:

添加图片注释,不超过 140 字(可选)

数组的每个单元存储一个柱形图的数据,该柱形图对应于计算指标的交易品种/周期的时间序列柱形图。因此,为了从指标计算部分的缓冲区中获得数据并将其显示在另一个交易品种/时间框架的图表上,您需要计算计算部分缓冲区数组中与柱形图的时间相对应的图表上的柱形图编号。应将获得的数据写入绘图部分缓冲区,以便将当前图表中与计算部分缓冲区中柱形图开盘价相匹配的所有柱形图添加到绘图缓冲区的相应单元格中。

例如,五分钟图表周期上的一个柱对应于一分钟图表上的五个柱。一分钟图表的所有这五个柱都必须填充与它们在时间上对应的五分钟柱的值。类似的算法用于在较高的时间框架图上呈现较低时段的数据。在这种情况下,来自计算部分缓冲器的单元格的所有柱,对应于较高TF图上的柱的时间,被绘制在绘制缓冲区的一个柱上。

当然,读数可能并不精确,因为最终该柱将仅代表最后一个较低TF柱的数据,该数据与相应较高TF柱的时间相匹配。这里的一切都取决于从较低时间段的计算部分缓冲区接收数据的方向,最后接收的数据将绘制在较高时间段图表的柱形图上。

CopyBuffer()函数从计算的指标的缓冲区中获取数据:

函数将指定数量的指定指标缓冲区的数据接收到“buffer”数组中。 复制数据的元素(具有索引buffer_num的指标缓冲区)从开始位置开始计数,从现在到过去,也就是说,等于0的开始位置表示当前柱(当前柱的指标值)。 如果事先不知道要复制的数据量,建议使用动态数组作为目标数组缓冲区,因为CopyBuffer()会尝试将接收数组的大小分配到复制的数据的量。如果接收数组缓冲区是一个指标缓冲区(之前由SetIndexBufer()函数分配的用于存储指标值的数组),则允许部分复制。 如果需要将指标值部分复制到另一个数组(而不是指标缓冲区),则应使用一个中间数组,将所需数量复制到该数组中。从这个中间数组中,逐个成员将所需数量的值复制到接收数组的所需位置。 如果需要复制预定量的数据,建议使用静态分配的缓冲区,以避免不必要的内存重新分配。 接收数组的属性,即as_series=true或as_series=false,将被忽略:在复制过程中,最旧的元素将被复制到为数组分配的物理内存的开头。有三种函数选项。 按根据初始位置和所需元素的数量的访问 int CopyBuffer( int indicator_handle, // indicator handle int buffer_num, // indicator buffer index int start_pos, // starting point int count, // amount to copy double buffer[] // array the data to be copied to ); 按初始日期和所需元素数量访问 int CopyBuffer( int indicator_handle, // indicator handle int buffer_num, // indicator buffer index datetime start_time, // starting date int count, // amount to copy double buffer[] // array the dat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值