update,
This commit is contained in:
32
kennethmak226/task1/kdj.py
Normal file
32
kennethmak226/task1/kdj.py
Normal file
@@ -0,0 +1,32 @@
|
||||
def calculate_kdj(high, low, close, n):
|
||||
# Calculate RSV
|
||||
true_range = [max(high[i] - low[i], abs(high[i] - close[i-1]), abs(low[i] - close[i-1])) for i in range(len(high))]
|
||||
rsv = [0]*len(close)
|
||||
for i in range(n, len(close)):
|
||||
avg_true_range = sum(true_range[i-n:i]) / n
|
||||
if avg_true_range == 0:
|
||||
rsv[i] = 0
|
||||
else:
|
||||
rsv[i] = (close[i] - min(low[i-n:i])) / avg_true_range * 100
|
||||
|
||||
# Calculate K, D, J
|
||||
k = [rsv[n]]
|
||||
d = []
|
||||
j = []
|
||||
for i in range(n+1, len(close)):
|
||||
k.append((2*k[-1]+rsv[i])/3)
|
||||
d.append((2*d[-1]+k[-1])/3)
|
||||
j.append(3*k[-1]-2*d[-1])
|
||||
|
||||
return k, d, j
|
||||
|
||||
|
||||
high = [...] # historical high prices
|
||||
low = [...] # historical low prices
|
||||
close = [...] # historical closing prices
|
||||
n = 9 # period parameter for KDJ calculation
|
||||
|
||||
k, d, j = calculate_kdj(high, low, close, n)
|
||||
print("K:", k)
|
||||
print("D:", d)
|
||||
print("J:", j)
|
Reference in New Issue
Block a user