
Pine Script(121):取整到整十整百整千位,以及截断小数
取整到整十位 Pine Script 有几个函数可以对数值进行取整。这些函数利用数值的小数部分将其取整为整数。例如,将 42.80 变为 43。 但如果我们想将数值取整到整十位呢?这将使得 42.80 变为 40,87.1 变为 90。通过...

取整到整十位 Pine Script 有几个函数可以对数值进行取整。这些函数利用数值的小数部分将其取整为整数。例如,将 42.80 变为 43。 但如果我们想将数值取整到整十位呢?这将使得 42.80 变为 40,87.1 变为 90。通过...

将数值取整到品种的最小变动价位(tick size) Tick size(最小变动价位)指的是一个交易品种可能发生的最小价格变动。当一个交易品种的价格波动时,其变动量至少是一个 tick size(而不可能小于这个值)。 E-mini S&...

math.ceil():向上取整 在 Pine Script 中有多种取整方法。其中一种是始终向上取整。对此我们有两种选择:我们可以向上取整为整数,或者向上取整到指定的小数位数。下面我们来详细了解一下。 向上取整为整数 第一种方法是向上取整...

Pine Script 中对数值取整的三种方法 在 TradingView 的指标和策略脚本中,我们会用到大量的数值。但有时,在对这些值进行下一步处理前,我们希望先对它们进行取整。我们该如何操作呢?让我们来了解一下在 TradingView...

barstate.islast:判断图表的最后一根K线 当一个 TradingView 脚本在图表上运行时,它的计算从第一根K线开始,然后依次向后,一直处理到图表的最后一根K线。 通过 barstate.islast 变量,我们可以判断脚本...

Pine Script 中的K线状态变量总览 当一个 TradingView 的指标或策略在处理图表时,它会逐一遍历图表上的每一根价格K线。计算从图表的第一根K线开始,然后依次向后,直至最后一根K线。 在这种快速、步进式的分析过程中,脚本会...

timeframe.isminutes:判断是否为分钟级时间周期 Pine Script 的 timeframe.isminutes 变量,可以告诉我们一个指标或策略当前是否运行在一个基于分钟的时间周期上。 timeframe.isminu...

timeframe.isintraday:判断是否为日内时间周期 Pine Script 的 timeframe.isintraday 变量,可以告诉我们一个指标或策略当前是否运行在一个日内时间周期上。 该变量会返回以下两个值之一: tru...

Pine Script 中的时间周期变量总览 Pine Script 提供了几个内置变量,用于返回关于时间周期的信息。它们能告诉我们,我们的指标或策略当前正在何种时间周期上运行,例如是在周线K线图上,还是在分钟级别的分辨率上。 知道了这些信...

判断脚本是否运行在季度时间周期上 目前,Pine Script 还没有一个内置变量能直接指明,脚本当前是否运行在一个完整的季度级别的时间周期上,例如3个月、6个月、9个月、12个月等等。 然而,获取这个信息可能很有帮助。例如,我们可能要求图...

判断脚本是否运行在纯分钟时间周期上 目前,Pine Script 还没有一个内置变量能直接告诉我们,代码当前是否运行在一个严格的“分钟”级别的时间周期上(即1到59分钟)。虽然有一个 timeframe.isminutes 变量,但它也会在...

判断品种是否为连续期货 期货是带有杠杆并在指定日期到期的衍生品。为了绘制它们的长期价格走势,TradingView 允许我们使用所谓的连续期货图表。这些合成的交易代码,将多个不同到期月份的合约连接在了一起。 TradingView 平台提供...

syminfo.type:获取品种的资产类别 Pine Script 的 syminfo.type 变量,可以告诉我们当前图表交易品种的资产类别。它以一段文本字符串的形式返回这个信息。 syminfo.type 可能返回的值包括: "sto...

syminfo.currency:获取品种的报价货币 Pine Script 的 syminfo.currency 变量,会以一段文本字符串的形式,返回当前图表交易品种的货币。 这个返回值是一个三字母的货币代码。例如,对于一支以美元报价的股...

syminfo.pointvalue:获取品种的点值 Pine Script 的 syminfo.pointvalue 变量,会以数值形式返回当前交易品种的点值 (point value)。 点值,指的是一个交易品种的价格每变动1个完整点位...

获取品种的点 (pip) 大小 在外汇交易中,点 (pip) 是衡量货币对价格变化的标准单位。外汇交易的盈亏,通常首先以“点”来表示,然后再换算成美元(或其他货币)。 一个“点”的大小,源于历史上货币对最小的可能价格变动单位。对于那些最初以...

