如何理解Pine脚本的执行机制# 如何理解Pine脚本的执行机制 很多情况下,我们都是直接用到TradingView社区提供的各种指标和策略。确实很多人不理解Pine是如何来执行脚本的,理解其中的机理对于利用TradingView做量化交易会非常的有帮助。因为你会明白这个脚本的执行是否和自己主观想法和设定是否一致。这里最需要注意的就是“向坐看”和“向右看”执行机制的不同,这对于理解并写好一个策略至关重要。 当 一个Pine 脚本加载到图表上时,它会使用每根K线的可用 OHLCV(开盘价、最高价、最低价、收盘价、交易量)值在每个历史K线上执行一次。一旦脚本的执行到达数据集中最右边的K线,如果图表标的上的交易当前处于活动状态,则技术指标(indicator)*将*在每次发生*更新*(即价格或交易量变化)时执行一次。默认情况下,技术*策略(strategy)*仅在最右边的K线收盘时执行。 所以, 在默认情况下, indicator要比strategy的响应速度更快,这也是很多量化交易者喜欢用indicator的原因。但是, 实际上技术策略strategy也可以配置为在每次更新时执行,就像indicator一样。 在TradingView中,所有交易标的都有一个包含有限数量K线的数据集合。当你向左滚动图表以查看数据集较早的K线时,相应的K线就会将加载到图表上。当该特定交易标的对不再有K线或您的账户类型允许的最大K线数已加载时,加载过程才会停止。此时,直到数据集合的第一根K线,该K线的索引值为 0, 这就是Pine脚本内置变量 bar_index= 0的情况。 当脚本第一次在图表上运行时,除了最右边的K线(如果交易时段处于活动状态),数据集合中的其它K线都是*历史K线,都是过去式*。当最右边的K线上交易活跃时,它被称为*实时K线*。当检测到价格或交易量变化时,实时K线会更新。当实时K线收盘时,它会变成*已过的实时K线*,并会打开一个新的实时K线。而一个策略算的好坏就在于是否能处理好这两类K线: 最右边的实时K线和其它历史K线。 首先来说说历史K线,按照TradingView的执行机制,一旦K线的 OHLCV 值全部已知时,脚本会在该K线的收盘价时执行。在K线上执行脚本之前,内置变量(例如`open`、`high`、`low`、`close`和`volume`)`time`被设置为与该K线中的值相对应的值。所以,对于历史K线,**每个历史K线会**执行一次脚本,并把这根K线基于OHLCV运算的结果用plot绘制在图表上成一个点。因为,所有历史K线都仅被执行一次,所以plot会以bar_index为索引,很快地计算获得一个需要plot的输出数据序列。脚本中每一行的执行都会产生计算,进而生成指标的输出值,然后可以将其绘制在图表上。在第一根K线上执行并绘制后,将在数据集合的第二根K线(bar_index索引为 1)上执行脚本。然后重复该过程,直到数据集合中的所有历史K线都已处理完毕并且脚本到达图表上最右侧的K线。 Pine 脚本在实时K线上的行为与在历史K线上的行为非常不同。回想一下,当图表的标的上的交易处于活动状态时,实时K线是图表上最右侧的那一根。另外,请记住,策略strategy类型脚本在实时K线中可以以两种不同的方式表现。默认情况下,它们仅在实时K线收盘时执行一次,但可以将声明语句`calc_on_every_tick`的参数`strategy`设置为 true 以修改策略的行为,以便它像指标(indicator)一样在每次实时K线更新时执行。 当脚本到达实时K线时,它会第一次执行。它使用内置变量的当前值来生成一组结果,并根据需要绘制它们。在下一次更新发生时脚本再次执行之前,其用户定义的变量将重置为与上一K线收盘时的最后一次*提交相对应的已知状态。*如果没有对变量进行提交,因为它们在每根K线上都被初始化,那么它们将被重新初始化。在这两种情况下,它们最后计算的状态都会丢失。绘制的标签和线条的状态也会重置。在实时K线中脚本的每次新迭代之前重置脚本的用户定义变量和绘图称为*回滚*。其作用是将脚本重置为实时K线打开时所处的相同已知状态,因此实时K线中的计算始终从干净的状态执行。当实时K线收盘时,脚本将执行最后一次。像往常一样,变量在执行之前回滚。然而,由于此迭代是实时K线上的最后一次迭代,因此在计算完成时变量将被提交为该K线的最终值。 综上所述,实时K线的数据处理和历史K线完全不同,可以总结为: 1. 脚本**在实时K线开盘时执行,然后每次更新时执行一次**。 2. **变量在每次实时更新之前**回滚。 3. **变量在K线收盘时**提交一次。 实时K线的更新会在人为外界干预时候刷新,或者随着开市市场价格,成交量变化而进行刷新。由blackcat1402提供4
[blackcat] L5 Banker Fund Flow Trend Oscillator X 详细说明这个指标是目前TradingView社区里面反馈最好的, 至今发布已经有1年多, 截止到今天(08/09/23) 已经有396个赞和560条评论. 当然,这里不是很明显的指标就是订阅数量, 目前也是最活跃的, 共198位活跃的用户. 其实,Banker Fund或者说大资金系列指标都源于2020年10月灵光乍现发布的 L3 Banker Fund Flow Trend Oscillator (也是目前我发布脚本里面最受欢迎的之一,的确不断有人在Discord里面提他用这个赚到钱了,或者改变交易局面什么的,但是我想说技术分析是非常挑交易风格,有的人能赚,有的人就亏,就好像不是每个人拿到屠龙刀都能一统江湖一样,人才是核心) , 这个指标最开始是开源,免费用的。经过时间的沉淀,TradingView上很多人提出来让我升级,所以,按照内核引擎的不同就衍生出来两种, L4和L5. 本质上说L4还是L3内核,L5则采用一种全新的内核算法。 我想写这篇文章也是想写一个系列,把这两年发布的最受欢迎的技术指标进行原理介绍和详细的使用说明。当然,这主要还是为哪些考虑订阅这个指标的朋友们准备的。至于思路交流,改进可以进我的联系渠道多多交流,我也会不断的改进这些社区靠鼠标点出来的好指标。 **技术原理说明** 首先是数据源,这对于所有编写技术指标的人来说都是很熟悉的:OHLCV,也就是交易所给出的某个周期下的开盘价,最高价,最低价,收盘价和成交量的数据序列。最常见的就是直接用收盘价C作为数据源。但是,经过这几年实践和学习,已经惯例性的将这些序列进行排列组合,目标就是降低交易市场这个复杂系统外界扰动带来的价格波动,而尽量展示价格趋势。这一点上来说,经过排列组合生成的“典型价格” 往往起到一定的稳定作用,类似均线,但是其响应速度要比均线要快。不同的市场可以采用不同的典型价格,例如比特币、A股、可转债、基金的趋势特征就像人的性格一样多样化,一定的符合其性格的典型价格往往在一些扰动的情况下,能让技术策略更好的把握趋势和强度。 L5 Banker Fund指标和核心本质仍旧是一个振荡器(例如RSI和KDJ都是振荡器),只不过是个经过定制化高度改进的振荡器。然后通过斐波那契神奇数字配置的EMA嵌套滤波,这里面EMA的周期和嵌套次数会折中振荡器的响应速度和稳定性(做量化这可能是个永恒的话题)。我是约翰·F·*埃勒斯*(JohnF. Ehlers)的粉丝,他那几本书包括《交易员的火箭科学》(Rocket Science For Traders)等几本里面的示例代码,我都在早些年转成了TradingView的Pine脚本,大约100多个,因此对于各种改造变种的振荡器,趋势线都在合约上做过实验,选择了一些特性优良的振荡器或者说波动处理方法。L5 Banker Fund就是其中之一。 **使用方法概述** 黄柱表示涨,紫柱表示跌,柱子长短表示强度。在黄紫转换之间会产生买卖信号。 之所以把振荡器表达为柱子形状是为了在多根柱子走势中判断趋势强度,例如结合缠论背驰观察或主观感觉趋势强度弱了就预期要反转了。另外,还加上了自动的顶底背离判断算法,黄色实线Bull是底背离, 紫色实线Bear是顶背离,可以作为辅助的参考依据。 对于传统振荡器的技术指标已经非常常见了,L5 Banker Fund振荡器采用两种振荡器进行了嵌套,除了黄紫柱子的快线,还有红绿柱子的慢线,帮助交易者看清楚高一个级别的趋势。这就相当于是把多周期(MTF)的情况整合到一个幅图里面来进行小周期和更高一级周期同时看的效果。 慢线是高级别趋势,主要看波的大小,例如这个大馒头形状就是一波做多行情。当红色大馒头超越前面波峰时候,是进场做多的大趋势,在这里面要么做T,要么老实拿着等一波馒头完成!当慢线一波馒头画完的时候,一波做多行情结束,退出。这个例子说明快慢线振荡器的用法,红绿柱子做波段,看波段强度,黄紫线小周期做T或削头皮。 L5 Banker Fund最大一个特色,就是应为它发布时间比较晚,所以根据社区的反映,把简版的鲸鱼出海指标放了进来。这就是天地柱子, 天上的冷色柱子是空头主力鲸鱼出现的标志,黄色天柱表示空头鲸鱼跳跃出海的强度,绿色天柱表示鲸鱼落回海里,做空衰减的标志。地上的暖色柱子是多头主力鲸鱼出现的标志,紫色地柱是多头鲸鱼跳出海面大力做多的信号,红色地柱是多头主力鲸鱼落回海里的标志,表示做多力度减弱,这既可能是打不过空头,也可能是喘口气中途暂停。我们以这波比特币上30000$的K线来分析,K线上可能读不出太多信息,结合L5 Banker Fund就会发现首先攻击的空头鲸鱼在1号黄色天柱下杀开局,因为突然效果还不错价格给打下来了,于是空头鲸鱼再接再厉加大做空力度得到2号黄色天柱,但是效果非常不好,这个过程中受到多头(非主力)的疯狂反扑,虽然空头力道很大,但是生生的被多头打残,形成反包阳线,量能上也超过前一根做空K线,这就是明显的阳克阴。正所谓树倒猢狲散,墙倒众人推,多头并没有想放走空头鲸鱼的想法,他们想彻底猎杀掉这个空头鲸鱼,后面三根小K线说明,多头非主力已经和空头鲸鱼展开拉锯战,这个很想亮剑里面李云龙围攻平安县城的那场的情况,开始围城的都是小咖,但是当第三根小K线出现时后,多头鲸鱼参战狠狠地打了空头援军,看地柱紫色力度,是由开始群狼围攻狮子,变成了另外一头狮子进来绞杀被围的狮子,空头鲸鱼被肢解,多头鲸鱼和多头小咖吃肉就跑,出现了一个长影线的阴线,作鸟兽散。先来的多头吃肉,后来的埋单。 这就是L5 Banker fund的基本用法,其实也是非常的简单,凭直觉完全可以掌握。除了主观分析,还有标签和告警提示作为辅助: **标签主要有:** SELL标签 --> 标准卖 BUY标签--->标准买 GBUY ---> 黄金买入(更加确认) FSELL ---> 紫红卖出 (更加确认) **告警提示:** 黄色BUY警报 买入 ---> YBUY! 关于紫红SELL警报 卖出 ---> FSELL! BUY买入警报 ---> 买入! SELL卖出警报 --> 卖出! 由blackcat1402提供484814
上证指数当前面临的风险 上证指数在经历了一波大五浪反弹以后,目前已经完成了A浪,B浪(0.618)。 因为之前说的周线级别,仍然是三角形调整,所以现在要谨防开启c浪下跌。 如果c浪出现,目标就是3050-3020附近。 大A加油💪🏻 做空由Tindtily提供2
说一种全新的唐奇安通道技术 在 Stella Osoba 2023 年特刊的文章“使用价格通道”中,她提出了一个想法:为什么许多分析技术都基于价格通道的概念。在她对唐奇安通道的解释中,她解释说它们用于识别趋势,并且最后一个时期的价格不包括在计算中。 我在TradingView网站上开源发布并且采用Pine重写了这个想法。 这个脚本允许用户选择包含最近的时期。 要不包括最近的时间段,请将 IncludeRecentPeriod 输入设置为 false。 说起唐奇安通道, 期货交易员理查德·唐奇安 (Richard Donchian) 创建了唐奇安通道作为趋势指标。 他后来被称为“趋势跟踪之父”。发展至今已经建立了几种基于唐奇安通道的交易方法,但日内交易者可以创建自己的方法,因为该指标是通用的并且可以以不同的方式解释。其中著名的海龟交易法则也只是唐奇安技术的变体。唐奇安通道在一段时间内资产的最高价和最低价之间划出一条线,通常使用K线作为时钟。 K线是图表上的图表区域,显示特定股票的开盘价、最高价、最低价、收盘价和时间范围。它们因其形状而得名。 当指标应用于图表时,线条在当前价格周围形成通道。当日交易时,唐奇安通道对于突出趋势和区间周期非常有用。 如果需要,可以在顶线和底线之间添加第三条线。 上部和下部通道线被平均以形成该中心带。 该指标可用于所有时间范围,包括一分钟和五分钟图表(其中每一或五分钟形成一根K线),并且可用于加密、外汇、股票、期货和期权交易, 可以说通用性比较强。 感兴趣的朋友可以关注我在TradingView上发的帖子,包含源代码,可以在TradingView指标库中搜索: " L1 Stella Osoba Donchian Channels", 直接加载并显示在主图上。 该脚本页面链接为: 这个脚本的源代码如下: ```c // This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org // © blackcat1402 //@version=4 study(" L1 Stella Osoba Donchian Channels", overlay=true, max_bars_back=5000, max_labels_count=500) // TASC AUGUST 2023 // Using Price Channels // Indicator: Richard Donchian // Article Author: Stella Osoba //inputs: Length = input( 20 ) IncludeRecentPeriod = input( true ) IncludeMiddleLine = input( true ) //variables: UpperBand = 0.0 lowerBand = 0.0 MiddleLine = 0.0 Displace = ( iff( IncludeRecentPeriod, 0, 1 ) ) UpperBand := highest(high, Length) lowerBand := lowest(low, Length) MiddleLine := (UpperBand + lowerBand) * 0.5 plot(UpperBand, "Donchian high", color=color.new(color.green, 20), linewidth = 3) plot(lowerBand, "Donchian low", color=color.new(color.red, 20), linewidth = 3) plot(IncludeMiddleLine ? MiddleLine : na, "Donchian Avg", color=color.new(color.yellow, 20), linewidth = 4) ``` 两张效果图: BTCUSDT日线行情来自TradingView 上证指数日线行情来自TradingView 由blackcat1402提供11
今天是个节点: A股策略还是不行换了选股策略也有一段时间了,开始觉着的这种新型选股比较稳定,因为融入了基本面因子,但是现在发现,这似乎并不是很符合当下主流A股短线的风格。从上周五开始,无论指数如何变化,不可否认的是A股短线情绪都还是不错的,一些我关注的高手账户都已经爬坑成功,并且账户收益创了新高。而正是这几天,我的两个账户却开始阴跌回撤,这显然不是买卖点的原因造成的, 而更像是选股策略并不符合当前A股炒作热钱的喜好导致的。 看着别人都在赚钱,而自己阴跌确实不太好好受。但是,也正是这种落差,让我认识到这段时间做基本面,财务面比较好的小盘股并不明智。最近这波行情真正赚到钱的其实是一些短炒概念,至于股票的基本面和财务面并不重要,我把次要因子当成主要因子,是造成当前局面的主要原因。需要进一步优化选股策略了,看来Python选股器还是要继续搞起来。 账户1: 明显感到票中资金的疲软,没有一股狠劲来冲涨停,这种不头铁的票这两天会直接被资金抛弃,无论是柚子大佬还是家人们,都非常嫌弃这种股票,而我却还要看在基本面上持有,也难怪不亏才怪。 账户2: 和账户1比较类似, 这种情况下,我可以在一段时间后,将两者合二为一,集中优化一个,毕竟这种理解和改进还是非常耗费精力的。 账户3: 盘中自动选股还是小幅度盈利的,说明今天短线交易行情确实不错。 由blackcat1402提供224
短线情绪回暖虽然指数不是很好看,但是短线情绪继续维持比较好的状态.如果上周有所埋伏, 今天应该都会有所收益.只不过是上周那几天比较难过的日子里,回撤能够控制住,今天才能算是真正的不错. 我上周有两天回撤控制不好,不仅利润回吐, 还亏了些.这导致尽管今天整体氛围不错,但是还在爬坑,日子久了,这种差距就会体现出来了. 周末这两天确实比较忙,学习了些新东西, 重拾交易热情,毕竟还没有真正的稳定盈利吧. 账户1: 钱江摩托买在两波的起涨,算是不错的技术性买点,但是后面行情垮了.佳士科技是封板进去的,结果尾盘却炸版了,好惨,更惨的可能还在明天... 这种短线拼的就是认知,都是加速涨或跌, 别看有些高手玩的很好,赚的很快,一旦自己上手买错了绝对就是反着方向加速亏损. 若羽臣就是顺势买,还是不错的趋势. 账户2: 几乎和账户1一致,就不多分析了. 账户3: 盘中策略还是不太稳定, 今天好的时候挣不到钱, 行情不在了,就亏起来没玩,这个要改的地方还真的是很多呢. 做空由blackcat1402提供4
【吹牛】坚定看涨大A——对比50年前的美国对比70年代的美国股指,大环境与当下并无分别。未来伴随着光伏核电等新型能源和AI人工智能将重新推动经济增长,同时3年左右的经济库存周期也即将触底,股指往往领先于实体经济。人口增长及环境恶化是重大阻力,房地产不接受硬着陆,在政策之手的推动下,转好的经济不一定是繁荣昌盛,但至少会一改颓势,未来可期!由LoisYang提供111122
一惊一乍的A股昨天还在ICU,今天直接抬进KTV,这就是A股,一惊一乍好像昨天什么都没有发生似的,今天就是一片红。这种情绪不稳定,导致短线交易非常难做。但是真正能够在这种环境下活下来的那些高手,大多数情况下,是在一泻千里的时候控制非常小的回撤,而在第二天刚抬进KTV就要立马跳下担架,成为麦霸。今天主要是房地产和券商异动,但是这种是昙花一现,还是真的可以持续一段时间需要几日的确认信号。 账户1: 整体小回血,钱江摩托大仓位买在低位,所以午后随着大盘上扬,一起捡了些浮盈。苏常A成交量并不活跃,整日处于横盘状态。中大力德则日出日落,基本上一天白玩,在这种氛围下,里面的资金确实有些诡异。明天真的并不看好这一支。 账户2:错误操作和正确操作抵消,林州重机本来以为高抛低吸,但是确实是重仓买在瀑布前夕,真是太垃圾了。林州重机基本抵消掉钱江摩托的优势,而瑞特尔则是低吸在低点,但是知道收盘都没有启动,真是大写的尴尬。 账户3:依旧大开大合,但是盘后截图显示有问题了,凑合看吧。总的来说账户3盘中机动选股的波动比1和2要明显大很多,从长期来讲,账户1和2应该比账户3更有机会盈利。 由blackcat1402提供223
TradingView中的时间序列在做算法的过程中,我发现TradingView本质上的方便之处就在于其推荐的数据类型是时间序列,当然,你也可以选择数组,但是数组本身就丧失了时间信息。这种方式可以说对于交易来说是最有好的数据类型。当然,你如果不熟悉TradingView的松树脚本,也可以选择Python,Python也有各种各样的时间序列处理函数库,但是大多数都是用于机器学习和人工智能的。比如说中国国内比较有名的飞桨TS:PaddleTS。但是,我主要是以交易为目的,飞桨TS对我来说过于无法高效快速地表达一些转瞬即逝的交易想法,所以,我个人还是更喜欢用TradingView的松树脚本。松树脚本的强大功能很大程度上源于它旨在高效处理时间序列(Series)的事实, 我的很多私有库函数并不是基于数组实现而是基于时间序列。当然,我也在考虑做一些高级的基于数组类型的库函数。在TradingView中,时间序列是脚本用于存储变量随时间的连续值的基本结构,其中每个值都与一个时间点相关联。由于金融图表由很多K线组成,每个K线代表一个特定的时间点,因此时间序列是处理可能随时间变化的值的理想数据结构。 另外,时间序列的概念与TradingView松树脚本的执行模型和类型系统概念密切相关。了解这三者是充分利用TradingView脚本写算法的关键。例如,采用TradingView内置的close变量,其中包含数据集中每个K线的“收盘”价格,该数据集是任何给定图表上的所有K线。如果脚本在 5 分钟图表上运行,则收盘时间序列中的每个值都是连续 5 分钟图表K线的“收盘”价格。当脚本引用close时,它指的是脚本正在执行的K线的“收盘”价格。为了引用时间序列中的过去值,可以使用“ ”历史引用运算符。当脚本在给定K线上执行时,指前一个收盘K线close 时间序列的值。虽然时间序列可能会让人想起数组,但它们是完全不同的。TradingView脚本确实使用了数组数据结构,但它与时间序列是完全不同的概念。例如:TradingView脚本中的时间序列与其特殊类型的运行时引擎和内置函数相结合,使得无需使用for循环来计算所有K线收盘价之和的操作而只需使用ta.cum(close)。 因为虽然ta.cum(close 在脚本中看起来相当静态,但实际上它是在每一根K线上执行的,因此随着每个新K线的收盘值被添加到其中,它的值变得越来越大。当脚本到达图表最右边的K线时,ta.cum(close)返回图表上所有K线的收盘值之和。所有K线上的相同循环逻辑应用于函数调用,例如plot(close)将在每个K线上重复的函数调用,在图表上连续绘制每根K线的收盘价。 由blackcat1402提供9
吃大瘪今天行情并不好做,有两个半路账户吃了瘪,一个盘中机动账户却大赚,这倒不是策略优劣导致的,完全是看重仓的个股表现,从这个角度上讲,运气更重要。 账户1 真是水逆,重仓的买哪个哪个就下坡溜,真是没办法,幸好这种一路东南并不会触发补仓操作,但是仓位太重导致整体表现比较差。说到补仓看到推送消息,说胡锡进今天亏了400块,还补仓了,这个人人品可以参考马保国老师言论,但是炒股这事他这么积极我感觉是在给神秘势力带节奏,千万别认真(我其实还是觉得胡编和马老师约架更有意义): 上联:我们不能是马保国 下联:做人不能太胡锡进 横批:不讲武德 账户2 稍微好看一些,一个是重仓的巨轮智能山顶站岗,好在持仓不是一天。金龙羽和沙河股份买入后没有出现孔雀东南飞的情况。 账户3 平时表现不好的盘中策略今天表现抢眼,单日盈利超5%,主要是重仓了创业板的两个股票表现非常抢眼。难道大V们说的创业板行情真的已经到来了? 由blackcat1402提供553
最后一跌?大的概率最后一跌,回撤空间不会很大,美股和美联储的消息并不会对大a有任何影响 另外注册制,必须重点关注大蓝筹,扔掉你手中的垃圾股, 继续看多不变,关注国企回撤与科技(国产替代与AI芯片),大金融 我要继续打哪些看空a股的韭菜的脸 A+H股机会很大,自己挖掘做多由hello-xiaofengchui提供已更新 151525
A股啥时候抄底? 大周期还是以震荡三角形观点为主,可以参考之前对大A的观点(文末有链接)。 日线5浪上涨以后,正在经历ABC调整。 5月24日破位以后,翻亚当目标位在3022。 经过最近几周的反弹,昨天破位以后,ABCD谐波目标位在3026。 本级别的0.618在3089。 以大A的尿性,会杀光所有人以后再启动。 综上,大盘大概率会去到3100以下,保守估计3030附近。一旦在这个区域出现大长针,即可大胆做多。 为什么不考虑2900以下的目标位,目前没有技术指标看到那么低,暂时就不考虑。200点空间,早进去1个星期也没啥事,要对牛市有信心,hiahiahia~ 做空由Tindtily提供1