
解锁新技能,和学长一起学Pine Script
大家好,我是学长。 欢迎来到我的全新教学专题——【Pine Script 交易脚本学习】。 在过去很长一段时间里,博客中分享的内容,更多地围绕着MQL4这门MT4专用的编程语言。MQL4就像一台重型工业机床,它功能完备、性能可靠,能让我们打...
大家好,我是学长。 欢迎来到我的全新教学专题——【Pine Script 交易脚本学习】。 在过去很长一段时间里,博客中分享的内容,更多地围绕着MQL4这门MT4专用的编程语言。MQL4就像一台重型工业机床,它功能完备、性能可靠,能让我们打...
在量化交易中,时间就是一切。但程序眼里的时间(一个从1970年开始计算的巨大毫秒数,我们称之为“时间戳”)和我们人类习惯的年月日时分秒完全是两码事。更头疼的是,不同交易所还处于不同的时区。 如何把难懂的时间戳,转换成我们想要看的、特定时区的...
当我们想创建一段包含多个动态数据的复杂文本时,比如“BTCUSD在2025-07-27 20:00收盘于52345.67,上涨了1.23%”,如果用+号和str.tostring()一个个拼接,代码会变得非常混乱且难以阅读。 为了解决这个问...
在PineScript中,我们经常需要把各种计算结果,比如当前的价格、指标值,显示在图表的标签里,或者包含在警报消息中。但这里有一个基本规则:文本(字符串)不能直接和数字、布尔值等其他类型的数据“拼接”。 要解决这个问题,我们就需要一个万能...
上一节我们自己动手打造了判断全小写的StrIsLower()函数。有小写就有大写,今天我们就来完成它的姊妹篇:创建一个能精准判断字符串是否全大写的StrIsUpper()函数。 这在校验某些固定大写的品种代码(如外汇USDJPY)或处理特定...
在处理文本数据时,有时我们需要进行一种格式校验:判断一个字符串是否“纯粹”,比如,是不是所有的字母都符合小写规范。这在需要统一数据格式或验证用户输入时非常有用。 PineScript本身没有提供现成的函数来做这个检查,但这难不倒我们。今天,...
上一节我们学习了str.lower(),它可以将所有字母都转为小写。今天我们来认识它的“兄弟”函数——str.upper()。 它的功能正好相反:无论原始文本长什么样,它都会把所有字母强行转换成大写。这两个函数共同构成了我们处理文本大小写问...
在处理文本数据时,我们面临一个常见的问题:大小写。在程序看来,EURUSD、EurUsd和eurusd是三个完全不同的东西,这会给我们的比较和筛选带来巨大的麻烦。 为了解决这个问题,我们需要一个标准化工具,能无视原始文本的大小写,强行把它们...
上一节我们学会了如何自己动手“砍掉”字符串多余的前缀。有前就有后,这次我们来解决另一个常见的文本清理需求:如何移除字符串末尾的后缀。 比如,很多期货品种的描述都带有Futures或Perpetual Futures这样的后缀,我们可能只想保...
我们在处理交易品种信息时,经常会遇到一些带有固定前缀的文本,比如很多ETF的描述都以ProShares或iShares开头。在图表上显示标签或发送警报时,这些前缀往往是多余的“噪音”,我们真正关心的是后面的核心信息。 那么,如何智能地“砍掉...
继StrContains()和StrStartsWith()之后,我们来打造我们自定义工具箱里的最后一件利器:StrEndsWith()。顾名思义,它专门解决不区分大小写的“后缀匹配”问题。这个功能在根据计价货币(如USD)、合约类型(如P...
上一节我们自己动手创建了一个不区分大小写的文本包含函数StrContains()。但有时模糊包含还不够,我们需要更精确的“前缀匹配”,并且同样希望忽略大小写的干扰。 比如我想筛选出所有比特币相关的品种,BTCUSD和btceur都应该被选中...
前面我们讲了字符串比较的三剑客,但它们都有一个共同的毛病:太较真,严格区分大小写。比如,在它们眼里'BTC'和'btc'是完全不同的东西。 但在很多实际场景里,我们希望搜索能智能一点,忽略大小写的差异。比如,我想找到所有比特币相关的品种,不...
我们已经学会了用str.contains()做模糊搜索,用str.startswith()做前缀匹配。现在,我们来学习这个系列的最后一个工具:str.endswith()。 顾名思义,它专门用来判断一个字符串是否以某段特定的文字“结尾”。这...
上一节我们聊了str.contains(),它可以帮我们做模糊的“文本包含”搜索。但有时候,我们需要更精确的判断,比如,我只想找出所有以'EUR'开头的货币对,而不想匹配到'GBPEUR'。 这种要求“必须以…开头”的场景,就需...
在我们写的策略或指标里,经常需要像搜索引擎一样,去判断一段文字里是否“包含”某个关键词。比如,我想让我的脚本在所有和“原油”相关的品种上都自动应用某个设置,或者检查用户的自定义警报消息里是否包含了“买入”这个词。 要完成这种“文本搜索”任务...
在写指标或策略时,我们经常会添加一些自定义的输入项,比如让用户自己填写警报信息或者图表标签。但如果用户什么都没填,我们可能就不想显示任何东西。这时候,我们就需要一个能力:判断用户输入的字符串是否为“空”。 这节课,我们就来聊聊在PineSc...
我们写的很多指标或策略,可能只想让它在特定的交易品种上运行。比如,一个专门为加密货币设计的波动率指标,或者一个只想在所有以“USD”结尾的货币对上运行的策略。要实现这种“筛选”功能,我们就需要学会如何处理和比较文本,也就是我们说的“字符串”...
在其他编程语言里,switch语句常用于根据一个变量的不同取值,来执行不同的操作。PineScript虽然没有switch,但它提供了一个更灵活的替代方案:级联if语句 (if...else if...else)。不少人听到级联if很陌生,...
当你兴高采烈地学会了if语句,准备大展拳脚,很可能马上就会撞上PineScript里最著名的一堵墙,看到一个让你摸不着头脑的错误:“Cannot use '...' in local scope”(不能在局部作用域中使用…)。 ...
我们已经知道,单纯的if语句解决的是“做”与“不做”的问题。但更多时候,我们的交易逻辑是“二选一”:“如果价格在均线上方,我们就看多;否则,我们就看空”。 这种非此即彼的决策,就需要if语句的完整形态——if/else语句。它给了我们两条明...
我们已经学会了用if语句来做“如果…就…”的判断。但这只能解决单层逻辑。在真实的交易策略里,我们的决策过程往往是多层次的,就像一个“决策树”。 比如,“如果成交量放大了,我们再去看价格有没有突破”。这种“如果A成立,...
前面我们讲了三元运算符?:,它擅长根据条件“返回一个值”。但如果我们的需求不是返回值,而是“执行一个或一系列动作”呢? 比如,“如果金叉发生,就提交一笔买入订单”,或者“如果满足某个条件,就画一条趋势线”。这种时候,就需要请出PineScr...
当你写脚本写多了,一定会遇到一个情况:某一段计算逻辑,比如“计算某个指标的金叉”或者“判断一个K线形态”,在代码的好几个地方都要用到。这时候,你是每次都复制粘贴一遍,还是有更聪明的办法? 答案就是创建自己的Pine脚本自定义函数。函数,说白...
前面我们讲了比较运算符,它们就像策略的“眼睛”,负责观察市场并返回一个true或false的答案。但一个完整的交易决策,往往需要综合多个条件。比如,“价格突破前高” 并且 “成交量放大”,我们才认为是一个有效的买入信号。要把这些零散的tru...
我们的任何交易策略,其本质都是一系列“如果…那么…”的判断。比如“如果收盘价站上了均线”,或者“如果RSI低于30”。要让程序替我们完成这些判断,就需要给它一双眼睛:比较运算符。它们专门负责比较两个值的大小或关系,然...
在PineScript里,我们怎么表达“如果条件A成立,就做B;否则,就做C”这种最常见的逻辑呢? 其他编程语言里可能有长长的if/else语句,但在PineScript里,我们有一个更简洁、更高效的工具:条件三元运算符?:。它是PineS...
在交易世界里,我们做的任何分析,无论是看均线、判断趋势,还是寻找突破,都离不开一个核心动作:回测历史。PineScript之所以强大,很大程度上要归功于它提供了一个极其方便的回测时光机:历史引用运算符[]。 掌握了它,你就掌握了穿越K线、获...
我们前面聊过,在PineScript里,两个整数相除,比如10 / 3,结果是3,小数部分会被直接砍掉。但如果我想要的恰恰是那个被砍掉的“余数”呢? 这时候,就轮到一个特殊的算术运算符登场了:求模运算符%。 你也可以叫它求余运算符,它的作用...
我们都知道加号+可以用来做数学加法,但它在PineScript里还有一个非常实用的功能:连接文字,也就是我们常说的“字符串拼接”。这个功能在自定义图表标签、创建动态警报信息时,简直是神器,今天咱们就来聊聊怎么用好它。 在聊拼接之前,咱们先快...
聊完了赋值和判断,咱们来聊聊最基础的数学计算。任何指标,不管多复杂,其内核都离不开加减乘除。在PineScript里,这四个基础的算术运算符就是你的计算器:加法+、减法-、乘法*和除法/。这四个运算符在作为二元运算符(也就是需要两个数来运算...
在所有Pine Script的运算符里,有一个你每天、每行代码几乎都会用到的家伙,那就是赋值运算符 =。 它的作用很简单,就是把一个值装进一个变量里,别看它简单,这里面可有不少新手必踩的坑,甚至一些规则和其他编程语言完全不同,今天咱们就把它...
在编写策略时,我们经常会在一行代码里用到好几个运算符,比如 close > open and volume > 2000。但你有没有想过一个问题:在一行复杂的计算中,电脑到底会先算哪个、后算哪个? 这个问题不是钻牛角尖,它直接关...
要想让咱们的交易想法在TradingView上跑起来,变成能实战的指标或策略,就离不开“运算符”。你可能一听“运算符”、“操作数”这些词就觉得头大,感觉很专业、很枯燥。别怕,这都是纸老虎,今天学长就用大白话给你讲清楚,保证你一听就懂。 咱们...