例如當天是2月11日,而2月5日的日K高=getField("high","D")[4],
請問[]當中的4要如何計算呢?
DateDiff會包含假日,而且過晚上12點會跳日,但日K還沒變,所以不能用
謝謝
例如當天是2月11日,而2月5日的日K高=getField("high","D")[4],
請問[]當中的4要如何計算呢?
DateDiff會包含假日,而且過晚上12點會跳日,但日K還沒變,所以不能用
謝謝
value1=getbaroffset(20250205);
value2=getField("high","D")[value1];
教授好,實測還是不行,是要在1分K當中計算日K棒喔
if barFreq<>"Min" or barinterval<>1 then raiseRunTimeError("限用1分鐘");
//抓20250210日K最高價
value1=DateDiff(currentDate,20250210);
value2=GetField("最高價", "D")[value1];
print(value2);
Hello 努力中,
如果日期距離不會很遠的話,您可以考慮使用迴圈來尋找對應的日期。
舉例來說:
if date > 20250210 then begin
value1 = DateDiff(Date,20250210);
value2 = 0;
for value3 = value1 downto 0 begin
if getfield("Date", "D")[value3] = 20250210 then value2 = value3;
end;
end;
這樣 value2 就會是所需的相對距離。
我這裡更正一個錯誤。DateDiff函數傳回的是兩個日期的差距天數(包含週末及假日),在這個地方使用它會造成邏輯錯誤。
解決方法:準備足夠的分K資料筆數,然後在跑歷史K棒記錄K棒數。
setTotalBar(1890); //270*7=1890
if barfreq<>"Min" or barinterval<>1 then raiseRunTimeError("限用1分鐘");
var: Count(0);
//計算20250206到今天20250214差異天數,並計算20250206的最高價
if Date<=20250206 and time=090000 then count=0;
if Date>20250206 and time=090000 then count+=1;
if Date=currentDate then value1=GetField("最高價", "D")[count];
print(date,time,value1);
考慮到效率問題,跑迴圈永遠是最後選項。這裡再提供另外一種解決方法:
setTotalBar(1890); //270*7=1890
if barfreq<>"Min" or barinterval<>1 then raiseRunTimeError("限用1分鐘");
//計算20250206到今天20250214差異天數,並計算20250206的最高價
if getInfo("IsRealTime")=0 then //跑歷史K棒
begin
value1=getBarOffset(20250206,090000);
value2=value1/270;
value3=GetField("最高價", "D")[value2];
end;
print(date,time,value3);
感謝小編、教授的回覆,好人一生平安
7 評論