想要在 TradingView 图表上展示自定义数据,例如独特的指标?以下是实现这一目标的简明步骤指南,帮助您快速上手。
创建专属数据代码为您的数据生成一个新的 ticker(数据代码),并确保服务器返回该 ticker 的有效 SymbolInfo 信息。
配置历史数据设置服务器以提供该 ticker 的历史数据,确保数据完整且可调用。
应用指标模板使用以下代码模板,替换占位符内容(如名称、描述和代码),并根据需要调整绘图样式,例如线条颜色或宽度。
以下是一个基础模板示例:
javascript { name: "自定义指标名称", metainfo: { "_metainfoVersion": 40, "id": "自定义指标名称@tv-basicstudies-1", "name": "自定义指标名称", "description": "指标详细描述", "shortDescription": "简短描述", "is_hidden_study": true, "is_price_study": true, "isCustomIndicator": true, "plots": [{"id": "plot_0", "type": "line"}], "defaults": { "styles": { "plot_0": { "linestyle": 0, "visible": true, "linewidth": 2, "plottype": 2, "trackPrice": false, "transparency": 40, "color": "#0000FF" } }, "precision": 2, "inputs": {} }, "styles": { "plot_0": { "title": "输出名称", "histogramBase": 0 } }, "inputs": [] }, constructor: function() { this.init = function(context, inputCallback) { this._context = context; this._input = inputCallback; var symbol = "自定义TICKER"; this._context.new_sym(symbol, PineJS.Std.period(this._context), PineJS.Std.period(this._context)); }; this.main = function(context, inputCallback) { this._context = context; this._input = inputCallback; this._context.select_sym(1); var v = PineJS.Std.close(this._context); return [v]; } } }
通过调整 symbol
和绘图参数,您可以轻松实现数据的可视化。
假设您想在图表上展示用户的收益曲线,以下是具体实现方法:
定义新代码创建一个独特的代码名称,例如 #EQUITY
,用于标识收益数据。
服务器支持修改服务器逻辑,确保其识别该代码并返回对应的 SymbolInfo 和历史数据。
数据准备服务器需从数据库提取收益历史记录,并以标准格式返回,类似普通商品(如 AAPL)的数据结构。
创建指标使用模板生成指标文件,示例如下:
javascript { name: "Equity", metainfo: { "_metainfoVersion": 40, "id": "Equity@tv-basicstudies-1", "name": "Equity", "description": "用户收益曲线", "shortDescription": "收益", "is_hidden_study": true, "is_price_study": true, "isCustomIndicator": true, "plots": [{"id": "plot_0", "type": "line"}], "defaults": { "styles": { "plot_0": { "linestyle": 0, "visible": true, "linewidth": 1, "plottype": 2, "trackPrice": true, "transparency": 40, "color": "#880000" } }, "precision": 1, "inputs": {} }, "styles": { "plot_0": { "title": "收益值", "histogramBase": 0 } }, "inputs": [] }, constructor: function() { this.init = function(context, inputCallback) { this._context = context; this._input = inputCallback; var symbol = "#EQUITY"; this._context.new_sym(symbol, PineJS.Std.period(this._context)); }; this.main = function(context, inputCallback) { this._context = context; this._input = inputCallback; this._context.select_sym(1); var v = PineJS.Std.close(this._context); return [v]; } } }
👉 【点击查看】TradingView 30天 独享 Premium 高级会员账号(完整质保30天售后)
通过自定义指标,您还可以为 K 线添加动态颜色效果。以下是一个简单示例:
javascript __customIndicators = [{ name: "Bar Colorer Demo", metainfo: { "_metainfoVersion": 42, "id": "BarColoring@tv-basicstudies-1", "name": "BarColoring", "description": "K线变色演示", "shortDescription": "变色K线", "is_price_study": true, "is_hidden_study": false, "isCustomIndicator": true, "defaults": { "precision": 4, "palettes": { "palette_0": { "colors": [ { color: "#FFFF00" }, { color: "#0000FF" } ] } } }, "inputs": [], "plots": [{ "id": "plot_0", "type": "bar_colorer", "palette": "palette_0" }], "palettes": { "palette_0": { "colors": [ { name: "颜色 0" }, { name: "颜色 1" } ], "valToIndex": { 100: 0, 200: 1 } } } }, constructor: function() { this.main = function(context, input) { this._context = context; this._input = input; var valueForColor0 = 100; var valueForColor1 = 200; var result = Math.random() * 100 % 2 > 1 ? valueForColor0 : valueForColor1; return [result]; } } }];
此代码通过随机选择颜色值,为 K 线赋予动态变色效果,增强图表的可视化表现力。