如何将脚本转换为Pine Script v4/v5并在TradingView发布
Pine Script v5 转换后的时区标记脚本
下面是转换好的Pine Script v5版本代码,同时修正了旧版本里的语法问题,适配TradingView的最新规则:
//@version=5 indicator("时区杀区与警报栏标记", overlay=true) // **** 复选框与自定义时段设置 iKZNY = input.bool(true, title="纽约杀区") iOpenKZLondon = input.bool(true, title="伦敦开盘杀区") iCloseKZLondon = input.bool(true, title="伦敦收盘杀区") iAsiaKZ = input.bool(true, title="亚洲杀区") KZNY = input.session('1230-1430', title="纽约杀区时段") LondonOpenKZ = input.session('0600-1000', title="伦敦开盘杀区时段") LondonCloseKZ = input.session('1500-1700', title="伦敦收盘杀区时段") AsiaKZ = input.session('2300-0300', title="亚洲杀区时段") iRealOpenSessionAlertBar = input.bool(true, title="真实开盘警报栏") NYOpenAlertBar = input.session('1330-1345', title="纽约开盘警报时段") LondonOpenAlertBar = input.session('0700-0715', title="伦敦开盘警报时段") LondonCloseAlertBar = input.session('1545-1600', title="伦敦收盘警报时段") AsiaOpenAlertBar = input.session('0000-0015', title="亚洲开盘警报时段") // **** 逻辑判断 sessToUse = iKZNY ? KZNY : '0000-0000' sessToUse2 = iRealOpenSessionAlertBar ? NYOpenAlertBar : '0000-0000' sessToUse3 = iOpenKZLondon ? LondonOpenKZ : '0000-0000' sessToUse4 = iRealOpenSessionAlertBar ? LondonOpenAlertBar : '0000-0000' sessToUse5 = iCloseKZLondon ? LondonCloseKZ : '0000-0000' sessToUse6 = iRealOpenSessionAlertBar ? LondonCloseAlertBar : '0000-0000' sessToUse7 = iAsiaKZ ? AsiaKZ : '0000-0000' sessToUse8 = iRealOpenSessionAlertBar ? AsiaOpenAlertBar : '0000-0000' // *** 应用自定义规则 bgPlot = iKZNY ? time(timeframe.period, sessToUse) : time(timeframe.period) bgPlot2 = iRealOpenSessionAlertBar ? time(timeframe.period, sessToUse2) : time(timeframe.period) bgPlot3 = iOpenKZLondon ? time(timeframe.period, sessToUse3) : time(timeframe.period) bgPlot4 = iRealOpenSessionAlertBar ? time(timeframe.period, sessToUse4) : time(timeframe.period) bgPlot5 = iCloseKZLondon ? time(timeframe.period, sessToUse5) : time(timeframe.period) bgPlot6 = iRealOpenSessionAlertBar ? time(timeframe.period, sessToUse6) : time(timeframe.period) bgPlot7 = iAsiaKZ ? time(timeframe.period, sessToUse7) : time(timeframe.period) bgPlot8 = iRealOpenSessionAlertBar ? time(timeframe.period, sessToUse8) : time(timeframe.period) //**** 绘制背景色 bgcolor(iKZNY and bgPlot > 0 ? color.red : na, transp=90) bgcolor(iKZNY and iRealOpenSessionAlertBar and bgPlot2 > 0 ? color.red : na, transp=70) bgcolor(iOpenKZLondon and bgPlot3 > 0 ? color.green : na, transp=90) bgcolor(iOpenKZLondon and iRealOpenSessionAlertBar and bgPlot4 > 0 ? color.green : na, transp=70) bgcolor(iCloseKZLondon and bgPlot5 > 0 ? color.olive : na, transp=90) bgcolor(iCloseKZLondon and iRealOpenSessionAlertBar and bgPlot6 > 0 ? color.olive : na, transp=70) bgcolor(iAsiaKZ and bgPlot7 > 0 ? color.orange : na, transp=90) bgcolor(iAsiaKZ and iRealOpenSessionAlertBar and bgPlot8 > 0 ? color.orange : na, transp=70)
关键修改说明
- 改用v5标准声明头
//@version=5,添加indicator()函数指定脚本名称与叠加属性 - 替换旧版input语法:用
input.bool()定义复选框,input.session()定义时段输入,符合v5类型系统 - 布尔值判断简化:直接用变量(如
iKZNY)代替iKZNY ==1,避免类型不匹配错误 - 时间函数参数更新:用
timeframe.period替换旧版period,适配v5时间周期规范 - 颜色常量前缀修正:所有颜色添加
color.前缀(如color.red),符合v5颜色调用规则 - 移除未使用的
timeinrange函数,精简代码
内容的提问来源于stack exchange,提问作者ahmed2993
相关产品推荐
相关产品推荐

