-
Notifications
You must be signed in to change notification settings - Fork 3
/
brar.go
27 lines (25 loc) · 979 Bytes
/
brar.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package indicator
import (
"gitee.com/quant1x/pandas"
. "gitee.com/quant1x/pandas/formula"
)
// BRAR 情绪指标
//
// BR:SUM(MAX(0,HIGH-REF(CLOSE,1)),N)/SUM(MAX(0,REF(CLOSE,1)-LOW),N)*100;
// 输出BR:0和最高价-1日前的收盘价的较大值的N日累和/0和1日前的收盘价-最低价的较大值的N日累和*100
// AR:SUM(HIGH-OPEN,N)/SUM(OPEN-LOW,N)*100;
// 输出AR:最高价-开盘价的N日累和/开盘价-最低价的N日累和*100
func BRAR(df pandas.DataFrame, N any) pandas.DataFrame {
var (
OPEN = df.ColAsNDArray("open")
CLOSE = df.ColAsNDArray("close")
HIGH = df.ColAsNDArray("high")
LOW = df.ColAsNDArray("low")
)
//BR:SUM(MAX(0,HIGH-REF(CLOSE,1)),N)/SUM(MAX(0,REF(CLOSE,1)-LOW),N)*100;
c1 := REF(CLOSE, 1)
BR := SUM(MAX(HIGH.Sub(c1), 0), N).Div(SUM(MAX(c1.Sub(LOW), 0), N)).Mul(100)
//AR:SUM(HIGH-OPEN,N)/SUM(OPEN-LOW,N)*100;
AR := SUM(HIGH.Sub(OPEN), N).Div(SUM(OPEN.Sub(LOW), N)).Mul(100)
return pandas.NewDataFrame(BR, AR)
}