兄弟老鐵們,今天給大家嘮嘮一個(gè)超有意思的分析指標(biāo),它就像個(gè)“市場透視鏡”,能幫你瞅出市場的趨勢(shì)和可能的拐點(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à)格漲跌幅度,幫你看清市場趨勢(shì)。 任意周期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ì)解釋:
1. 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,... )。
2. 周期性條件的觸發(fā)代碼中所有的 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ì)算)。
3. 為何需要 N 是2的冪次?(1) 均勻的周期分割當(dāng) N 為2的冪次時(shí)(如4、8、16),周期長度能均勻劃分市場時(shí)間序列。這種均勻性對(duì)計(jì)算最高價(jià)(PH )、最低價(jià)(PL )和引用歷史數(shù)據(jù)(REF(O, WH2) )至關(guān)重要。非2的冪次可能導(dǎo)致周期邊界錯(cuò)位,影響指標(biāo)準(zhǔn)確性。 (2) 二進(jìn)制優(yōu)化的兼容性在底層計(jì)算中,FRACPART(WH1/N) * N 等效于 WH1 % N (取余運(yùn)算)。當(dāng) N 是2的冪次時(shí),編譯器或解釋器可能使用位掩碼(WH1 & (N-1) )優(yōu)化余數(shù)計(jì)算,顯著提升執(zhí)行效率。 (3) 避免余數(shù)計(jì)算的偏差若 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)記,幫你把市場的趨勢(shì)和轉(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)成任何投資建議。 


|