Plot Shift Issue

  •   71 
  • 最後發表   XQUser  2025 八月 04
XQUser 發文於   2025/07/27

以下指標腳本用在任意股票標的,print 出來的 PeakBar 及 PeakPrice 皆正確,但用 Plot Shift 在K線圖畫出來的位置及值卻皆不正確。

請問是何原因? 如何排除?

謝謝解惑!

 

var: _peak_bar(0), _peak_price(0);

 

_peak_bar = SwingHighBar(High, 50, 5, 5, 2);

 

if _peak_bar>0 then _peak_price = High[_peak_bar];

print(file("D:\Output.txt"),datetostring(date),

"CurrBar",currentbar,"PeakBar",_peak_bar,"PeakPrice",_peak_price,

"PeakDate",datetostring(iff(_peak_bar>0,date[_peak_bar],0)));

 

if _peak_bar<currentbar and _peak_bar>0 and _peak_bar<>_peak_bar[1]+1 then begin

Plot1(_peak_price, "Peak",shift:=-_peak_bar);

 

print(file("D:\Output.txt"),datetostring(date),

"PeakBarPlot",currentbar,"PeakBar",_peak_bar,"PeakPrice",_peak_price,

"PeakDate",datetostring(iff(_peak_bar>0,date[_peak_bar],0)));

end;

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

你需要先了解Plot繪製指標的原理,是在當根K棒符合條件時才繪製,而shift會根據偏移的天數往前或往後繪製指標。為了方便說明,我舉台積電日K,且標記第一轉折高點(你標記的是第二轉折高點,尋找時還得先找第一高點,較麻煩)。由於你標記的K棒必須在第六根才會標記轉折高點,所以7/10當天會標記5天前轉折高點1105(7/3的高點),但日期會顯示7/10,這會讓人誤以為高點出現在7/10,而7/10的最高價並非1105。若加入shift參數,往前偏移高點K棒(7/3)距離目前K棒(7/10)的天數,則會在7/3的高點繪製指標,日期也會顯示7/3。

XQUser 發文於   2025/07/29

謝謝許教授撥冗解說!

小弟清楚許教授對 plot shift 原理的解說,但是小弟遇到的狀況用第二轉折高點較容易直接看到問題。

另外抱歉! 原 po 我是用分 K 來 print, 但許教授用日 K 說明,為統一,我將原 po 也改用日 K 來 print. 結果如下圖。

附圖一、二是台積電第一轉折點的 K 線圖及 print 內容,如許教授所說,台積電 7/10 日 K 取得 7/3 高點 1105. Plot 及 print 的結果皆正確。

附圖三、四是改抓第二轉折點的 K 線圖及 print 內容,台積電 7/10 日 K 應該取到 6/11 高點 1070. 但可以看到 plot 標示的位置皆不正確,但 print 的結果是正確的。

 

附圖一: 第一轉折點的標記是正確的

附圖一

附圖二: 第一轉折點的價格及日期皆正確

附圖二

附圖三: 第二轉折點的標記不正確

附圖三

附圖四: 第二 轉折點的價格及日期皆正確

附圖四

虎科大許教授 發文於   2025/07/30

經過驗證,你的需求應該無法實現。目前每個Plot只能有固定的偏移值,亦即賦予shift的數值必須是常數,而你賦予的是變數,都會被視為0。

XQUser 發文於   2025/07/30

再次謝謝許教授的解說!

如此我就理解了,原來 plot 的 shift 只能是常數。另外我觀察到的是賦予的是變數時,它會亂畫,似乎不是視為 0.

XS小編 發文於   2025/08/04

Hello XQUser,

 

小編補充,當給入的shift值會變動時,可以理解成shift會固定成第一次設定的值。

發表回覆
Close