丁丁打折网 - 网友优惠券分享网站,有688999个用户

京东优惠券 小米有品优惠券

当前位置 : 首页>web3>TradingView指标创建:Pine Script实战

TradingView指标创建:Pine Script实战

类别:web3 发布时间:2025-07-14 20:15

探索TradingView的Pine Script:自定义图表和技术分析

没有合适的交易工具,进行有效的技术分析几乎是不可能的。一个强有力的交易策略不仅能帮助我们避免常见的错误,还能改善风险管理,增强我们发现和利用机会的能力。对于许多人来说,TradingView是首选的图表平台。这个基于HTML5的强大网络应用为数百万人提供了跟踪外汇、加密货币和传统股票市场动态的工具。

TradingView的功能非常强大,它允许我们跨多个交易平台追踪资产,并在其社交网络中发布交易想法。在本文中,我们将重点介绍它的自定义功能。我们将使用Pine Script,这是一种由TradingView开发的编程语言,使我们能够精细控制图表布局。

Pine Script是什么?

Pine Script是一种编程语言,允许你对TradingView的图表进行修改。虽然平台本身已经提供了许多功能,但Pine Script使我们能够更进一步。无论是想要改变K线的颜色,还是测试新的策略,Pine Editor都能让我们根据需求自定义实时图表。

Pine Script的代码文档非常详细,建议大家查阅用户手册以获取更多信息。本教程的目标是讨论一些基础知识,并介绍一些在加密货币交易中可能有用的指标。

设置Pine Script

使用Pine Script非常简单。我们编写的代码将在TradingView的服务器上运行,因此我们可以在浏览器中访问编辑器并开发脚本,无需任何额外的下载或配置。在本教程中,我们将以比特币/币安美元(BTCBUSD)货币对为例进行图表绘制。如果你还没有账户,可以创建一个免费账户(虽然有专业订阅服务,但本指南不需要)。

进入图表界面后,点击“全功能图表”按钮,以获得更详细的视图、绘图工具和绘制趋势线的选项等。图表底部左侧有几个不同的标签,点击“Pine Editor”进入编辑器。

Pine Editor的使用

在Pine Editor中,我们可以编写代码,并通过点击“添加到图表”来查看注释结果。如果同时包含多个注释,图表可能会变得混乱,因此建议在不同示例之间移除它们(右键点击图表并选择“移除指标”)。

我们先看一下已经存在的代码,点击“添加到图表”看看会发生什么。会看到一个新的图表出现在原图表下方,展示相同的数据。移除这个新图表(悬停在“我的脚本”上,点击关闭图标),然后我们深入了解代码。

首先,我们看到的“study”函数用于设置注释。它需要一个名称(如“我的脚本”),还可以添加一些可选参数。其中一个是“overlay”,它告诉TradingView将指标放置在现有图表上(而不是新段)。默认情况下,它设置为“false”。

接着,“plot(close)”函数用于绘制比特币的收盘价。除了绘制线图外,我们还可以显示K线和条形图。

我们尝试编写一个新的代码段,绘制开盘价,并设置“overlay=true”以在现有图表上显示指标:

```//@version=4study("我的脚本", overlay=true)plot(open, color=color.purple)```

添加后,你会看到一个新的图表,看起来像是原始图表向右移动了一点。我们只是绘制了开盘价,由于当天的开盘价等于前一天的收盘价,所以形状相同。

接下来,我们清除当前的注释(右键点击并选择“移除指标”),并隐藏当前的BTC/BUSD图表,为下一个示例准备一个干净的画布。我们将添加K线图,因为它比简单的线图提供了更多的信息:

```//@version=4study("我的脚本", overlay=true)plotcandle(open, high, low, close)```

虽然这是一个好的开始,但缺少颜色看起来有些单调。我们希望在给定时间框架内,如果开盘价高于收盘价,K线为红色;如果收盘价高于开盘价,则为绿色。我们在plotcandle()函数前添加一行代码来实现这个效果:

```//@version=4study("我的脚本", overlay=true)colors = open >= close ? color.red : color.greenplotcandle(open, high, low, close, color=colors)```

移除现有的指标,并将这个新指标添加到图表上。现在,我们应该看到一个类似于常规K线图的图表。

