Forráskód Böngészése

Merge branch 'vincent_dev' into 推广版

Vincent Hu 1 hete
szülő
commit
a28af3c305

+ 2 - 0
Koala/Koala/FX/OtherClass/KLineChart/Model/KMyLineModel.swift

@@ -13,6 +13,8 @@ public class KMyLineModel {
     public var high: CGFloat = 0
     public var low: CGFloat = 0
     public var close: CGFloat = 0
+    public var priceChange: CGFloat = 0
+    public var priceChangePer: CGFloat = 0
     public var vol: CGFloat = 0
     public var datetime: Int64 = 0
 

+ 17 - 2
Koala/Koala/FX/OtherClass/KLineChart/Util/DataUtil.swift

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

+ 4 - 3
Koala/Koala/FX/OtherClass/KLineChart/View/KLineInfosView.swift

@@ -71,7 +71,7 @@ class KLineInfosView: UIView {
             lowLabel.text = pricePrecisionFormat(KLineStateManger.precision, model.low)
             closeLabel.text = pricePrecisionFormat(KLineStateManger.precision, model.close)
             
-            let upDown = model.close - model.open
+            let upDown = model.priceChange
             var symbol = "-"
             
             if upDown > 0 {
@@ -84,9 +84,10 @@ class KLineInfosView: UIView {
                 self.amplitudeLabel.textColor = self.increaseLabel.textColor
             }
             
-            let upDownPercent = upDown / model.open * 100
             increaseLabel.text = symbol + pricePrecisionFormat(KLineStateManger.precision, abs(upDown))
-            amplitudeLabel.text = symbol + pricePrecisionFormat(KLineStateManger.precision, abs(upDownPercent)) + "%"
+            
+            let upDownPercent = model.priceChangePer
+            amplitudeLabel.text = symbol + pricePrecisionFormat("2", abs(upDownPercent)) + "%"
         }
     }
 }

+ 4 - 0
Koala/Koala/FX/OtherClass/KLineChart/View/KLineOptionView.swift

@@ -9,6 +9,8 @@
 import UIKit
 
 class KLineOptionView: BaseAlertView, UIGestureRecognizerDelegate {
+    var kLineStateManger: KLineStateManger = .init()
+    
     private let containerViewHeight: CGFloat = 175 + 34
     private var originCenter = CGPointZero
     
@@ -215,6 +217,8 @@ extension KLineOptionView: UICollectionViewDelegate {
         if let block = completeBlock {
             block(titleList[indexPath.item] as NSString)
             
+            kLineStateManger.klineChart?.isLongPress = false
+            
             dismissAlert()
         }
     }

+ 3 - 0
Koala/Koala/FX/OtherClass/KLineChart/View/KLinePeriod2View.swift

@@ -84,6 +84,7 @@ class KLinePeriod2View: UIView {
     
     private func handleMoreAction(_ sender: UIButton) {
         let pop = KLineOptionView()
+        pop.kLineStateManger = kLineStateManger
         pop.showPopupView(titles: [switchLanguage("1分"), switchLanguage("5分"), switchLanguage("周K"), switchLanguage("月K"), switchLanguage("年K")], index: currentMoreTitle as NSString) { [weak self] title in
             guard let self = self else { return }
             
@@ -167,6 +168,8 @@ class KLinePeriod2View: UIView {
                 
         kLineStateManger.setisLine(isLine)
         kLineStateManger.kType = kType
+        kLineStateManger.klineChart?.isLongPress = false
+        
         JDLoadView.startAnimating()
     }
     

+ 2 - 0
Koala/Koala/FX/OtherClass/KLineChart/View/KLinePeriodView.swift

@@ -84,6 +84,7 @@ class KLinePeriodView: UIView {
     
     private func handleMoreAction(_ sender: UIButton) {
         let pop = KLineOptionView()
+        pop.kLineStateManger = kLineStateManger
         pop.showPopupView(titles: [switchLanguage("1分"), switchLanguage("5分"), switchLanguage("15分"), switchLanguage("30分"), switchLanguage("60分")], index: currentMoreTitle as NSString) { [weak self] title in
             guard let self = self else { return }
             
@@ -167,6 +168,7 @@ class KLinePeriodView: UIView {
                 
         kLineStateManger.setisLine(isLine)
         kLineStateManger.kType = kType
+        kLineStateManger.klineChart?.isLongPress = false
         
         JDLoadView.startAnimating()
     }