小幫手您好:
如題,想請問小幫手如何找出一個不定區間內最高價當天的K棒日期;例如說以收盤價突破20ma起計算,直到收盤價跌破20ma為止,想要找出這個區間中收盤價最高的日期,請問怎麼寫比較好?
小幫手您好:
如題,想請問小幫手如何找出一個不定區間內最高價當天的K棒日期;例如說以收盤價突破20ma起計算,直到收盤價跌破20ma為止,想要找出這個區間中收盤價最高的日期,請問怎麼寫比較好?
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;
感謝小幫手解惑;不過想再請教小幫手,上面的方式是使用今值比前值的方法,那有沒有方式可以把區間內所有的數值一次做比較找出最高值及日期呢?
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就會當次或最近一次符合條件的區間內最大值。
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;
7 評論