第一次訊號發生後,如何指定第一次作為後續的判斷依據?

  •   153 
  • 最後發表   XQYi  2023 十二月 01
XQYi 發文於   2023/11/25

例如

if open < close[1] then begin

plot3(open ,"S2");

value2=open;

end;

if value2*0.995 >=low  then plot4(close,"B2");

 

第一行程式訊號可能一直重複發生,導致第二行程式不斷修正更新value2的值,如何讓第二段程式只判斷第一次的訊號價格?

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/11/28

Hello xqyi,

 

您可以用變數控制,舉例來說:

if open < close[1] then begin

    plot3(open ,"S2");

    if value2 = 0 then value2=open;

    end;

 

if value2*0.995 >=low  then begin 

    plot4(close,"B2");

    value2 = 0;

    end;

 

這樣 value2 就只會在 value2*0.995 >=low 符合後才會被歸0,並在之後的第一行條件符合時才重新賦予值。

同理您也可以用其他條件來歸0 (ex. 每日開盤時重置)。

XQYi 發文於   2023/11/28

以11/28 的3147 1分K執行結果一樣捏 

第一行程式賣出訊號open < close[1]一直更新時,
(09:03第一筆106.5 ,中間有11次訊號發生,10:39更新後最後一筆13次的價格108.5)

第二行的程式會抓到第一行的最後一筆訊號做計算,(第二行10:43會以108.5 *.995=107.9 (107.5買進)

這樣導致虧損!

XQ小幫手 發文於   2023/12/01

Hello xqyi,

 

小幫手這邊測試的結果value2會一直維持在106.5沒錯,建議您可以將 value2 畫出確認。(參考附圖)

加上 if date <> date[1] then value2 = 0; 是避免若前一天有發生過 open < close[1] 但 沒有 value2*0.995 >=low 的話會影響當日的 value2 數值,故每日重置。

若您還是有問題,麻煩提供 頁面匯出檔 包含 指標腳本讓小幫手確認。

附加文件

發表回覆
Close