兄弟老鐵們,今天給大家嘮嘮一個(gè)超有意思的分析指標(biāo),它就像個(gè)“市場透視鏡”,能幫你瞅出市場的趨勢和可能的拐點(diǎn)。這指標(biāo)有啥厲害的呢?
多周期分析:通過設(shè)置不同的N值,它能分析各種周期的價(jià)格變化,不管你是個(gè)短線選手還是長線布局的大佬,都能找到適合自己的節(jié)奏。
動(dòng)態(tài)周期調(diào)整:這個(gè)指標(biāo)可不是死板的,它用FRACPART函數(shù),能根據(jù)市場的波動(dòng)動(dòng)態(tài)調(diào)整周期,就像靈活組合K線,隨時(shí)適應(yīng)市場的變化。
一. 指標(biāo)的特色創(chuàng)新
周期漲跌幅度:它會(huì)算出當(dāng)前價(jià)格和參考周期前的價(jià)格漲跌幅度。要是漲跌幅特別大,那市場可能正嗨著呢;要是漲跌幅度小得可憐,說不定市場就在那兒磨磨唧唧,搞不好就快到底了。
價(jià)格區(qū)間:通過HHV和LLV函數(shù),它能算出周期內(nèi)的最高價(jià)和最低價(jià)。要是收盤價(jià)比開盤價(jià)低,而且價(jià)格區(qū)間窄得跟針眼似的,那市場可能就在底部徘徊了。
二. 指標(biāo)的核心算法原理
老鐵們,這指標(biāo)的工作原理其實(shí)挺有意思的:
周期計(jì)算:lijin1算的是當(dāng)前K線的總數(shù),lijin2用FRACPART函數(shù)動(dòng)態(tài)調(diào)整周期,讓指標(biāo)能適應(yīng)各種周期的市場變化。
參考價(jià)格:PO根據(jù)lijin2的值確定參考開盤價(jià),后面的價(jià)格比較就靠它了。
價(jià)格區(qū)間:PH和PL分別算出周期內(nèi)的最高價(jià)和最低價(jià),標(biāo)記出價(jià)格區(qū)間。
漲跌幅度:通過周期漲跌%算出當(dāng)前價(jià)格和參考周期前的價(jià)格漲跌幅度,幫你看清市場趨勢。
任意周期K線合并C++源代碼
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
// 模擬股票數(shù)據(jù)結(jié)構(gòu)
struct StockData {
double open; // 開盤價(jià)
double high; // 最高價(jià)
double low; // 最低價(jià)
double close; // 收盤價(jià)
};
// 計(jì)算周期漲跌百分比
double calculatePeriodChange(const std::vector<StockData>& data, int period) {
if (period >= data.size()) return0.0;
return (data.back().close - data[data.size() - period - 1].close) / data[data.size() - period - 1].close * 100.0;
}
// 繪制K線圖(簡化版,僅打印信息)
void drawKLine(const std::vector<StockData>& data, int N) {
for (size_t i = 0; i < data.size(); ++i) {
int lijin1 = static_cast<int>(i + 1); // 當(dāng)前周期
double lijin2 = std::floor(lijin1 / N) * N;
int period = static_cast<int>(lijin2);
double PO = (period == 0) ? data[i].open : data[i - period].open;
double PH = *std::max_element(data.begin() + std::max(0, static_cast<int>(i) - N + 1), data.begin() + i + 1,
[](const StockData& a, const StockData& b) { return a.high < b.high; }).high;
double PL = *std::min_element(data.begin() + std::max(0, static_cast<int>(i) - N + 1), data.begin() + i + 1,
[](const StockData& a, const StockData& b) { return a.low < b.low; }).low;
double PC = data[i].close;
double periodChange = calculatePeriodChange(data, period + 1);
// 根據(jù)條件繪制K線
if (period == N - 1) {
if (PC > PO) {
std::cout << 'Red KLine: Open=' << PO << ', Close=' << PC << ', High=' << PH << ', Low=' << PL << ', Change=' << periodChange << '%' << std::endl;
} elseif (PC == PO) {
std::cout << 'Yellow KLine: Open=' << PO << ', Close=' << PC << ', High=' << PH << ', Low=' << PL << ', Change=' << periodChange << '%' << std::endl;
} else {
std::cout << 'Blue KLine: Open=' << PO << ', Close=' << PC << ', High=' << PH << ', Low=' << PL << ', Change=' << periodChange << '%' << std::endl;
}
}
}
}
三. N的取值邏輯原理
在指標(biāo)代碼中,變量 N
被定義為 2^M
(即2的冪次),這一設(shè)計(jì)主要與 WH2
的計(jì)算邏輯及周期性條件的觸發(fā)機(jī)制密切相關(guān)。以下是詳細(xì)解釋:
WH2
的計(jì)算邏輯代碼中關(guān)鍵的一步是:
WH2 := FRACPART(WH1/N) * N
FRACPART
函數(shù)的作用是取小數(shù)部分。例如,若 WH1 = 7
且 N = 4
,則 WH1/N = 1.75
,其小數(shù)部分為 0.75
,乘以 N
后得到 WH2 = 3
。
WH2
的取值范圍為 [0, N-1]
,且當(dāng) WH1
為連續(xù)的整數(shù)時(shí),WH2
會(huì)周期性循環(huán)(如 0,1,2,3,0,1,2,3,...
)。
代碼中所有的 STICKLINE
繪制條件均基于 WH2 = N-1
:
STICKLINE(WH2=N-1 AND ...)
WH2 = N-1
表示當(dāng)前處于一個(gè)周期的最后一個(gè)位置。例如,若 N = 4
,則當(dāng) WH2 = 3
時(shí),標(biāo)志著一個(gè)周期的結(jié)束和新周期的開始。
如果 N
是2的冪次,這種設(shè)計(jì)能確保周期長度均勻,且 WH2
的循環(huán)與二進(jìn)制特性完美契合(如通過位運(yùn)算優(yōu)化余數(shù)計(jì)算)。
N
是2的冪次?當(dāng) N
為2的冪次時(shí)(如4、8、16),周期長度能均勻劃分市場時(shí)間序列。這種均勻性對計(jì)算最高價(jià)(PH
)、最低價(jià)(PL
)和引用歷史數(shù)據(jù)(REF(O, WH2)
)至關(guān)重要。非2的冪次可能導(dǎo)致周期邊界錯(cuò)位,影響指標(biāo)準(zhǔn)確性。
在底層計(jì)算中,FRACPART(WH1/N) * N
等效于 WH1 % N
(取余運(yùn)算)。當(dāng) N
是2的冪次時(shí),編譯器或解釋器可能使用位掩碼(WH1 & (N-1)
)優(yōu)化余數(shù)計(jì)算,顯著提升執(zhí)行效率。
若 N
非2的冪次,WH2
的分布可能不均勻,導(dǎo)致某些周期內(nèi) WH2
無法正確觸發(fā) N-1
條件。例如,當(dāng) N = 5
,WH2
的循環(huán)為 0,1,2,3,4,0,1,...
,但若市場數(shù)據(jù)長度不足,可能導(dǎo)致邊界條件異常。
通達(dá)信任意周期K線合并源代碼
N:=2;
lijin1:=BARSCOUNT(CLOSE);
lijin2:=FRACPART(lijin1/N)*N;
PO:=IF(lijin2=0,O,REF(O,lijin2));
PH:=HHV(H,N);
PL:=LLV(L,N);
PC:=C;
周期漲跌%:(C-REF(C,lijin2+1))/REF(C,lijin2+1)*100,NODRAW;
STICKLINE(lijin2=N-1 AND PC>PO,PO,PC,N*3,0),COLORRED;
STICKLINE(lijin2=N-1 AND PC>PO,PH,PL,N*0.2,0),COLORRED;
STICKLINE(lijin2=N-1 AND PC=PO,PO,PC,N*3,0),COLORYELLOW;
STICKLINE(lijin2=N-1 AND PC=PO,PH,PL,N*1,0),COLORYELLOW;
STICKLINE(lijin2=N-1 AND PC<PO,PO,PC,N*3,0),COLORLIBLUE;
STICKLINE(lijin2=N-1 AND PC<PO,PH,PL,N*0.2,0),COLORLIBLUE;
指標(biāo)總結(jié)
老鐵們,這個(gè)通達(dá)信任意周期K線合并源代碼指標(biāo)就像個(gè)“市場老司機(jī)”,通過多周期分析、動(dòng)態(tài)周期調(diào)整和價(jià)格區(qū)間標(biāo)記,幫你把市場的趨勢和轉(zhuǎn)折點(diǎn)看得清清楚楚。不管你是啥交易風(fēng)格,這個(gè)指標(biāo)都能給你提供不少有用的信息。
風(fēng)險(xiǎn)提示:本指標(biāo)僅供技術(shù)研究與學(xué)習(xí)交流使用。市場具有高度不確定性,任何基于本指標(biāo)的決策都需要自行承擔(dān)風(fēng)險(xiǎn),不構(gòu)成任何投資建議。
聯(lián)系客服