區間內最高價的K棒日期

  •   770 
  • 最後發表   韭韭不能自己  2023 十一月 07
韭韭不能自己 發文於   2023/09/27

 小幫手您好:

        如題,想請問小幫手如何找出一個不定區間內最高價當天的K棒日期;例如說以收盤價突破20ma起計算,直到收盤價跌破20ma為止,想要找出這個區間中收盤價最高的日期,請問怎麼寫比較好?

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

 Hello 韭韭不能自己,

 

您可以用變數在符合條件的區間內記錄數值。

舉例來說:

condition1 = close cross over average(close, 20);

condition2 = close cross under average(close, 20);

 

if condition1 then value1 = 1 else if condition2 then value1 = 0;    //條件符合是 value1 為 1

 

if value1 = 1 then begin            //當 value1 為 1 時用 value2 紀錄區間內收盤價最高值, value3 紀錄對應日期

    if close > value2 then begin

        value2 = close;

        value3 = date;

        end;

end

else if value1 = 0 then begin       //當 value1 為 0 時將 value2 歸 0

    value2 = 0;

    end;

  • 按讚來自於
  • SIGAMA5
韭韭不能自己 發文於   2023/10/06

感謝小幫手解惑;不過想再請教小幫手,上面的方式是使用今值比前值的方法,那有沒有方式可以把區間內所有的數值一次做比較找出最高值及日期呢?

XQ小幫手 發文於   2023/10/13

Hello 韭韭不能自己,

 

網站上有教學區,裡面有XS語法的基礎和應用,建議您可以先閱覽該區文章。

 

HighestLowest 可以篩選由起點開始向前一段區間的最大最小值。

舉例來說 highest(high[1], 10) 就會是從上根Bar開始的10根Bar中 high 的最大值。

 

HighestBarLowestBar 則可以找出相對位置。

韭韭不能自己 發文於   2023/10/30

感謝小幫手回覆;經小幫手提示後已解決;後小弟想進一步改用五日均線測試以提高敏感度,並嘗試將找出的最高價標示於主圖上,但無奈小弟資質駑鈍,多日嘗試後還是無法得到結果,隨附相關檔案,還請小幫手不吝賜教

附加文件

XQ小幫手 發文於   2023/11/02

Hello 韭韭不能自己,

 

不好意思,小幫手看不太懂您的需求。

或許可以麻煩您詳細描述一下想法讓小幫手給意見。

 

另外單就描述來看,如果是要取得區間內的最高價的話,只需要把上面範例中的 close 改為 high 即可。

舉例來說:

if value1 = 1 then begin            //當 value1 為 1 時用 value2 紀錄區間內收盤價最高值, value3 紀錄對應日期

    if high > value2 then begin

        value2 = high;

        value3 = date;

        end;

    end

else if value1 = 0 then begin       //當 value1 為 0 時將 value2 歸 0

    value2 = 0;

    end;

 

if value2 <> 0 then value4 = value2;    //用value4保存最近一次的最高值

 

這樣value4就會當次或最近一次符合條件的區間內最大值。

韭韭不能自己 發文於   2023/11/02

小幫手您好:

       是這樣的,因為想要嘗試在主圖上每個區間最高價的地方做上標記(不希望用逐日比價的方法,因為前面的數值不能歸零),所以想說用跌破日期的偏移量(value8)-最高價日期與跌破區間日期的差值(value6)來得到最高價的偏移量(value9),而從PRINT出來的數值看來似乎也沒有錯誤,但是在利用(value9)取得最高價(value10)的時候不知道哪裡發生錯誤,所以只好再麻煩小幫手了

附加文件

XQ小幫手 發文於   2023/11/07

Hello 韭韭不能自己,

 

您的value7在 value1 = 0 的狀況下如果沒有發生 c cross under average(close, 5) 就會被歸0,那自然也取不到正確的相對位置。

就圖片上print出來的結果,value7[1] 的值是0,那麼 getbaroffset 就會取到最早的資料,故偏移量變成 4348。

 

逐日比價的方式一樣可以保留之前的紀錄,只要多用幾個變數就可以辦到:

if value1 = 1 then begin           

    if high > value2 then begin

        value2 = high;

        value3 = date;

        end;

    end

else if value1 = 0 then begin

    if value2 <> 0 then begin

        value4 = value2;

        value5 = value3;

        end;

    value2 = 0;

    value3 = 0;

    end;

 

這樣寫或許會比較容易明白,在 value1 變回0的時候,先用 value4 和 value5 紀錄區間的最高價(value2)和日期(value3),再將兩者歸0。

若需要紀錄更久,只要再多用幾個變數即可,像是:

if value2 <> 0 then begin

    value6 = value4;     

    value7 = value5;

    value4 = value2;

    value5 = value3;

    end;

發表回覆
Close