使用 Pine Script 计算极值检测指标
今天我们将做一个改进版本的股票收益计算。我称它为固定的,因为完成后似乎返回具有固定属性。为了对其进行编码,我们将使用名为 Pine Script 的 TradingView 编程语言。
先决条件
为了能够使用 TradingView 图表并在 Pine Script 中编写代码,您必须创建一个完全免费的帐户。单击主屏幕上的图表按钮后,选择您喜欢的任何资产。该指标将根据您当前所在交易品种的图表数据进行计算。在屏幕底部,您会看到一个Pine Editor窗口,单击它并准备好进行一些编码。如果您还没有注册 TradingView,您可以使用我的推荐链接并获得高达 30 美元的积分。
固定收益指标
在 Stationary Returns 指标中,是一个简单但功能非常强大的工具。我们将寻找正回报或负回报的极值,并尝试捕捉曲线的波动。我们将从获取股票中间价以及两周滚动窗口的中间价滚动移动平均值开始。然后将这些转化为回报,我们将使用自然对数。之后,我们必须从收益的滚动移动平均数中减去收益。然后,我们将在每天的时间范围内计算它,并进一步创建一个固定回报的移动平均线并添加波段,以便我们可以寻找极值并搜索可能的波动或均值回归。
在 Pine 脚本中编写固定回报
让我们首先从设置 Pine Script 的版本开始。我们将使用版本 5,这是最新的版本并且有很多强大的新功能。
//@version=5
然后我们必须设置指标的名称,即 Stationary returns。我们还必须将overlay 参数设置为 false,因为比例会在零之上和之下。通过将它设置为 false,我们指定我们的新指标将在一个单独的窗口中,并且它不会混乱或图表。
indicator("固定收益", overlay=false)
接下来,我们必须创建两个变量,我们将在其中存储中间价和滚动移动平均线,以供稍后用于回报公式。
mid_prices = hl2 rolling_mid_prices = ta.sma(hl2, 10)
我们使用内置变量hl2 ,它代表(high-low)/2,即蜡烛的中间价格。ta.sma ()代表 ta。(技术分析包)sma(简单移动平均线),我们将使用它来计算我们的 2 周滚动移动平均线。在括号中,我们指定hl2,这意味着我们将使用中间价格作为来源,10 代表长度。
然后我们计算固定回报,其中我们减去滚动窗口的对数回报的中间价格的对数回报。
stationary_returns = math.log(mid_prices) - math.log(rolling_mid_prices)
math.log()是数学库中的内置函数,log 代表自然对数。
现在我们有了固定收益函数,我们必须在每天的时间范围内计算它。没有必要计算日内数据的回报,因为该指标试图捕捉多日波动。为此,我们将使用request.security()函数,该函数用于多时间范围或多品种数据使用。
stationary_returns_daily = request.security(syminfo.tickerid, "D", stationary_returns)
request.security()函数需要至少 3 个变量,交易品种、时间范围和我们将使用的表达式。第一个syminfo.tickerid意味着我们将使用我们当前使用的代码。“D”代表每日时间范围,stationary_returns是我们要对每日时间范围数据运行的操作。
最后一步是创建固定收益的移动平均值,我选择 20 作为长度,但您可以在此处输入任何您想要用作平均值的数字。
stationary_returns_avg = ta.sma(stationary_returns_daily, 20)
现在我们将添加波段。它们将帮助我们检测价格中的潜在极值。它们将基于输入,因此您可以在“设置”菜单中轻松更改它们。
top_band_value = input.float(0.05, title="Top Band") bot_band_value = input.float(-0.05, title="Bottom Band")hline(top_band_value, title="Top Band", color=color.red) hline(bot_band_value, title="Bottom Band", color=color.red)
唯一剩下的就是绘制结果和波段,我们就准备好了。
plot(stationary_returns_avg, title="固定收益平均值", color=color.green)
plot(stationary_returns_daily, title="固定收益", color=color.blue)
您可以直接在 Pine Editor 中复制/粘贴整个代码以自己使用指标。
//@version=5 indicator("Stationary Returns", overlay=false)top_band_value = input.float(0.05, title="Top Band") bot_band_value = input.float(-0.05, title="Bottom Band")mid_prices = hl2 rolling_mid_prices = ta.sma(hl2, 15)stationary_returns = math.log(mid_prices) - math.log(rolling_mid_prices)stationary_returns_daily = request.security(syminfo.tickerid, "D", stationary_returns)stationary_returns_avg = ta.sma(stationary_returns_daily, 20)plot(stationary_returns_avg, title="Stationary Returns Average", color=color.green) plot(stationary_returns_daily, title="Stationary Returns")hline(top_band_value, title="Top Band", color=color.red) hline(bot_band_value, title="Bottom Band", color=color.red)
这是将其应用于图表时图表的外观。
如果您想创建自定义指标,但没有时间和精力学习 Pine Script,请随时通过下面的链接与我联系。我也是一名专业开发人员,我很乐意帮助您完成您的项目。
最后的想法
技术指标可能非常强大,可以为您的分析提供很多帮助。通过他们,您可以获得有关未来潜在行动和方向的宝贵见解。
但是,我建议您在遇到投资分析、交易技术或策略时始终遵循以下步骤:
- 对你所做的每一个分析都有批判的心态。
- 确保您已经使用现实生活中的模拟和条件对其进行了回测。
- 如果有好看的潜力,请通过前瞻性测试运行它。
就是这样,伙计们。一如既往,随时分享您的想法和建议。如果您想了解更多关于投资分析、算法交易、量化技术和 Pine Script 编程的信息,请关注我以接收最新更新!
干杯!