日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

atr指标 java算法_关于股指期货的SAR、CCI、BIAS、ATR指标的算法

發(fā)布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 atr指标 java算法_关于股指期货的SAR、CCI、BIAS、ATR指标的算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

股指期貨中的周期指標(biāo)除了SMA、EMA、BOOL、MACD、KDJ等還有很多其他分析的指標(biāo),如SAR、CCI、BIAS、ATR有時候也會被交易者用來判斷股指期貨的走向。正好最近項目中有需要加上這幾種指標(biāo)供用戶使用,在此記錄一下:

1 SAR

1.1 首先奉上sar的效果圖

sar.png

1.2 sar的計算公式如下:

在計算SAR之前,先要選定一段周期,比如n日或n周等,n天或周的參數(shù)一般為4日或4周。

計算Tn周期的SAR值為例,計算公式如下:

SAR(Tn)=SAR(Tn-1)+AF(Tn)*[EP(Tn-1)-SAR(Tn-1)]

① SAR(Tn)為第Tn周期的SAR值

② SAR(Tn-1)為第(Tn-1)周期的值

③ AF為加速因子(或叫加速系數(shù))

④ EP為極點價(最高價或最低價)

在計算SAR值時,要注意以下幾項原則:

1 .初始值SAR(T0)的確定

若T1周期中SAR(T1)上漲趨勢,則SAR(T0)為T0周期的最低價

若T1周期下跌趨勢,則SAR(T0)為T0周期 的最高價;

2.極點價EP的確定

若Tn周期為上漲趨勢,EP(Tn-1)為Tn-1周期的最高價

若Tn周期為下跌趨勢,EP(Tn-1)為Tn-1周期的最 低價;

3.加速因子AF的確定

(a)加速因子初始值為0.02,即AF(T0)=0.02;

(b)若Tn-1,Tn周期都為上漲趨勢時,

當(dāng)Tn周期的最高價>Tn-1周期的最高價,則AF(Tn)=AF(Tn-1)+0.02

當(dāng)Tn周期的最高價<=Tn-1周期的最高價,則AF(Tn)=AF(Tn-1),但加速因子AF最高不超過0.2;

(c)若Tn-1,Tn周期都為下跌趨勢時,

當(dāng)Tn周期的最低價

當(dāng)Tn周期的最低價>=Tn-1周期的最低價,則AF(Tn)=AF(Tn-1);

(d)任何一次行情的轉(zhuǎn)變,加速因子AF都必須重新由0.02起算;

比如,Tn-1周期為上漲趨勢,Tn周期為下跌趨勢(或Tn-1下跌,Tn上漲),AF(Tn)需重新由0.02為基礎(chǔ)進(jìn) 行計算,即AF(Tn)=AF(T0)=0.02;

(e)加速因子AF最高不超過0.2,當(dāng)AF>0.2時,AF需重新由0.02起算;

4.SAR值的確定

(a)通過公式SAR(Tn)=SAR(Tn-1)+AF(Tn)*[EP(Tn-1)-SAR(Tn-1)],計算出Tn周期的值;

(b)若Tn周期為上漲趨勢,

當(dāng)SAR(Tn)>Tn周期的最低價(或SAR(Tn)>Tn-1周期的最低價),則Tn周期最終 SAR值應(yīng)為Tn-1、Tn周期的最低價中的最小值

當(dāng)SAR(Tn)<=Tn周期的最低價且SAR(Tn)<=Tn-1周期的最低價,則Tn周期最終SAR值為SAR(Tn),即SAR=SAR(Tn);

(c)若Tn周期為下跌趨勢,

當(dāng)SAR(Tn)

當(dāng)SAR(Tn)>=Tn周期的最高價且SAR(Tn)>=Tn-1周期的最高價,則Tn周期最終SAR值為SAR(Tn),即 SAR=SAR(Tn);

2 ATR

2.1 首先奉上atr的效果圖

atr.png

2.2 ATR的計算公式如下:

atr1.png

t——當(dāng)日;

n——時間長度;

Ci——第i日的[收盤價]

Hi——第i日的最高價;

Li——第i日的[最低價]

TRi = max(Hi,Ci-1)-min(Li,Ci-1)

注:一般取n=14,m=6。

其實就是一個求和取平均的過程。

2.3 順道奉上atr計算的代碼,省的一眼看下來都是百度能找到的公式解讀。

