D17- 用 Swift 和公开资讯,打造投资理财的 Apps { 移动平均线(MA线)分析 }

做完 K 线完成後,就是做均线,常见大盘走势图如下,在这些 K 棒的图上,通常会有数条(通常三条)线会和这些 K 棒交错,这些线是均线。MA5 就是5日的平均,也称周线。MA20 就是 20 日的平均,也称月线。MA60 就是三个 20,所以称季线。再上去还有半年线和年线。

https://ithelp.ithome.com.tw/upload/images/20210927/20140622n0VrHXaJAr.png

均线的介绍如下,我们这边要实作的会是简单移动平均线。

https://zh.wikipedia.org/wiki/移动平均

市场中使用均线的流派

葛兰碧八大法则

https://www.moneydj.com/z/analyst/ma.htm

使用价格和均线当指标,依照均线和价格交错的时机,做股票的进出,更详细的说明可以在网路上找到大量的资料

将 CandleStickChartView 转成 CombinedChartView

移动平均线是要和 K 线画在同一张图上的,但之前我们做的 K 线图,用的是 CandleStickChartView,这个类别是没办法设定 Line 的 Data的,所以,我们要将 CandleStickChartView 转换成 CombinedChartView。 CombinedChartView 可以显示复数种类的 Data,如果你想,是可以把 Line, Bar, Candle 全部画上去的。

所以,之前的纯 CandelChart 相关功能,已经从 VC 收进 ChartsAdapter 内了,所以 VC 在 private func setupCandleView() 要更改的,只是呼叫 chartsAdapter 内的方法,去得到 CombinedChartView。

扩充 ChartsAdapter

开出 ChartsAdapter 中 CombinedChartView 相关的 func,让 VC 呼叫。

// MARK: - Combine Charts 相关 func
extension ChartsAdapter {
    
    func getCombineChartView() -> UIView {
        let view = CombinedChartView()
        setupCombinedChartView(view)
        return view
    }

    private func setupCombinedChartView(_ chartView: CombinedChartView) {
        
        chartView.dragEnabled = false
        chartView.setScaleEnabled(true)
        chartView.maxVisibleCount = 1000
        chartView.pinchZoomEnabled = true
        
        chartView.legend.horizontalAlignment = .right
        chartView.legend.verticalAlignment = .top
        chartView.legend.orientation = .vertical
        chartView.legend.drawInside = false
        chartView.legend.font = UIFont.systemFont(ofSize: 10)
        
        chartView.leftAxis.labelFont = UIFont.systemFont(ofSize: 10)
        chartView.leftAxis.spaceTop = 0.3
        chartView.leftAxis.spaceBottom = 0.3
        chartView.leftAxis.axisMinimum = 0
        
        chartView.rightAxis.enabled = false
        
        chartView.xAxis.labelPosition = .bottom
        chartView.xAxis.labelFont = UIFont.systemFont(ofSize: 10)
        chartView.xAxis.labelCount = 10
    }
}

下方是这次 D1 ~ D12 的完成品,可以下载来试

App Store - 台股申购日历

https://ithelp.ithome.com.tw/upload/images/20210924/20140622ypOBM0tgrZ.png


<<:  Day 24 | Livewire 实作 购物网站(三): 加入购物车

>>:  Day 13. Zabbix 图表视觉化查看

DAY9: setImmediate 与 nextTick的比较

继上一篇的DAY8: process.nextTick(),今天要介绍新方法并相互比较。 setIm...

Rebol 语言和你 SAY HELLO!!

第十五天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,知...

[FHIR 从入门到放弃] Day 03-FHIR 服务器安装

说明 关於 FHIR 服务器 FHIR 有非常多服务器端的实作,这边使用的是 HAPI FHIR。这...

Day 17 AWS云端实作起手式第七弹 让开机器变得很自动自发Auto Scaling-ReadNode设置

关於Auto Scaling的建置,我们预计会花两到三天的时间来做比较详细说明。 参考Udemy A...

Day 26 - Watch os 开发学习3(输入框、Picker)

在Apple watch中,我们依然可以去使用输入框 struct ContentView: Vie...