绘制移动平均线(MA)

我们已经掌握了一些基础知识。现在让我们进入第一个自定义指标——指数移动平均线(EMA)。EMA是一个有价值的工具,因为它能过滤市场噪音,平滑价格走势。EMA与简单移动平均线(SMA)略有不同,它对最近的数据给予更高的权重,通常用于短期交易(例如日内交易)。

首先,我们绘制SMA,以便稍后与EMA进行比较:

```plot(sma(close, 10))```

这绘制了过去十天的平均值。你可以调整括号中的数字,看看当考虑不同长度时曲线如何变化。

接下来,我们绘制EMA。EMA的计算公式如下:

```EMA = (收盘价 - 前一天的EMA) * 乘数 + 前一天的EMA```

乘数的计算公式为:

```乘数 = 2 / (EMA长度 + 1)```

我们需要指定EMA的长度。绘制EMA的函数与SMA类似。我们在图表上同时绘制SMA和EMA,以便比较:

```//@version=4study("我的脚本", overlay=true)plot(sma(close, 10))plot(ema(close,10))```

你可以看到这两种移动平均线之间的细微差异。

内置脚本

到目前为止,我们都是手动编写代码的。但让我们介绍一种可以节省时间的方法,特别是当我们编写更复杂的脚本时,不想从头开始。在编辑器右上角,点击“新建”,你会看到一个下拉菜单,包含各种不同的技术指标。点击“指数移动平均线”,你可以看到EMA指标的源代码。这个版本与我们之前写的不同,你会注意到“input()”函数。这些函数从可用性角度看很好,因为你可以点击这个框...

...然后在弹出窗口中轻松更改一些值,点击“设置”轮盘。我们将在下一个脚本中添加几个“input()”函数来演示这一点。

绘制相对强弱指数(RSI)指标

相对强弱指数(RSI)是技术分析中另一个重要的指标。它被称为动量指标,测量资产的买卖速度。在0到100的范围内,RSI分数试图告知投资者资产是否被超买或超卖。通常,如果分数小于或等于30,资产可能被认为是超卖的;如果分数大于或等于70,则可能被认为是超买的。

如果你点击“新建 > RSI策略”,你可以自己看到这个情况。RSI通常是在14个周期(例如14小时或14天)内测量,但你可以根据自己的策略调整这个设置。

将这个指标添加到图表上。你现在应该看到一些箭头(由代码中的“strategy.entry()”函数定义)。RsiLE表示可能的做多机会,因为资产可能被超卖。RsiSE突出显示可能的做空点,因为资产被超买。请注意,与所有指标一样,你不应该完全依赖这些作为价格将下降/上升的铁证。

回测

我们可以通过回测来测试我们的自定义指标。虽然过去的表现并不能保证未来的结果,但回测我们的脚本可以让我们了解它们在捕捉信号方面的有效性。

我们将提供一个简单的脚本示例。我们将创建一个简单的策略,当比特币价格低于11,000美元时进入做多头寸,当价格超过11,300美元时退出头寸。然后我们可以看到这个策略在历史上会有多盈利:

```//@version=4strategy("ToDaMoon", overlay=true)enter = input(11000)exit = input(11300)price = close

if (price <= enter)strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip")if (price >= exit)strategy.close_all(comment="SellTheNews")

</p><p>我们定义了“enter”和“exit”作为变量——两者都是输入,意味着我们稍后可以在图表上更改它们。我们还设置了“price”变量,它获取每个周期的收盘价。然后,我们有一些逻辑形式的“if”语句。如果括号中的部分为真,则下面的缩进块将被执行。否则,它将被跳过。</p><p>因此,如果价格小于或等于我们的期望进入点,第一个表达式为真,我们将开启一个多头头寸。一旦价格等于或超过我们期望的退出点,第二个块将被触发,关闭所有开放头寸。</p><p>我们将在图表上用箭头标注进入/退出点,因此我们使用“comment”参数指定这些点的标签(在这个例子中,“BuyTheDip”和“SellTheNews”)。复制代码,并将其添加到图表上。</p><p>TradingView会自动将你的规则应用于旧数据。你还会注意到它从Pine Editor切换到“策略测试器”标签。这允许你看到潜在利润的概览、交易列表以及每个交易的个别表现。</p><h2>综合应用</h2><p>现在是时候使用我们到目前为止看到的一些概念来编写我们自己的脚本了。我们将结合EMA和RSI,并根据它们的数值来为K线着色,以提供我们可以轻松可视化的洞察。这不应被视为财务建议——使用这个指标没有客观正确的办法。像所有其他指标一样,它应该与其他工具结合使用,以开发你自己的策略。</p><p>我们从定义我们的研究开始。随意命名它,只要确保设置“overlay=true”即可:</p><p>```study(title="币安学院脚本", overlay=true)

