以平均K線圖(Heikin-Ashi)算法為例教你寫(xiě)FMZ擴(kuò)展指標(biāo)庫(kù)
編寫(xiě)趨勢(shì)策略的開(kāi)發(fā)者經(jīng)常和作者探討一些指標(biāo)算法,常用的指標(biāo)都在talib等指標(biāo)庫(kù)中可以找到。但是對(duì)于一些比較冷門(mén)且實(shí)用的算法、指標(biāo)就很難找到現(xiàn)成的。想自己動(dòng)手實(shí)現(xiàn)又沒(méi)有設(shè)計(jì)思路、設(shè)計(jì)經(jīng)驗(yàn),感覺(jué)無(wú)從下手。
那么本篇作者就帶你通過(guò)編寫(xiě)設(shè)計(jì)一個(gè)簡(jiǎn)單的算法:平均K線圖(Heikin-Ashi)來(lái)學(xué)習(xí)如何“手搓”算法函數(shù)。
平均K線圖(Heikin-Ashi)算法
在這里我們將所要計(jì)算的平均K線圖的開(kāi)盤(pán)價(jià)、最高價(jià)、最低價(jià)、收盤(pán)價(jià)簡(jiǎn)稱為:avgOpen、avgHigh、avgLow、avgClose。作為參數(shù)的K線數(shù)據(jù)中的開(kāi)盤(pán)價(jià)、最高價(jià)、最低價(jià)、收盤(pán)價(jià)簡(jiǎn)稱為:Open、High、Low、Close。
作者拿到這個(gè)算法計(jì)算資料時(shí)詳細(xì)看了一遍,發(fā)現(xiàn)這個(gè)計(jì)算其實(shí)并不復(fù)雜(真的很簡(jiǎn)單),計(jì)算主要分兩個(gè)部分的處理。
初始Bar算法:
因?yàn)檫@個(gè)算法是一個(gè)迭代算法,計(jì)算當(dāng)前Bar的數(shù)據(jù)時(shí)需要引用到前一個(gè)Bar的數(shù)據(jù)(很多經(jīng)典指標(biāo)、算法都是這種迭代計(jì)算),所以第一根Bar的計(jì)算必然是與其后的迭代計(jì)算是不同的。
根據(jù)這個(gè)指標(biāo)的計(jì)算資料的描述,第一根平均K線Bar的計(jì)算方式如下:
后續(xù)Bar迭代算法:
除了第一根平均K線Bar之外,后續(xù)的平均K線Bar需要迭代計(jì)算,算法如下:
設(shè)計(jì)實(shí)現(xiàn)
在FMZ.CN上以「模板類庫(kù)」形式編寫(xiě)、收納這個(gè)算法,編寫(xiě)一個(gè)「JavaScript擴(kuò)展指標(biāo)庫(kù)」。如果還希望“手搓”一些其它指標(biāo)算法,也可以直接加入到這個(gè)模板代碼中。
在策略庫(kù)創(chuàng)建一個(gè)策略,選擇策略語(yǔ)言為JavaScript
,選擇策略類型為「模板類庫(kù)」,命名為:JavaScript擴(kuò)展指標(biāo)庫(kù)。
編寫(xiě)并詳細(xì)注釋:
回測(cè)測(cè)試
運(yùn)行這個(gè)模板類庫(kù),執(zhí)行main
函數(shù)中的獲取數(shù)據(jù)、畫(huà)圖等操作,計(jì)算出了平均K線數(shù)據(jù)并畫(huà)圖。

該代碼用于教學(xué),可以根據(jù)具體需求隨意擴(kuò)展、修改。