各位老鐵,今天給大家說說一個很深度的主圖指標(biāo)——多維度波動率通道。這可不是普通的指標(biāo),它在傳統(tǒng)指標(biāo)的基礎(chǔ)上進(jìn)行了深度創(chuàng)新改良,先來說說它的幾個核心部分。
一、SuperTrend超級趨勢創(chuàng)新通道簡介
(一)改良版ATR機(jī)制
傳統(tǒng)ATR(平均真實(shí)波幅)大家都熟悉吧,但這個改良版的ATR可就有深度了。它采用了 MAX[(H-L), |REF(C,1)-H|, |REF(C,1)-L|] 的計(jì)算方式。
簡單來說,就是把當(dāng)天的最高價和最低價的差值、昨天收盤價和今天最高價的差值的絕對值、昨天收盤價和今天最低價的差值的絕對值,這三者中最大的那個作為當(dāng)天的TR值。這么一來,它對極端波動的捕捉能力就大大增強(qiáng)了,比傳統(tǒng)ATR靈敏多了,能更快地感知市場的大幅波動。
(二)動態(tài)通道
這個指標(biāo)的動態(tài)通道也很有講究。它以中軌(H+L)/2為中心,然后在這個基礎(chǔ)上疊加 MA(TR1,N)*M 來構(gòu)造非對稱帶寬。這就打破了傳統(tǒng)布林帶那種靜態(tài)標(biāo)準(zhǔn)差邏輯的局限,讓通道能夠根據(jù)市場的波動情況動態(tài)調(diào)整,更好地適應(yīng)市場的變化。
(三)自適應(yīng)趨勢線(SUPERTREN)
這個趨勢線可不是簡單的均線,它通過遞歸條件判斷(LIJIN3/Z1/Z2)來動態(tài)切換趨勢方向,還能結(jié)合歷史信號回溯(BARSLAST)精確捕捉趨勢延續(xù)或反轉(zhuǎn)的臨界點(diǎn)。這就相當(dāng)于給趨勢線裝上了“眼睛”和“大腦”,讓它能夠敏銳地感知市場的趨勢變化。
(四)雙狀態(tài)閾值分離
LIJINZ1(綠線)和LIJINZ2(紅線)是這個指標(biāo)的兩個重要參考線,它們可以很好地區(qū)分多空,避免了傳統(tǒng)指標(biāo)那種滯后性的問題。綠線代表多頭信號,紅線代表空頭信號,通過這兩條線,我們可以更清晰地判斷市場的多空力量對比。
(五)復(fù)合加權(quán)均線系統(tǒng)
LIJINW這個加權(quán)均線也很有特點(diǎn),它采用20周期線性衰減權(quán)重,公式是(20A + 19REF(A,1) + ... + REF(A,20))/210。這種加權(quán)方式賦予了近期價格更高的權(quán)重,同時削弱了早期的噪聲,讓均線更能反映市場的近期走勢。而D線則是LIJINW的10周期平滑,和LIJINW一起形成了一個帶狀區(qū)間(DRAWBAND),通過這個帶狀區(qū)間,我們可以監(jiān)測動量的收斂和發(fā)散情況。
二、趨勢判斷邏輯
這個指標(biāo)的趨勢判斷邏輯也很強(qiáng)大,主要有以下幾個方面。
(一)波動突破驅(qū)動
當(dāng)價格突破UP通道時,就會觸發(fā)潛在的多頭信號;而當(dāng)下穿DN通道時,則會強(qiáng)化空頭信號。這就相當(dāng)于給市場設(shè)了一個“警戒線”,一旦價格突破這個警戒線,就可能預(yù)示著趨勢的改變。
(二)SUPERTREN切換
通過D6與YX6周期數(shù)的對比(BY/SL交叉),可以判斷趨勢是延續(xù)還是反轉(zhuǎn)。這就像是給趨勢線裝了一個“開關(guān)”,能夠及時地切換趨勢的方向。
(三)遞歸信號驗(yàn)證
Z2信號要求價格在Z1周期內(nèi)連續(xù)突破LIJIN3或其滯后值(REF(LIJIN3,2)),這樣可以避免假突破的情況。同時,在趨勢周期內(nèi)取極值構(gòu)建支撐/阻力,形成自適應(yīng)軌道,這樣就能更好地把握趨勢的支撐和阻力位。
DRAWGBK(C>0,RGB(0,0,20),RGB(00,0,0),0,0,1);
N:=20;M:=3;
TR1:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
UP:=(H+L)/2+MA(TR1,N)*M;
DN:=(H+L)/2-MA(TR1,N)*M;
LIJIN:=REF(UP,BARSLAST(UP<=REF(UP,1)));
LIJIN2:=LLV(UP,N*1.5);
LIJIN3:=IF(LIJIN2<>REF(LIJIN2,1)&&LIJIN<REF(LIJIN,1),LIJIN,IF(LIJIN=LIJIN2,LIJIN,LIJIN2));
Z1:=BARSLAST(CROSS(0.5,UP=LIJIN3))+1;
Z2:=CROSS(COUNT((CROSS(C,LIJIN3)||CROSS(C,REF(LIJIN3,2)))&&UP>LIJIN3,Z1),0.5);
YX6:=BARSLAST(Z2);
D6:=BARSLAST(CROSS(HHV(DN,YX6+1),C));
BY:=CROSS(D6,YX6);
SL:=CROSS(YX6,D6);
SUPERTREN:=IF(D6>YX6,HHV(DN,BARSLAST(BY)+1),LLV(UP,BARSLAST(SL)+1));
LIJINZ1:IF(D6<=YX6,SUPERTREN,DRAWNULL),COLORGREEN,LINETHICK2;
LIJINZ2:IF(D6>YX6,SUPERTREN,DRAWNULL),COLORRED,LINETHICK2;
M2:=10;
A:=(3*C+L+O+H)/6;
LIJINW:(20*A+19*REF(A,1)+18*REF(A,2)+17*REF(A,3)+16*REF(A,4)+15*REF(A,5)+14*REF(A,6)+13*REF(A,7)+12*REF(A,8)+11*REF(A,9)+10*REF(A,10)+9*REF(A,11)+8*REF(A,12)+7*REF(A,13)+6*REF(A,14)+5*REF(A,15)+4*REF(A,16)+3*REF(A,17)+2*REF(A,18)+REF(A,20))/210,COLORWHITE;
D:MA(LIJINW,M2),COLORYELLOW;
DRAWBAND(D,RGB(0,224,224),LIJINW,RGB(255,96,96));
DRAWKLINE(H,O,L,C);
LIJIN18:=((SMA(MAX((CLOSE-REF(CLOSE,1)),0),6,1)/SMA(ABS((CLOSE-REF(CLOSE,1))),6,1))*100);
DRAWTEXT(CROSS(80,LIJIN18),(HIGH),'★短跑'),COLORFFDDEE;
DRAWTEXT(CROSS(LIJIN18,20),(LOW),'★機(jī)會'),COLORRED;
STICKLINE(C<LIJINW,C,O,3,0),COLORBLUE;
STICKLINE(C<LIJINW,H,L,0,0),COLORBLUE;
STICKLINE(C>=LIJINW,C,O,3,0),COLORYELLOW;
STICKLINE(C>=LIJINW,H,L,0,0),COLORYELLOW;
STICKLINE(C>=LIJINW&&C>O,C,O,3,0),COLORRED;
四、總結(jié)指標(biāo)評價
這個指標(biāo)可以說是融合了波動率自適應(yīng)、遞歸條件驗(yàn)證、動量加權(quán)三重邏輯的高階趨勢跟蹤系統(tǒng)。它對趨勢啟動和終結(jié)的捕捉效率顯著高于傳統(tǒng)Supertrend,非常適合中長線持倉策略。不過,它也有一些局限性。比如參數(shù)敏感性比較高,N=20/M=3/M2=10這些參數(shù)需要根據(jù)不同的品種進(jìn)行調(diào)優(yōu)。而且在低波動震蕩市中,它可能會比較頻繁地切換信號。不過,瑕不掩瑜,這個指標(biāo)的創(chuàng)新點(diǎn)也很突出。它將BARSLAST與CROSS函數(shù)嵌套,構(gòu)建了離散事件驅(qū)動型狀態(tài)機(jī),替代了傳統(tǒng)連續(xù)型指標(biāo)計(jì)算,這在技術(shù)上是一個很大的突破。
總之,這個多維度波動率通道指標(biāo)是一個很強(qiáng)大的工具,但大家在使用的時候也要結(jié)合自己的實(shí)際情況,配合成交量或宏觀因子過濾,這樣才能更好地發(fā)揮它的作用,提升勝率。
#include <iostream>
#include <vector>
#include <cmath>
usingnamespacestd;
struct FinancialData {
double open;
double close;
double high;
double low;
};
// 計(jì)算TR1
vector<double> calculateTR1(const vector<FinancialData>& data) {
int n = data.size();
vector<double> tr1(n, 0.0);
for (int i = 1; i < n; ++i) {
double high_low = data[i].high - data[i].low;
double abs_close_high = abs(data[i-1].close - data[i].high);
double abs_close_low = abs(data[i-1].close - data[i].low);
tr1[i] = max(max(high_low, abs_close_high), abs_close_low);
}
return tr1;
}
// 計(jì)算UP和DN
pair<vector<double>, vector<double>> calculateUPDN(const vector<FinancialData>& data, int N, int M) {
int n = data.size();
vector<double> up(n, 0.0);
vector<double> dn(n, 0.0);
vector<double> tr1 = calculateTR1(data);
for (int i = 0; i < n; ++i) {
double hl_avg = (data[i].high + data[i].low) / 2.0;
if (i >= N) {
double ma_tr1 = 0.0;
for (int j = i - N + 1; j <= i; ++j) {
ma_tr1 += tr1[j];
}
ma_tr1 /= N;
up[i] = hl_avg + ma_tr1 * M;
dn[i] = hl_avg - ma_tr1 * M;
} else {
up[i] = hl_avg;
dn[i] = hl_avg;
}
}
return make_pair(up, dn);
}
// 計(jì)算LIJIN3
double calculateLIJIN3(const vector<double>& up) {
int n = up.size();
double lijin3 = up[0];
for (int i = 1; i < n; ++i) {
if (up[i] != up[i-1] && up[i] < up[i-1]) {
lijin3 = up[i];
} elseif (up[i] == up[i-1]) {
lijin3 = up[i];
} else {
lijin3 = up[i-1];
}
}
return lijin3;
}
// 計(jì)算Z1和Z2
pair<int, int> calculateZ1Z2(const vector<double>& up, const vector<double>& dn, int N) {
int n = up.size();
int z1 = 0;
int z2 = 0;
// 計(jì)算Z1
for (int i = 0; i < n; ++i) {
if (i > 0 && up[i] > up[i-1]) {
z1 = i + 1;
break;
}
}
// 計(jì)算Z2
for (int i = 0; i < n; ++i) {
if (i > 0 && (up[i] > calculateLIJIN3(up) || dn[i] > calculateLIJIN3(up))) {
z2 = i + 1;
break;
}
}
return make_pair(z1, z2);
}
// 計(jì)算SUPERTREN
vector<double> calculateSUPERTREN(const vector<double>& up, const vector<double>& dn, int N) {
int n = up.size();
vector<double> supertren(n, 0.0);
int last_by = -1;
int last_sl = -1;
for (int i = 0; i < n; ++i) {
if (i > 0) {
if (dn[i] > up[i]) {
if (last_by == -1) {
last_by = i;
}
supertren[i] = dn[i];
} else {
if (last_sl == -1) {
last_sl = i;
}
supertren[i] = up[i];
}
} else {
supertren[i] = (up[i] + dn[i]) / 2.0;
}
}
return supertren;
}
// 計(jì)算LIJINW
vector<double> calculateLIJINW(const vector<FinancialData>& data, int M2) {
int n = data.size();
vector<double> lijinw(n, 0.0);
for (int i = 0; i < n; ++i) {
double a = (3 * data[i].close + data[i].low + data[i].open + data[i].high) / 6.0;
double weighted_sum = 0.0;
for (int j = 0; j < 20; ++j) {
if (i - j >= 0) {
weighted_sum += (20 - j) * a;
}
}
lijinw[i] = weighted_sum / 210.0;
}
// 計(jì)算D
vector<double> d(n, 0.0);
for (int i = 0; i < n; ++i) {
if (i >= M2) {
double sum = 0.0;
for (int j = i - M2 + 1; j <= i; ++j) {
sum += lijinw[j];
}
d[i] = sum / M2;
} else {
d[i] = lijinw[i];
}
}
return d;
}
風(fēng)險提示:本指標(biāo)僅供技術(shù)研究與學(xué)習(xí)交流使用。資本市場具有高度不確定性,任何基于本指標(biāo)的投資決策都需要自行承擔(dān)風(fēng)險,不構(gòu)成任何投資建議。
學(xué)習(xí)分享