Cybernetic Oscillator (Ehlers 2025)

  •   21 
  • 最後發表   塞繆爾  5 天前
塞繆爾 發文於   2026/01/22

XQ小編今天在FB分享了Cybernetic Oscillato指標,我試著將其複製到我的XScript環境,並順利在XQ技術分析頁籤繪出指標,謝謝XQ。

我想把其應用到XS選股: (自昨天起算,前7天有5天以上Cybernetic Oscillato指標小於0,但今日為正值) 。選股選出的結果,跟XS程式預期的不符合。

XS程式如下:(我完全copy XQ小編在FB的程式,只有plot刪除,並增加最後一段選股XS程式)

例如長榮航太(2645)被選出,但是XQ技術分析頁籤顯示:Cybernetic Oscillato指標前7天都大於0。XS選股程式outputfield顯示4.8,而XQ畫面技術頁籤顯示2.51。請問我的XS程式錯誤在哪裡?

// 名稱:Cybernetic Oscillator (Ehlers 2025)

// -----------------------------------------------------------

Input: HPLen(30, "高通週期"), LPLen(20, "平滑週期"), RMSLen(50, "標準化窗口");

Variable: a1(0), b1(0), c1(0), c2(0), c3(0), x1(0);

Variable: HP(0), LP(0), RMS(0), CyberOsc(0);

// 1. 初始化高通濾波係數

Once begin

a1 = Expvalue(-1.414 * 3.14159 / HPLen);

b1 = 2 * a1 * Cos(1.414 * 3.14159 / HPLen);

c1 = -a1 * a1;

x1 = (1 + b1 - c1) / 4;

end;

// 2. 高通濾波 (去除趨勢)

if CurrentBar > 2 then

HP = x1 * (Close - 2 * Close[1] + Close[2]) + b1 * HP[1] + c1 * HP[2]

else

HP = 0;

// 3. 超級平滑濾波 (去除噪音 - 係數複用)

// 這裡使用簡化的二階平滑邏輯

LP = Average(HP, LPLen);

// 4. RMS 歸一化

RMS = SquareRoot(Summation(Power(LP, 2), RMSLen) / RMSLen);

if RMS <> 0 then 

CyberOsc = LP / RMS

else 

CyberOsc = 0;

 

{

// 5. 繪圖

Plot1(CyberOsc, "Cybernetic Oscillator");

Plot2(0, "零軸");

}

 

if countIf(CyberOsc[1]<0,7)>=5 and CyberOsc>0

then ret=1;

outputfield1(CyberOsc,"Cybernetic Oscillator");

排序方式: 標準 | 最新
虎科大許教授 發文於   2026/01/22

我測試了你的程式,並沒有問題。你可以加入新增欄位驗證看看:

if countIf(CyberOsc[1]<0,7)>=5 and CyberOsc>0

then ret=1;

outputfield1(CyberOsc,"CO");

outputfield2(CyberOsc[1],"CO1");

outputfield3(CyberOsc[2],"CO2");

outputfield4(CyberOsc[3],"CO3");

outputfield5(CyberOsc[4],"CO4");

outputfield6(CyberOsc[5],"CO5");

outputfield7(CyberOsc[6],"CO6");

outputfield8(CyberOsc[7],"CO7");

塞繆爾 發文於   2026/01/22

謝謝教授,我共選出8檔股票, Cybernetic Oscillator的output值股票都符合選股邏輯,如附圖上方所示,(有正值有負值)。

(以長榮航太為例),我選出的答案也跟您一樣(如附件上方圖案,Cybernetic Oscillator今天(+4.8)及昨天為正值,2天以前數字都是負值),

但是將選出結果加入自選商品組合(合約負載),並在技術分析頁籤顯示,如附件下方圖案,位於下圖中央最大面積的技術分析頁籤,附圖最下面柱狀圖,(Cybernetic Oscillator柱狀圖近幾天全部都是大於0的紅色,今天+2.51),兩者顯著不同。

依長榮航太的股價近日噴出技術線型,理應(技術分析頁籤顯示的才是正確;意即:XS選股有誤)。

不知為何選股出來的股票及其Cybernetic Oscillator與技術頁籤不同?

附加文件

塞繆爾 發文於   2026/01/22
塞繆爾 發文於   2026/01/22
虎科大許教授 發文於   2026/01/22

那是因為選股腳本預設只讀取10筆資料,有些技術指標需要更多的筆數計算,數值才會正確。你若在程式的第一行加上setTotalBar(300);就選不到長榮航太了。若再把if countIf(CyberOsc[1]<0,7)>=5 and CyberOsc>0用if symbol="2645.TW"取代,則outputfield出來的數值就會與技術分析圖表的數值一樣了。

// if countIf(CyberOsc[1]<0,7)>=5 and CyberOsc>0

if symbol="2645.TW"

then ret=1;

outputfield1(CyberOsc,"CO");

outputfield2(CyberOsc[1],"CO1");

outputfield3(CyberOsc[2],"CO2");

outputfield4(CyberOsc[3],"CO3");

outputfield5(CyberOsc[4],"CO4");

outputfield6(CyberOsc[5],"CO5");

outputfield7(CyberOsc[6],"CO6");

outputfield8(CyberOsc[7],"CO7");

塞繆爾 發文於   2026/01/22

教授的解惑,太感謝了

發表回覆
Close