|
@@ -218,7 +218,11 @@ class DataUtil {
|
|
var rsi: CGFloat = 0
|
|
var rsi: CGFloat = 0
|
|
var rsiABSEma: CGFloat = 0
|
|
var rsiABSEma: CGFloat = 0
|
|
var rsiMaxEma: CGFloat = 0
|
|
var rsiMaxEma: CGFloat = 0
|
|
|
|
+ var priceChange: CGFloat = 0
|
|
|
|
+ var priceChangePer: CGFloat = 0
|
|
|
|
+
|
|
var startIndex = 0
|
|
var startIndex = 0
|
|
|
|
+
|
|
if isLast, dataList.count > 13 {
|
|
if isLast, dataList.count > 13 {
|
|
startIndex = dataList.count - 1
|
|
startIndex = dataList.count - 1
|
|
let data = dataList[dataList.count - 2]
|
|
let data = dataList[dataList.count - 2]
|
|
@@ -226,6 +230,7 @@ class DataUtil {
|
|
rsiABSEma = data.rsiABSEma
|
|
rsiABSEma = data.rsiABSEma
|
|
rsiMaxEma = data.rsiMaxEma
|
|
rsiMaxEma = data.rsiMaxEma
|
|
}
|
|
}
|
|
|
|
+
|
|
for i in startIndex ..< dataList.count {
|
|
for i in startIndex ..< dataList.count {
|
|
let entity = dataList[i]
|
|
let entity = dataList[i]
|
|
let closePrice = entity.close
|
|
let closePrice = entity.close
|
|
@@ -233,18 +238,28 @@ class DataUtil {
|
|
rsi = 0
|
|
rsi = 0
|
|
rsiABSEma = 0
|
|
rsiABSEma = 0
|
|
rsiMaxEma = 0
|
|
rsiMaxEma = 0
|
|
|
|
+ priceChange = 0
|
|
|
|
+ priceChangePer = 0
|
|
} else {
|
|
} else {
|
|
- let Rmax = max(0, closePrice - dataList[i - 1].close)
|
|
|
|
- let RAbs = abs(closePrice - dataList[i - 1].close)
|
|
|
|
|
|
+ let preClosePrice = dataList[i - 1].close
|
|
|
|
+ let closeDiff = closePrice - preClosePrice
|
|
|
|
+
|
|
|
|
+ let Rmax = max(0, closeDiff)
|
|
|
|
+ let RAbs = abs(closeDiff)
|
|
rsiMaxEma = (Rmax + (14 - 1) * rsiMaxEma) / 14
|
|
rsiMaxEma = (Rmax + (14 - 1) * rsiMaxEma) / 14
|
|
rsiABSEma = (RAbs + (14 - 1) * rsiABSEma) / 14
|
|
rsiABSEma = (RAbs + (14 - 1) * rsiABSEma) / 14
|
|
rsi = (rsiMaxEma / rsiABSEma) * 100
|
|
rsi = (rsiMaxEma / rsiABSEma) * 100
|
|
|
|
+
|
|
|
|
+ priceChange = closeDiff
|
|
|
|
+ priceChangePer = priceChange / preClosePrice * 100.0
|
|
}
|
|
}
|
|
if i < 13 { rsi = 0 }
|
|
if i < 13 { rsi = 0 }
|
|
if rsi.isNaN { rsi = 0 }
|
|
if rsi.isNaN { rsi = 0 }
|
|
entity.rsi = rsi
|
|
entity.rsi = rsi
|
|
entity.rsiABSEma = rsiABSEma
|
|
entity.rsiABSEma = rsiABSEma
|
|
entity.rsiMaxEma = rsiMaxEma
|
|
entity.rsiMaxEma = rsiMaxEma
|
|
|
|
+ entity.priceChange = priceChange
|
|
|
|
+ entity.priceChangePer = priceChangePer
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|