记住我们之前的EMA公式。我们需要为乘数提供EMA的长度。让我们将其设置为一个需要整数的“input”(因此没有小数点)。我们还将设置一个最小值(“minval”)和一个默认值(“defval”):

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)```

使用这个新变量,我们可以计算图表中每个K线的EMA值:

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)emaVal = ema(close, emaLength)```

接下来是RSI。我们将以类似的方式为它提供一个长度:

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)emaVal = ema(close, emaLength)rsiLength = input(title="RSI长度", type=input.integer, defval=25, minval=0)```

然后,我们可以计算它:

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)emaVal = ema(close, emaLength)rsiLength = input(title="RSI长度", type=input.integer, defval=25, minval=0)rsiVal = rsi(close, rsiLength)```

现在,我们将根据EMA和RSI的值来决定K线的颜色。我们考虑一种情况,当(a)K线的收盘价超过EMA,并且(b)RSI高于50时,为什么呢?你可能会认为这些指标可以结合使用,告诉你何时做多或做空比特币。例如,你可能认为满足这两个条件意味着进入做多头寸的时机很好。或者相反,你可能用它来告知你何时不应该做空,即使其他指标显示相反的情况。

因此,我们的下一行代码将是这样的:

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)emaVal = ema(close, emaLength)rsiLength = input(title="RSI长度", type=input.integer, defval=25, minval=0)rsiVal = rsi(close, rsiLength)colors = close > emaVal and rsiVal > 50 ? color.green : color.red```

如果我们用简单的英语翻译一下,我们只是在说,如果EMA值超过收盘价,并且RSI分数超过50,我们将K线设为绿色。否则,我们将它设为红色。

接下来,绘制EMA:

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)emaVal = ema(close, emaLength)rsiLength = input(title="RSI长度", type=input.integer, defval=25, minval=0)rsiVal = rsi(close, rsiLength)colors = close > emaVal and rsiVal > 50 ? color.green : color.redplot(emaVal, "EMA")```

最后,绘制K线,确保包含“color”参数:

```study(title="币安学院脚本", overlay=true)emaLength = input(title="EMA长度", type=input.integer, defval=25, minval=0)emaVal = ema(close, emaLength)rsiLength = input(title="RSI长度", type=input.integer, defval=25, minval=0)rsiVal = rsi(close, rsiLength)colors = close > emaVal and rsiVal > 50 ? color.green : color.redplot(emaVal, "EMA")plotcandle(open, high, low, close, color=colors)```

这就是我们的脚本!将它添加到图表上,看看它是如何运行的。

结语

在这篇文章中,我们介绍了一些使用TradingView的Pine Editor的基本示例。现在,你应该对在价格图表上进行简单的注释以从自己的指标中获得额外洞察力充满信心。我们只关注了几个指标,但很容易创建更复杂的指标——要么通过从“新建”中选择内置脚本,要么自己编写它们。如果缺乏灵感,以下文章可能会为你的下一个项目提供一些想法:

  • 抛物线SAR指标简介
  • 掌握斐波那契回撤指南
  • 领先和滞后指标解释
  • MACD指标解释

丁丁打折网©版权所有,未经许可严禁复制或镜像 ICP证: 湘ICP备20009233号-2

Powered by 丁丁打折网本站为非营利性网站,本站内容均来自网络转载或网友提供,如有侵权或夸大不实请及时联系我们删除!本站不承担任何争议和法律责任!
技术支持:丁丁网 dddazhe@hotmail.com & 2010-2020 All rights reserved