是否可以console.log
variables
,或者pine-script
中函数的结果?
我想将 pine-script
脚本转换为 javascript
,并且我想验证我移入 JavaScript 的 pinescript 变量是否与原始变量相同。
如果此功能不存在,欢迎使用任何变通方法。
谢谢!
注意事项
- 虽然这个答案的内容没有被弃用,但 Pine 用户手册现在包含一个 调试技术页面 解释这个答案的大部分内容,等等。
- RicardoSantos 有一个非常好的 DebugConsole 库,v5 用户可以访问它。
Pine 开发者其实有类似控制台的东西;这是数据窗口。我们经常用它来调试。思路是这样使用
plotchar()
:
plotchar(bar_index, "Bar Index", "", location = location.top)
这不会破坏指标的刻度,也不会在其中打印任何内容,但它会在数据窗口中显示一个值,如 PineCoders 常见问题解答部分关于调试 的第二个问题所述。当您将鼠标移到图表栏上时,变量/表达式的相应值将显示在数据窗口中。常见问题解答解释了其他可用于在图表上进行调试的有用技术,因为这有时效率更高。
我们使用 AutoHotkey 宏,它从先前复制到剪贴板的变量或表达式创建所需的
plotchar()
语句。这是 AHK 宏:
^+C:: SendInput plotchar(^v, "^v", "", location.top){Return}
数据窗口也是一个很好的选择,作为需要显示许多值的脚本的显示面板,例如我们的 回测和交易引擎,它广泛使用它:
pine v.4 提供了打印文本的新方法。您可以为此使用标签:
//@version=4
study("Print text values", overlay=true)
x = bar_index
y = close
txt = tostring(close)
label.new(x, y, txt) // print value of close
如果你只想打印一个值(不是在每个柱上),你可以这样做:
if (barstate.islast)
label.new(bar_index, 0, "Your value here, ex: " + syminfo.tickerid)
This answer is now outdated. Please consult other more recent answers.
无法将 pine-script 中的文本或变量打印到任何形式的“控制台”。 但是您可以使用 plot 打印,每个刻度上方或下方的非常短的文本。但是,文本是静态的,您不能使用变量来更改它。
您还可以使用各种技巧在图表窗口的非常有限的指标字段(左上角)中显示值。或将线条和图表移出图表的可见区域,但仍能看到轴高亮显示。
请查看他们的 Wiki 并查阅其他用户的 1000 个脚本以了解如何操作的详细信息。
我所做的是,我使用表格来显示我想要显示的值。这在重播栏中就像魔术一样。这是一个例子:
//@version=4
study("My Script", overlay=true)
sma20 = sma(close, 20)
text = "sma 20: " + tostring(sma20)
tableColumn = 1
tableRow = 1
var table panel = table.new(position.top_right, tableColumn, tableRow)
if barstate.islast
table.cell(panel, 0, 0, text, bgcolor=color.black, text_color=color.white)
正如 not2qubit 所提到的,技术上没有办法将内容打印到 TradingView 左右的控制台。
但是我们可以创建标签来“打印”东西,这就是我写这个小函数的原因。
它会在最新的 bar_index 上“打印”您输入的文本。 如果您打印多件东西,标签将堆叠在一起。
仅在 PineScript 版本 5 上测试
var global_print_counter = array.new_int()
array.push(global_print_counter, 0)
print(string txt = "") =>
if txt != "" and barstate.islast
int print_counter = array.get(global_print_counter, 0)
printLabel = label.new(x=bar_index, y=high + (print_counter * 75), textcolor=color.white, color=color.black, text=txt)
array.set(global_print_counter, 0, print_counter + 1)
例子:
print("Hello World!")
print("Hello World, again!")