MACD oscValue crosses above 0 問題

  •   22 
  • 最後發表   穩穩賺  2 週前
穩穩賺 發文於   2025/10/29

// 宣告參數

input: FastLength(12, "DIF短期期數"), SlowLength(26, "DIF長期期數"), MACDLength(9, "MACD期數");

variable: difValue(0), macdValue(0), oscValue(0);

// 資料讀取筆數設定

SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 3 + 8);

MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);

 

// 多方進場策略:DIF-MACD由負轉正。出場策略:DIF-MACD由正轉負。

if oscValue Crosses Above 0 then setposition(1);

if oscValue Crosses below 0 then setposition(0);

上列程式 為標準範例程式 -------------------------------------------------------------------------------------------------

條件5k

當下時間 PM16:00 其 oscValue為負值(小於0) 進入 PM 16:05 其 oscValue為正值(大於0) 

符合 oscValue Crosses Above 0 --> 做多 , 但之後時間 PM16:00-PM16:05 的oscValue數值 在0軸 上上下下

最後PM16:05收盤的oscValue數值為負值 進入PM16:10 其 oscValue為負值(小於0)

因此變成做多的單,但PM16:05 與 PM16:10 收盤的oscValue數值為負值

但卻無法符合條件 oscValue Crosses below 0來做停損或做空

問題 :

1.oscValue Crosses Above 0 及 oscValue Crosses below 0

  其邏輯是不是PM16:00 --> PM16:05 換下一根K時 立即觸發 ?

2.oscValue Crosses Above 0 及 oscValue Crosses below 0

  換下一根K時 PM16:00 --> PM16:05 ,不想立即觸發

  可否有其他方式讀取PM16:00 及 PM16:05 當根K的oscValue的收盤值?

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/10/29

(1)MACD的指標都是用加權收盤價計算,在盤中的收盤價是即時成交價,所以若前一根K的Osc為負值,用目前成交價計算的Osc是正值,就會觸發買進訊號,儘管收K時又變成負值。Time=160000時,osc 為負,若160500這根K某個Tick算出來的osc 為正,會觸發買進訊號,收K時若為負,則兩根K都是負,不會有訊號。161000若仍是負值,一樣不會有訊號,因為前一根收K為負,而非正值。

(2)前一根Osc的值是oscValue[1]。

穩穩賺 發文於   2025/10/31

謝謝 教授解惑 ~

發表回覆
Close