如何比较 pine 脚本中的月份?作为使用月度图表的示例,我想知道当前柱是否为一月等,目前我可以使用
dayofweek
对每日柱进行此操作,但是没有等效的 monthofyear
或类似的。
到目前为止,我一直在尝试使用以下代码来查看是否可以找到一种方法来使用
month()
的输出来识别柱形图所在的月份,但是到目前为止我还没有成功。
if barstate.islast
x = bar_index
y = close[0]
txt = str.tostring(month(time[0]))
label.new(x + 10, y, txt)
该指标的最终目标是确定哪些月份平均有正回报或负回报,并通过标签显示该信息。
您使用
month()
是正确的,但是,如果您在外汇货币对上使用此功能,当当天的交易时段在前一个日历日开始时,您将会遇到问题。
对于这些情况,还有另一个名为
time_tradingday
的内置变量。
时间_交易日
当前柱所属交易日的开始时间,在 UNIX 格式(自发生以来经过的毫秒数 00:00:00 UTC,1970 年 1 月 1 日)。
备注
该变量对于隔夜交易非常有用,其中 当天的会议可以在前一个日历日开始(例如, 欧元兑美元周一交易时段将于周日 17:00 开始)。与时间不同, 这将返回星期一 17:00 的星期日时间戳 每日柱,time_tradingday 将返回星期一的时间戳, 00:00.当用于高于 1D 的时间范围时,time_tradingday 返回 柱内最后一天的交易日(例如在 1W 时,将返回 一周的最后一个交易日)。
这是给您的测试代码。第一部分是没有
lastbar
检查的代码,第二部分是相同的代码,但使用 time_tradingday
代替。
//@version=5
indicator("My script", overlay=true, max_labels_count=100)
m1 = month(time[0])
txt = str.tostring(m1)
label.new(bar_index, high, txt)
m2 = month(time_tradingday)
txt2 = str.tostring(m2)
label.new(bar_index, low, txt2, yloc=yloc.belowbar, style=label.style_label_up, color=color.green, textcolor=color.white)
is_not_equal = (m1 != m2)
bgcolor(is_not_equal ? color.new(color.red, 85) : na)
条形上方的蓝色标签是原始代码,条形下方的绿色标签是新输出。红色背景是这两个值不同的地方。
欧元美元 1 个月时间范围: