
解锁新技能,和学长一起学Pine Script
想系统学习 Pine Script 教程?这篇文章带你了解 TradingView 交易脚本的核心价值、适合人群与学习路线,帮助你把交易思路逐步转化为指标和策略。

想系统学习 Pine Script 教程?这篇文章带你了解 TradingView 交易脚本的核心价值、适合人群与学习路线,帮助你把交易思路逐步转化为指标和策略。

如何修复TradingView的”无法在学习脚本中使用策略功能”错误? 在TradingView中,我们能创建的脚本主要有两种:指标(indicators)和策略(strategies)。前者通常用于在图表上绘图和标...

是什么导致TradingView出现”无法使用参数调用”的错误? 我们经常在TradingView的指标和策略脚本中使用大量的函数。但有时,这些函数的参数会触发’cannot call with argu...

如何纠正TradingView中的”输入不匹配”编码错误? 当我们编写TradingView指标和策略脚本时,必须遵守Pine语言的语法规则,这就像我们写作时要遵守语法一样。哪怕只是一个放错位置的字符,都可能触发...

如何纠正TradingView的”字符处没有可行的替代方案”错误? 在TradingView Pine中编程,就像学习一门语言一样。我们需要遵循特定的语法规则(syntax),才能编写出有效的代码。一旦我们违反了这些...

什么原因导致TradingView出现”未声明的标识符”错误消息? 几乎所有的TradingView脚本都会使用自定义的、由用户定义的变量,其中有相当一部分甚至会使用自定义函数。这些变量和函数有助于避免代码重复,并使...

如何修复TradingView的”索引深度不足”错误 每一个TradingView指标或策略脚本都需要依赖一定数量的历史K线来进行计算。当TradingView无法自动判断出脚本到底需要多少根历史K线时,它就会触发&...

如何修复TradingView的”错误”或”不正确”会话错误消息? 在我们的TradingView脚本中,我们可以用四种不同的格式来编写自定义的交易时段。但当我们定义交易时段的方式有误时,就会...

使用TradingView的VIX反转策略交易标准普尔500指数 反转交易策略试图捕捉市场的每一次上下波动,但其缺点是始终在市,承担着持续的风险。本文将介绍一种旨在降低这种市场风险的策略思想——VIX反转策略。让我们来一探究竟。 微趋势交易...

为TradingView Pine编写的单边配对交易策略 通过配对交易(pairs trading),我们试图通过买入一种资产、同时做空另一种资产来保持市场中性。但这种交易方法存在显著的风险。一种同样利用两种工具之间价差、但风险特征不同的替...

为TradingView编写的外包月策略 价格形态策略旨在寻找特定的K线组合,观察它们是否预示着一轮价格运动,或是标志着一段趋势的终结。其中一种形态便是月度外包线(Outside Month)。本文将探讨如何将这种价格行为编写成一个Trad...

在TradingView Pine中编写唐奇安通道突破交易策略 理查德·唐奇安(Richard Donchian)在他那个时代是一位成功的交易员。他提出了如今闻名遐迩的唐奇安通道(Donchian Channel),该指标根据一段时间内的最...

为TradingView编写的趋势与形态入场交易策略 移动平均线是趋势跟踪策略中用于产生入场和出场信号的常用工具。但如果我们将趋势指标与逆势入场信号相结合,会发生什么呢?本文将探讨这样一个策略的行为和表现。 带形态入场的趋势策略:一种顺大势...

TradingView的简单移动平均线(SMA)交叉策略 移动平均线是一种广受欢迎的技术指标。它们能抚平价格的毛刺,揭示市场在更长时间维度上的行为,从而帮助我们将当前价格置于更宏观的视角中。这一特性也使得它们在趋势跟踪者中备受青睐。本文将探...

为TradingView编写的双重移动平均线趋势跟踪策略 移动平均线是大多数交易者不可或缺的指标。它们能抚平价格毛刺,平滑其他指标的读数,并辅助解读成交量。基础的趋势跟踪系统也常常使用移动平均线来建立多头和空头仓位。但这些基础的策略究竟有效...

如何在TradingView中编写唐奇安趋势策略 交易N周期突破是一种常见的趋势跟踪方法。然而,其问题在于,相当一部分的突破最终会失败。这不仅会降低策略的胜率,还会直接造成资金损失。但是,如果我们利用市场的整体趋势来过滤高低点的突破信号呢?...

为TradingView编写的ATR通道突破策略 趋势跟踪可以是一种盈利能力极强的交易方法,但这种方法的执行难度也相当高:其胜率通常很低,且回撤幅度巨大。接下来,让我们一同了解并衡量一种经典的趋势跟踪策略在TradingView平台上的具体...

TradingView支持自动交易吗? 目前,TradingView平台并不支持原生的自动化交易功能。策略脚本只能在回测模式下运行。 这意味着,一个策略可以测试某个特定的交易系统在历史数据上的表现如何,也可以在实时数据上模拟虚拟订单。但是,...

了解TradingView策略的保证金追缴 当一个TradingView策略启用了 long margin 和/或 short margin 设置后,图表上有时会冒出一个所谓的Margin call(追加保证金通知)。这到底是什么,它又意味...

TradingView的Pine Script策略所需保证金如何运作? 通过使用保证金,一个TradingView策略可以开立远超其账户资金规模的头寸。然而,仓位的大小是有限制的。正如在真实交易中一样,策略需要有足够的权益作为持仓的抵押品。...

了解TradingView Pine Script中基于现金的默认订单规模 一个TradingView策略可以使用多种默认的订单规模计算方式。其中一种,就是基于一个固定的现金金额来确定下单量。 要启用这种方式,我们可以在Pine Scrip...

了解TradingView Pine Script中的固定数量默认订单大小 TradingView策略提供了几种默认的订单数量计算方法。其中一种选择是,始终使用一个固定的数量作为默认的订单大小。 有三种方式可以启用这种订单大小类型:我们可以...

停止基于每周亏损交易的TradingView策略 好的策略不仅能发出盈利信号,还应在市场状况不利时有效控制亏损。一种在环境不佳时避免交易的有效方法,就是限制每周的亏损交易笔数。一旦触及这个上限,便暂停本周的交易,待下周再战。本文将详细介绍如...

如何根据每周损失停止TradingView策略? 一个遭受了重大亏损的策略,需要表现出非凡的业绩才能挽回损失。通常情况下,防范于未然,远比从大额亏损中恢复要容易得多。本文将探讨如何让一个TradingView策略能够基于周度亏损上限来自动停...

如何在连续n次亏损后停止TradingView策略? 无论一个交易策略多么优秀,遭遇一连串的连续亏损都只是时间问题。这种情况不仅会损害我们的账户回报,也会极大地打击我们的交易信心。管理这种风险的有效方法之一,便是在发生极端的连败时,果断停止...

限制策略的日内交易数量:strategy.risk.max_intraday_filled_orders()函数 理想情况下,我们的策略只应在存在正向期望值时才进行交易。但在市场处于震荡时,策略很可能会产生过多低质量的交易信号。本文将介绍如...

根据最大亏损停止交易:strategy.risk.max_drawdown()函数 无论策略多么优秀,资金回撤(Drawdown)都是交易中不可避免的一部分。限制这种风险的有效方法之一,便是在回撤达到某个预设的上限时,果断停止交易。本文将详...

限定策略只做多或只做空:strategy.risk.allow_entry_in()函数 大多数交易策略并非在所有市场环境下都能表现出色。为了提升策略的整体表现,我们可以通过过滤其交易时机或方式来进行优化。例如,我们可以限定策略只做多或只做...

策略风险管理功能概述 TradingView的Pine脚本语言内置了数个用于管理交易风险的函数。在本文中,我们将深入探讨这些函数,并学习如何在我们的TradingView策略中实际应用它们。 几乎没有哪个交易策略能在所有市场环境中都保持盈利...

悲观胜率PWP及其实现 悲观胜率(Pessimistic Win Percentage)是一种用于衡量盈利交易占比的保守评估标准。相较于常规的胜率,它旨在提供一个对策略表现更具稳健性的考量。接下来,让我们深入了解这一概念,并学习如何在Pin...

获取策略的胜率 TradingView策略能够在图表上模拟各种交易设想。运行一段时间后,有些交易盈利,有些则亏损。那么,一个策略最终盈利的交易究竟占多大比例呢?让我们来学习如何使用PineScript计算策略的胜率(Hit Rate)。 计...

获取策略的盈利交易数量 在PineScript策略中,我们可以通过内置变量 strategy.wintrades 来获取盈利交易的总笔数。这个变量会返回一个整数,代表所有以盈利状态被平仓的交易数量。它的统计范围从图表的第一根K线开始,一直累...

获取策略的总交易数 在TradingView中,策略通过在图表上模拟交易来验证各种交易思想。而总交易次数,是评估一个交易思想优劣的若干关键指标之一。 就目前而言,PineScript语言中并没有一个内置变量能直接提供策略的总交易次数。不过幸...

获取策略的最高权益 在TradingView中,策略通过在图表上模拟交易来测试其在历史及实时行情中的表现。这些模拟交易的结果,会直接影响策略的资金权益(equity),使其增加或减少。 当策略表现优异时,其资金权益会持续增长。那么,一个策略...

获取策略的盈利因子 任何交易策略都无法避免亏损,但一个成功的策略,其盈利必须足以覆盖所有亏损。盈利因子(profit factor)就是衡量策略盈利与亏损关系的一个常用指标。 盈利因子反映的是策略总盈利(gross profit)与总亏损(...

获取策略的毛利润 在PineScript中,交易策略的总利润是通过 strategy.grossprofit 这个内置变量来获取的。该变量返回的是策略所有已平仓的盈利交易的累计金额。 当策略在图表末端完成了对所有K线的历史回测后,strat...

获取自上次开仓以来的K线数 有时,策略需要知道距离上一次开仓过去了多少根K线。例如,我们可能希望对仓位进行金字塔式加仓,但又不想在每一根连续的K线上都进行交易。如果我们知道距离上一次开仓过了多少根K线,我们就可以在连续的加仓订单之间保持一个...

判断策略是否有未平仓头寸 一个策略通过开仓和平仓来回测交易信号。为了让策略更具适应性,我们通常需要在代码中获取其当前的持仓信息。这样,脚本就可以根据它是否在场内来做出不同的决策。 我们使用 strategy.position_size 这个...

判断策略当前是做多还是做空 当一个策略在图表上分析并进行交易时,它的市场持仓会发生变化。我们常常想知道策略当前是做多还是做空。 但在其他一些场景下,我们需要的恰恰是知道策略不是多头或不是空头。例如,我们可能只希望在尚未持有多仓时才提交一笔做...

获取策略的持仓数量:strategy.position_size详解 当一个策略在图表上运行时,它会处理价格K线并生成交易,这些订单会建立或平掉仓位。那么,我们的代码该如何获取策略的持仓数量呢?让我们一探究竟。 获取策略的持仓数量(及方向)...

获取已平仓交易的入场注释 当我们的策略平掉一笔模拟交易后,我们可以使用 strategy.closedtrades.entry_comment() 函数来获取这笔特定已平仓交易的入场注释。这个函数的作用就是提取出当初开仓时,我们在入场订单里...

获取未平仓订单的最大回撤 当一个策略持有一个或多个开仓订单时,我们可以使用 strategy.opentrades.max_drawdown() 函数来获取某一个特定开仓订单的最大回撤。这个最大回撤指的是该笔订单自开仓以来,到当前K线为止,...

获取未平仓订单的最大浮动盈利 当一个策略持有仓位时,我们可以使用 strategy.opentrades.max_runup() 函数来获取某一个特定开仓订单的最大浮动盈利。这个最大浮动盈利指的是该笔订单自开仓以来,到当前K线为止,所经历过...

获取未平仓订单的手续费 当一个策略持有仓位时,我们可以使用 strategy.opentrades.commission() 函数来获取某一个特定开仓订单所支付的手续费。通过这个函数,策略就能获知其每一笔开仓交易具体产生了多少交易成本。 我...

获取未平仓订单的规模 当一个策略持有仓位时,我们可以使用 strategy.opentrades.size() 函数来获取某一个特定开仓订单的规模(即数量)。通过这个函数,策略就能获知其每一笔开仓交易具体有多大。 默认语法结构 该函数的定义...

获取未平仓订单的ID标识符 当一个策略持有仓位时,我们可以使用 strategy.opentrades.entry_id() 函数来获取某一个特定开仓订单的订单ID。这个ID就是我们在开仓时为该笔交易设定的名称。 获取到这个订单ID后,我们...

哪些函数可以返回未平仓订单的数据? 当一个策略持有订单时,我们可以通过一系列专门的函数来获取这些订单的详细信息。这样,代码就可以查明某个特定订单的入场价格、合约数量、入场时间以及当前的浮动盈亏。 这些用于返回特定持仓订单信息的函数如下:st...

设置策略回测的开始日期和时间 默认情况下,一个TradingView策略会对图表上所有可用的历史数据进行回测,这能让我们的交易思路在尽可能多的数据上得到检验。但有时,自定义回测的开始日期也大有裨益。 它能让我们在几周后还能重复进行完全相同的...

为策略订单编写日期范围过滤器 当我们将一个TradingView策略加载到图表时,它默认会对图表上所有可用的历史数据进行回测。这能让我们的交易思路在尽可能多的数据上得到检验。但有时,自定义回测的开始和结束日期也大有裨益。 通过自定义日期,我...

如何用基于百分比的止盈目标退出交易 通过止盈订单,我们可以预先设定一个价格目标,然后在价格达到该水平时通过限价单退出仓位。虽然TradingView提供了多种订单函数,但没有一个能直接支持基于百分比的止盈目标。不过,我们可以自己编写代码来实...