/**

* 獲取ATR指標(biāo)

* ATR(cycle)(t) = 1/cycle{TR(1)+.........TR(cycle)}

* TR(i) = max(Hi,Ci-1)-min(Li,Ci-1)

* i = t-i+1

* t——當(dāng)日;

* n——時間長度;

* Ci——第i日的收盤價;

* Hi——第i日的最高價;

* Li——第i日的最低價。

* 一般取cycle=14

*

* @param list

* @param cycle

* @return

*/

public static List> getATRLineDatas(List list, int cycle) {

if (list == null || list.size() == 0)

return null;

List> lineDatas = new ArrayList>();

List dataATRs = new ArrayList<>();

// 加入前面周期的缺省 確保list的值跟周期線一致 缺省范圍=(cycle-1)

for (int i = 1; i < cycle; i++) {

dataATRs.add(0, new KCandleObj());

}

// 從(cycle-1)開始,因為list的索引從0開始

for (int t = cycle - 1; t < list.size(); t++) {

// 每一個周期的TRI之和

double tRISigma = 0;

// 計算每一個周期的所有TR

for (int i = t - (cycle - 1); i <= t; i++) {

KCandleObj kCandleObj = list.get(i);

// 昨收

double lastClose = 0;

if (i == 0) {

// 第一根昨收為0

lastClose = 0;

} else {

// 使用前一根的收盤價

lastClose = list.get(i - 1).getClose();

}

double TRI = Math.max(kCandleObj.getHigh(), lastClose) - Math.min(kCandleObj.getLow(), lastClose);

tRISigma += TRI;

}

dataATRs.add(new KCandleObj(tRISigma / 14));

}

KLineObj kLineObj = new KLineObj();

kLineObj.setLineData(dataATRs);

kLineObj.setTitle("ATR(14)");

kLineObj.setValue(dataATRs.get(dataATRs.size() - 1).getNormValue());

kLineObj.setLineColor(Color.parseColor("#feb705"));

kLineObj.setScale(KNumberUtil.getPointPow(list.get(0).getClose()));

lineDatas.add(kLineObj);

return lineDatas;

}

3 BIAS

3.1 照例奉上效果圖

bias.png

3.2 照例奉上公式

計算公式如下:

乖離率=[(當(dāng)日收盤價-N日平均價)/N日平均價]*100%

其中N取:6,12,24

BIAS算是比較簡單的一個指標(biāo)。

3.3 破例奉上BIAS的代碼

* 計算bias

* 計算公式如下:

* 乖離率=[(當(dāng)日收盤價-N日平均價)/N日平均價]*100%

*

* @param list

* @param cycle 6,12,24

* @return

*/

private static List getBIASLineCycleData(List list, int cycle) {

List dataBIASOneCycle = new ArrayList<>();

// 加入前面周期的缺省 確保list的值跟周期線一致 缺省范圍=(cycle-1)

for (int i = 1; i < cycle; i++) {

dataBIASOneCycle.add(0, new KCandleObj());

}

// 從(cycle-1)開始,因為list的索引從0開始

// 對周期內(nèi)的收盤價求和

double sigmaClose = 0;

for (int t = cycle - 1; t < list.size(); t++) {

KCandleObj kCandleObj = list.get(t);

double close = kCandleObj.getClose();

// 為0說明沒有計算過

if (sigmaClose == 0) {

for (int i = t - (cycle - 1); i <= t; i++) {

sigmaClose += list.get(i).getClose();

}

} else {

// 對之后的求和 減去第1個+當(dāng)前的1根 不用再做周期循環(huán)

sigmaClose = sigmaClose - list.get(t - cycle).getClose() + close;

}

// 收盤價均值

double closeAverage = sigmaClose / cycle;

double bIAS = (close - closeAverage) / closeAverage * 100;

dataBIASOneCycle.add(new KCandleObj(bIAS));

}

return dataBIASOneCycle;

}

4 CCI

4.1 熱乎乎的cci效果圖

cci.png

4.2 百度可見的cci公式

以日CCI計算為例,其計算方法有兩種。

第一種計算過程如下:

CCI(N日)=(TP-MA)÷MD÷0.015

其中,TP=(最高價+最低價+收盤價)÷3

MA=近N日收盤價的累計之和÷N

MD=近N日(MA-收盤價)的累計之和÷N

0.015為計算系數(shù),N為計算周期

網(wǎng)上還有一種計算方式是用平均絕對偏差弄的,直接第一種實現(xiàn)了也就沒有搞第二種了。這概念只能認(rèn)得幾個字,令人望而卻步。

稍微提示一下,計算MD的時候請用絕對值,不然算出的來的指標(biāo)線會不對。

總結(jié)

以上是生活随笔為你收集整理的atr指标 java算法_关于股指期货的SAR、CCI、BIAS、ATR指标的算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。