导语
开始操作吧!
什么是Pine Script?
创建
Pine Script简单易用。我们编写的任何代码都是在TradingView的服务器上运行,因此我们可以通过浏览器访问编辑器并开发我们的脚本,无需额外下载或配置。
您的图表数据可能更新。
功能齐全的图表。您可通过点击高亮选项卡上方的视图来调整时间表。
The Pine Editor
研究(“我的脚本”)
绘制图表(收盘)
现在,让我们试试以下方法:
//@version=4 study("My Script", overlay=true) plot(open, color=color.purple)
许多交易者更喜欢使用K线图,比起我们刚才做的那种简单图表,K线图能为我们提供更多信息。接下来让我们将绘制的图表添加进去。
//@version=4 study("My Script", overlay=true) plotcandle(open, high, low, close)
//@version=4 study("My Script", overlay=true) colors = open >= close?color.red: color.green plotcandle(open, high, low, close)
这要查看每一张K线图,检查开盘价是否高于或等于收盘价。如果情况如此,就意味着价格在这段时间内下跌,K线图将变成红色。否则会变成绿色。修改plotcandle()函数,添加该颜色方案:
//@version=4 study("My Script", overlay=true) colors = open >= close?color.red: color.green plotcandle(open, high, low, close, color=colors)
如果您还没有删除现有指标,请将其删除,并将这一指标添加到图表中。现在我们应该就绘制出了一张类似于K线图的图表。
干得漂亮!
绘制移动平均线(MA)
简单移动平均线(SMA)
我们也可以绘制SMA,这样我们之后就可以对两者进行对比了。将该行添加到您的脚本中。
plot(sma(close, 10))
这绘制的是前十天平均数图表。调整括号里的数字,看长度变化时,曲线是如何变化的。
SMA基于前十天的数据。
指数移动平均线(EMA)
EMA的理解比较复杂,但不用担心。我们先来分析一下这个公式:
EMA=(收盘价-前一天的EMA)*倍数-前一天的EMA
这说明什么呢?每一天,我们会在前一天的基础上计算出一个新的移动平均线值。倍数是“加权”最近的天数,用以下公式计算:
倍数=2/(EMA长度+1)
与简单移动平均线一样,我们需要为EMA的长度赋值。在句法上,绘制EMA函数与绘制SMA函数类似。将其与SMA一起绘制,您就可以将两者进行对比了。
//@version=4 study("My Script", overlay=true) plot(sma(close, 10)) plot(ema(close, 10))
您会看到这两种类型的MA略有不同。
内置脚本
到目前为止,我们已经手动编写了我们的代码,您会有一个直观感受。现在我们会介绍一些能够节约时间的功能,特别是如果我们要编写更复杂的脚本,但又不想从头开始的时候。
点击并将其添加到图表中。
绘制相对强弱指数(RSI)指标图表
回溯测试
有一种方法可供我们测试自己的自定义指标。虽然过去的表现不能保证未来的结果,但对我们的脚本进行回溯测试可以使我们了解其在捕捉信号方面的有效性。
下面我们将举一个简单的脚本例子。我们计划一个简单明了的策略,当比特币的价格跌至1.1万美元时进入多头头寸,当价格超过1.13万美元时退出多头头寸。然后我们可以看到这一策略在历史上的盈利情况。
//@version=4 strategy("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")
因此,如果价格小于或等于我们期望的入市价,且第一个表达式评估为真,我们将建立一个多头头寸。一旦价格等于或超过所需的退市价,第二个区块将被触发,关闭所有未平仓头寸。
现在您可以在图表中看到这些指标。可能需要放大。
我们已经进入和退出的头寸。
结合起来
现在,我们可以利用目前为止看到的一些概念来编写我们自己的脚本。我们会将EMA和RSI结合起来,用它们的值来影响K线图的颜色,使我们可以轻松看懂。
但这并不构成理财建议,在使用这些指标方面,客观地说并没有完全正确的方法。与其他所有工具一样,应该将其与其他工具相结合,制定自己的投资策略。
现在让我们来研究一下新脚本。从图表中删除所有指标,同时隐藏比特币/BUSD图表,这样我们就有一个简洁的操作背景了。
study(title="Binance Academy Script", overlay=true)
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0)
根据这一新变量,我们可以计算出图表中每张K线图的EMA值:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength)
很好。接下来让我们看一下RSI。我们将以类似方式为它赋一个长度值:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0)
现在,我们可以计算一下:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)
在这个阶段,让我们把决定K线图颜色的逻辑结合在一起,这些颜色要取决于EMA和RSI的值。让我们假设(a)K线图的收盘价超过EMA,(b)RSI高于50。
因此,我们的下一行代码会类似于这样:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50? color.green: color.red
接下来,绘制EMA图表:
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50? color.green: color.red plot(emaVal, "EMA")
study(title="Binance Academy Script", overlay=true) emaLength = input(title="EMA Length", type=input.integer,defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="RSI Length", type=input.integer,defval=25, minval=0) rsiVal = rsi(close, rsiLength) colors = close > emaVal and rsiVal > 50?color.green: color.red plot(emaVal, "EMA") plotcandle(open, high, low, close, color=colors)
然后,脚本就编写好了!把它添加到图表中,看看它的运作情况吧。
一张含EMA/RSI指标的比特币/BUSD图表。
总结
在本文中,我们通过一些基本例子来向您演示了TradingView上Pine Editor的功能。现在,您应该有信心对价格图表进行简单注释,以便从自己的指标中获得更多见解。
依然缺乏灵感?下列文章可能为您的下一个项目提供一些想法: