如何计算最近N天的绿色和红色条数?
How to count green and red bars number in the last N days?
//@version=5
indicator('Bar Count', overlay=false, max_bars_back=1000)
green = close > close[1] ? 1 : 0
red = close < close[1] ? -1 : 0
length = input(30, title='Number of bars lookback')
greenbar = math.sum(green, length)
redbar = math.sum(red, length)
var g_count = 0
var r_count = 0
我完成了第一部分,但我认为它需要添加“tostring”部分,因为我需要在第二天再次计算,但我真的不知道如何计算这些数字...请帮助我编写这个松树脚本。我是松树脚本的新手。谢谢。
您可以将 red/green 状态保存在数组中,然后计算该数组中元素的总和以获得 red/green 柱数,如下所示:
//@version=5
indicator("Count Bar Color", "CBC")
var int barsBack = input.int(30, 'Number of bars lookback', 0)
var int[] greenBars = array.new_int(barsBack, 0)
var int[] redBars = array.new_int(barsBack, 0)
var int greenBarCount = 0
var int redBarCount = 0
direction = ta.change(close) // red or green ?
if barstate.isconfirmed // bar is complete
if direction > 0 // green bar
array.push(greenBars, 1) // append 1 to end of array
array.push(redBars, 0) // append 0 to end of array
else if direction < 0 // red bar
array.push(greenBars, 0) // append 0 to end of array
array.push(redBars, 1) // append 1 to end of array
if direction != 0 // we've appended an element to the end of the array
array.shift(greenBars) // remove 1st element of array to keep size of array constant
array.shift(redBars) // remove 1st element of array to keep size of array constant
greenBarCount := array.sum(greenBars)
redBarCount := array.sum(redBars)
plot(greenBarCount, 'greenBarCount', color.green)
plot(redBarCount, 'redBarCount', color.red)
较短的版本:
//@version=5
indicator("Count Bar Color", "CBC")
var int barsBack = input.int(30, 'Number of bars lookback', 0)
var int[] greenBars = array.new_int(barsBack, 0)
var int[] redBars = array.new_int(barsBack, 0)
var int greenBarCount = 0
var int redBarCount = 0
direction = ta.change(close)
if barstate.isconfirmed and direction != 0
array.push(greenBars, direction > 0 ? 1 : 0)
array.push(redBars, direction < 0 ? 1 : 0)
array.shift(greenBars)
array.shift(redBars)
greenBarCount := array.sum(greenBars)
redBarCount := array.sum(redBars)
plot(greenBarCount, 'greenBarCount', color.green)
plot(redBarCount, 'redBarCount', color.red)
//@version=5
indicator('Bar Count', overlay=false, max_bars_back=1000)
green = close > close[1] ? 1 : 0
red = close < close[1] ? -1 : 0
length = input(30, title='Number of bars lookback')
greenbar = math.sum(green, length)
redbar = math.sum(red, length)
var g_count = 0
var r_count = 0
我完成了第一部分,但我认为它需要添加“tostring”部分,因为我需要在第二天再次计算,但我真的不知道如何计算这些数字...请帮助我编写这个松树脚本。我是松树脚本的新手。谢谢。
您可以将 red/green 状态保存在数组中,然后计算该数组中元素的总和以获得 red/green 柱数,如下所示:
//@version=5
indicator("Count Bar Color", "CBC")
var int barsBack = input.int(30, 'Number of bars lookback', 0)
var int[] greenBars = array.new_int(barsBack, 0)
var int[] redBars = array.new_int(barsBack, 0)
var int greenBarCount = 0
var int redBarCount = 0
direction = ta.change(close) // red or green ?
if barstate.isconfirmed // bar is complete
if direction > 0 // green bar
array.push(greenBars, 1) // append 1 to end of array
array.push(redBars, 0) // append 0 to end of array
else if direction < 0 // red bar
array.push(greenBars, 0) // append 0 to end of array
array.push(redBars, 1) // append 1 to end of array
if direction != 0 // we've appended an element to the end of the array
array.shift(greenBars) // remove 1st element of array to keep size of array constant
array.shift(redBars) // remove 1st element of array to keep size of array constant
greenBarCount := array.sum(greenBars)
redBarCount := array.sum(redBars)
plot(greenBarCount, 'greenBarCount', color.green)
plot(redBarCount, 'redBarCount', color.red)
较短的版本:
//@version=5
indicator("Count Bar Color", "CBC")
var int barsBack = input.int(30, 'Number of bars lookback', 0)
var int[] greenBars = array.new_int(barsBack, 0)
var int[] redBars = array.new_int(barsBack, 0)
var int greenBarCount = 0
var int redBarCount = 0
direction = ta.change(close)
if barstate.isconfirmed and direction != 0
array.push(greenBars, direction > 0 ? 1 : 0)
array.push(redBars, direction < 0 ? 1 : 0)
array.shift(greenBars)
array.shift(redBars)
greenBarCount := array.sum(greenBars)
redBarCount := array.sum(redBars)
plot(greenBarCount, 'greenBarCount', color.green)
plot(redBarCount, 'redBarCount', color.red)