syminfo.mintick:获取品种的最小价格变动单位 Pine Script 的 syminfo.mintick 变量,会返回当前图表交易品种的 tick 大小。 tick 大小(或称最小变动价位),是一个交易品种可能发生的最小价格变...

syminfo.prefix:获取品种的交易所与数据源前缀 Pine Script 的 syminfo.prefix 变量,会返回当前图表交易品种的交易所、经纪商或数据源的前缀。 例如,对于在 Coinbase 交易所交易的 BTCUSD ...

Pine Script 中的品种信息变量总览 Pine Script 提供了几个内置变量,用于获取当前图表品种的信息。 我们的脚本可以通过这些变量获取诸如品种的交易代码、资产类别、时区和最小变动价位 (tick size) 等信息。这些变量...

如何获取整个图表范围内的最高值? TradingView图表通常会加载一个很长的时间周期,K线数量可达数万根。这使得我们用肉眼很难找出图表上的最高价。那么,我们该如何让Pine Script帮我们找到这个值呢? 要用代码实现获取图表的最高值...

如何获取自某个条件发生以来的最低值? 当TradingView脚本分析图表上的K线时,它会遇到各种各样的情况,例如移动平均线交叉或创出新的周度高点。如果我们想知道从某个特定情况发生以来的最低值是多少,我们该如何实现呢? 首先,我们需要将这个...

在TradingView Pine脚本中,一个非常常见的任务是判断某个数值是否穿越了另一个数值。例如,我们可能想检查10周期的移动平均线是否上穿了30周期的SMA,或者判断相对强弱指数 (RSI) 是否下穿了30。接下来,我们就来看看如何用...

如何获取一根K线的整体范围(high – low)? 无论是棒图(Bar chart)还是K线图(Candlestick chart),它们不仅显示了收盘价和价格的移动方向,还展示了每根K线从最高点到最低点的完整价格范围。 这个...

如何获取K线编号?(bar_index 变量详解) 几乎每个TradingView脚本的计算都会引用之前的价格K线。但实际上,指标和策略也可以直接使用K线自身的编号。接下来就让我们一探究竟。 在TradingView Pine中获取K线编号...

用代码判断K线收盘是上涨、下跌还是持平 每个TradingView指标和策略都需要处理价格数据。有时这些处理涉及复杂的计算,但有时,仅仅识别出收盘价比前一根K线更高还是更低就足够了。接下来,我们就来看看如何用代码来识别这些K线。 在Trad...

我们经常有这样的需求:我想计算RSI的移动平均线,或者我想把布林带应用在MACD上。 新手的第一反应是:去复制RSI的全部源代码,然后在我新脚本里再对它计算均线,这是一个非常低效且难以维护的办法。 专业的做法,就是利用 input.sour...

我们都知道 input.bool() 可以创建一个简单的勾选框开关。 但有时候,这在视觉上不够专业,或者不够直观。 比如你可能更希望用户在一个下拉菜单中明确选择开或关,而不是一个孤零零的复选框。 input.string() 函数配合 op...

在Pine Script 的功能中,input.int() 负责周期,input.float() 负责精度,而 input.price() 则负责交互。 这是Pine Script中最接近手动划线的输入功能,它能为你的脚本设置面板,添加一个...

在Pine Script的输入功能中,input.time() 是实现精准时间点控制的核心工具,它能为你的脚本设置面板,添加一个日期和时间选择器。 它的实战用途非常明确和强大: 定义回测窗口: 这是它最核心的用途。通过两个 input.ti...

在Pine Script的输入功能中,input.timeframe() 是实现多时间周期分析的核心工具。 它能为你的脚本设置面板,添加一个时间周期下拉菜单。 它的实战用途非常明确和强大,加载高周期数据是它最核心的用途。 比如你可以在1小时...

在做日内交易时,我们最关心的就是特定时间。 比如,你可能只想在美股的交易时段执行策略,而过滤掉盘前和盘后的信号。 input.session() 函数就是Pine Script提供的、用来在输入面板上创建时间区间选择器的工具 。 它的实战用...

在Pine Script的输入功能中,input.symbol() 独树一帜。它不提供数字或开关,而是为你的脚本设置面板添加一个商品代码搜索框。 这个功能非常强大,它就像TradingView主界面顶部的品种搜索框一样 ,是你连接到其他市场...

我们在开发指标时,总会遇到一个经典问题: 我的均线是应该基于 close(收盘价)计算,还是应该基于 hl2(高低价均值)? 我的RSI到底是用 close 还是用 hlc3(高低收均值)更准? input.source() 函数就是Pin...

