Initial commit
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
||||
class KDJ_Item:
|
||||
def __init__(self, k, d, j):
|
||||
self.k = k
|
||||
self.d = d
|
||||
self.j = j
|
||||
|
||||
|
||||
class KDJ:
|
||||
def __init__(self, period: int = 9):
|
||||
super(KDJ, self).__init__()
|
||||
self.arr = []
|
||||
self.period = period
|
||||
self.pre_kdj = KDJ_Item(50, 50, 50)
|
||||
|
||||
def add(self, high, low, close) -> KDJ_Item:
|
||||
self.arr.append({
|
||||
'high': high,
|
||||
'low': low,
|
||||
})
|
||||
if len(self.arr) > self.period:
|
||||
self.arr.pop(0)
|
||||
|
||||
hn = max([x['high'] for x in self.arr])
|
||||
ln = min([x['low'] for x in self.arr])
|
||||
cn = close
|
||||
rsv = 100 * (cn - ln) / (hn - ln) if hn != ln else 0.0
|
||||
|
||||
cur_k = 2 / 3 * self.pre_kdj.k + 1 / 3 * rsv
|
||||
cur_d = 2 / 3 * self.pre_kdj.d + 1 / 3 * cur_k
|
||||
cur_j = 3 * cur_k - 2 * cur_d
|
||||
cur_kdj = KDJ_Item(cur_k, cur_d, cur_j)
|
||||
self.pre_kdj = cur_kdj
|
||||
|
||||
return cur_kdj
|
||||
Reference in New Issue
Block a user