如何创建股票交易的运行偏斜(从开始日期起不断更新一组数字的偏斜)



我最近在股价图上帮助创建了一个从开始日期开始的ROC的运行平均值。感谢mr_statler创建了一个工作代码。我现在想通过创建运行偏斜来做同样的事情。我似乎无法将代码从刻薄翻译成歪斜。我将发布mr_statler为运行mean编写的代码。

这是mr_statler正在运行的ave/me均值代码";

//@version=5
indicator("My script")
var roc_array = array.new_float(0)
float avg_roc_array = array.avg(roc_array)
start = input.time(timestamp("04 Oct 2022 00:00:00"), "Start date")
if time >= start
roc = ((close / close[1]) - 1) * 100
array.push(roc_array, roc)
avg_roc_array := array.avg(roc_array)
plot(avg_roc_array)

现在这是我试图为运行偏斜创建的代码:

//@version=5
indicator("running skew")
//roc
length = input.int(1, minval=1)
source = input(close, "Source")
roc = 100 * (source - source[length])/source[length]
plot(roc, color=#2962FF, title="ROC")
hline(0, color=#787B86, title="Zero Line")
//skew
skewness(roc, length) =>
avg = ta.sma(roc, length)
stdv = ta.stdev(roc, length)
sum = math.pow(roc - avg, 3)
for i = 1 to length - 1
sum := sum + math.pow(roc[i] - avg, 3)
((sum / length) / math.pow(stdv, 3))
skew = skewness(roc, length)
//initializiation
var roc_array = array.new_float(0)
float skew_roc_array = skew
start = input.time(timestamp("04 Oct 2022 00:00:00"), "Start date")

//running skew
if time >= start
skew = skewness(roc, length)
array.push(skew_array, skew)
skew_roc_array := (roc_array)
plot(skew_roc_array, title="skew", color=color.yellow)

更新代码7-6-23

//@version=5
indicator("running skew of roc")
//roc
roclength = input.int(1, minval=1)
length = input.int(2, minval=1)
source = input(close, "Source")
roc = 100 * (source - source[roclength])/source[roclength]
// plot(roc, color=#2962FF, title="ROC")
// hline(0, color=#787B86, title="Zero Line")
//skew
skewness(roc, length) =>
avg = ta.sma(roc, length)
stdv = ta.stdev(roc, length)
sum = math.pow(roc - avg, 3)
for i = 1 to length - 1
sum := sum + math.pow(roc[i] - avg, 3)
((sum / length) / math.pow(stdv, 3))
_skew = skewness(roc, length)
start = input.time(timestamp("13 Oct 2022 09:30:00"), "Start date")
skew = time >= start ? _skew : na
plot(skew, title="skew", color=color.yellow)
如果length等于1,则ta.stdev(roc, length)将返回0,这导致((sum / length) / math.pow(stdv, 3))基本上被零除并返回na。你首先需要解决这个问题。

之后,如果您只想从特定日期开始绘制skew,可以使用以下代码:

//@version=5
indicator("running skew")
//roc
length = input.int(2, minval=1)
source = input(close, "Source")
roc = 100 * (source - source[length])/source[length]
// plot(roc, color=#2962FF, title="ROC")
// hline(0, color=#787B86, title="Zero Line")
//skew
skewness(roc, length) =>
avg = ta.sma(roc, length)
stdv = ta.stdev(roc, length)
sum = math.pow(roc - avg, 3)
for i = 1 to length - 1
sum := sum + math.pow(roc[i] - avg, 3)
((sum / length) / math.pow(stdv, 3))
_skew = skewness(roc, length)
start = input.time(timestamp("04 Oct 2022 00:00:00"), "Start date")
skew = time >= start ? _skew : na
plot(skew, title="skew", color=color.yellow)

最新更新