我们写指标,不仅要算得准,还得看得清。 input.color() 函数就是Pine Script提供的、用来在输入面板上创建颜色选择器的工具。 你可能会问:我直接在脚本设置的样式标签页改颜色不就行了? 样式标签页只能修改 plot() 这...

在Pine Script的参数控制面板中,input.string() 负责处理所有的文本(字符串)。 你可能会想,交易策略都是数字,为什么要输入文本? 答案是:警报与自动化。 这几乎是 input.string() 最核心的实战用途。 当...

我们写指标或策略时,经常需要一些开关——比如,是否显示这条均线?、是否开启这个交易时段? input.bool() 函数就是Pine Script提供的、用来创建这种布尔值输入选项的完美工具。 所谓布尔值,就是它只有两个状态:true(真)...

如果说 input.int() 负责的是周期长度、K线根数这类整数,那么 input.float() 负责的就是策略中所有关乎精度的计算。 在交易的世界里,小数无处不在。比如: 风控乘数:1.75倍的ATR止损。 资金管理:0.5% 的百分...

当我们在PineScript中搭建策略或指标时,最基本的需求就是能方便地调整参数,比如均线周期、RSI长度等。 你总不能每次想把20日线改成21日线,都去代码里硬修改。 这就是输入(Inputs)功能的核心价值。 而 input.int()...

我们在上一篇文章中,已经详细盘点过 input.int()、input.color() 等各种输入函数。它们各自创建了独特的设置选项,但作为一个整体,它们都遵循着一些通用的规则和特性。 1. 代码顺序,决定了设置面板的顺序 你的脚本设置面板...

当你好不容易写完一个策略,比如一个双均线系统,你总不能让你的用户(或者你自己)每次想测试不同周期时,都得去改代码吧? 这就太不专业了。 为了解决这个问题,PineScript提供了一套强大的输入功能。它们就像是你为策略打造的一个控制面板,让...

上一篇我们领略了calc_on_order_fills的强大威力,它能让策略在订单成交后即时反应,触发连锁下单。但很多开发者在实际使用中,会遇到一个极其困惑的现象:我明明在代码里写了 calc_on_order_fills=true,为什么...

在PineScript的世界里,存在一个终极开关,它能让你的策略从一个稳重的步兵,瞬间化身为一个反应速度快到极致的超级战士,这个开关就是 calc_on_every_tick。 正常情况下,你的策略只会在K线收盘时才思考和行动一次,但一旦你...

默认情况下,PineScript策略是个慢性子,它的工作模式是耐心等待一根K线走完,在收盘的瞬间进行一次计算,如果发现交易机会,就生成订单,但这个订单最快也要等到下一根K线开盘才能成交。整个过程规规矩矩,但总是慢半拍。 在很多交易场景下,这...

在PineScript的世界里,回测引擎的默认工作流程是谋定而后动。具体来说,是这样的: 等待K线走完: 策略会耐心等待当前这根K线完全收盘。 收盘后复盘:K线一收盘,策略立刻基于这个最新的收盘价进行计算,判断是否满足开仓或平仓条件。 如果...

上一篇我们聊了 strategy.entry() 是如何因为生成vs执行的机制,在特定情况下绕过加仓限制的。今天我们来聊一个更直接、更霸道的原因——strategy.order() 函数。 strategy.entry() 和 strate...

你是否遇到过这样的困惑:在 strategy() 函数里明明白白地设置了 pyramiding=0(禁止加仓),结果回测一看,策略居然在同一根K线上开了好几笔同向订单,持仓量远超预期。 这并不是TradingView的Bug,而是其回测工作...

“为什么我的策略回测是条龙,一到实盘就成了虫?” 这是每个策略开发者都曾问过自己的问题。其中一个最常见的原因,就出在回测引擎对限价单过于理想化的成交假设上。 在默认情况下,TradingView的回测引擎认为,只要K线的价格哪怕只碰到你的限...

在交易中,当我们分批建仓后,平仓时通常遵循一个默认规则先进先出(FIFO)。你可以把它想象成排队出场:最早进场的仓位,在平仓时也最先被平掉,这是TradingView策略的默认行为,也符合大部分经纪商的执行规则。 但如果你的策略逻辑比较复杂...

上一篇文章里,我们详细讨论了Pine Script中仓位管理的三种核心模式 (default_qty_type),但光有模式还不够,我们必须为这个模式注入灵魂,也就是设定一个具体的数值。这个关键任务,就由 default_qty_value...

聊完了入场信号和加仓规则,我们现在来谈一个更核心、也更关乎成败的话题:仓位管理。 你的策略每次到底该下多少手?是固定数量,还是根据账户资金动态调整?这正是交易系统的命脉所在。 在PineScript中,策略的默认订单规模由两个参数共同决定:...