求救在即時區間大頻率跨小頻率方法

  •   407 
  • 最後發表   musashi  2022 八月 10
musashi 發文於   2022/07/13

請教小編、各位大大

在60分鐘頻率下且目前時間是10點30分,在當下是否有甚麼辦法能取得10點01分的1分K棒值(例如成交量)呢?

排序方式: 標準 | 最新
蕎伊斯 發文於   2022/07/15

跨頻率,目前只能由小向上跨
暫時還沒辦法,由大向下跨

另外一個方法可能可以試試看,60分鐘開逐筆,用電腦時間標註10:01開始收集1分鐘的資料,紀錄下來傳值

musashi 發文於   2022/07/15

感謝蕎伊斯大大 回覆

我主要用在指標腳本上,但只要切換標的或未在當下執行,都沒辦法再用電腦時間去記錄已發生卻還在即時區間的資料,真有點苦惱。

 

XQ小幫手 發文於   2022/07/20

Hello musashi,

 

一般來說小幫手不建議在大頻率中去跨到小頻率。

如果一定要的話,可以使用迴圈搭配條件。

舉例來說,在60分鐘頻率下10:00這跟Bar要抓到10:01這跟Bar的成交量:

if time = 100000 and getfield("Time", "1") >= 100100 then begin

    value1 = 0;

    while getfield("Time", "1")[value1] > 100100 begin

        value1 += 1;

        end;

    value2 = getfield("Volume", "1")[value1]; 

    end;

這樣value2 在當天10:01 後就會是10:01這跟Bar的成交量。

musashi 發文於   2022/07/20

感謝小編回覆,這方法仍然不行在即時區間正確抓到當根的小頻率值。

XQ小幫手 發文於   2022/07/28

Hello musashi,

 

小幫手這邊測試在策略雷達上,並沒有出現問題。(參考附圖)

麻煩您提供詳細些的說明,並附上相關資訊讓小幫手看看問題出在哪。

附加文件

musashi 發文於   2022/07/28

    //環境:60分K線圖中,目前電腦時間是19:23分
    //當在指標移到18:00的K棒時,value1=18:01分的收盤價
    //當在指標移到19:00的K棒時,value1=18:01分的收盤價,其實我想要抓的是19:01分的收盤價
    value1=getfield("close","1")[59];
    plot1(value1); 

附加文件

XQ小幫手 發文於   2022/08/04

Hello musashi,

 

因為您腳本執行當下的 getfield("Time", "1") 會是 192300,所以往前取59根1分鐘Bar不會是190100的收盤價。

在即時的當根K棒上,您需要隨著時間變化來修改往前取的比數。

附上小幫手寫的範例腳本。

附加文件

musashi 發文於   2022/08/04

小編不好意思,上一則打錯時間誤會我的意思,正確應該是這樣

//環境:60分K線圖中,目前電腦時間是19:23分
    //當在指標移到18:00的K棒時,value1=18:00分的收盤價
    //當在指標移到19:00的K棒時,value1=18:01分的收盤價,其實我想要抓的是19:00分的收盤價
    value1=getfield("close","1")[59];
    plot1(value1);

我的問題是只要在即時區間(19:00的K棒),[1]~[59]都是抓到前一根K棒(18:00的K棒)的1分K值

,目前結論是getfield不能大頻率抓到小頻率的即時區間資料。

XQ小幫手 發文於   2022/08/10

Hello musashi,

 

getfield("close","1")[59] 您如果在在即時的狀況,是會抓到59分鐘前的1分鐘Bar的資訊。

除非19:00這跟Bar已經結束,不然抓不到 19:01 這根1分鐘的收盤價。

 

需注意XQ time 的對位是開始的時間,舉例來說:

190000這根Bar對應的是 19:00~20:00 的資料,如果您是在這根Bar結束的時候運算,取得的1分鐘Bar對應的time 會是 195900,也就是 19:59 ~ 20:00 這段時間的資料。

但如果您執行當下是 19:23,那取得的1分鐘Bar對應time會是 192300,也就是 19:23 ~ 19:24 這段時間的資料。

 

舉例來說,用在60分鐘頻率上:

for value1 = 0 to 60 begin

    if getfield("Time", "1")[value1] = timeadd(time, "M", 1) then break;

    end;

 

plot1(getfield("Time", "1")[value1]);

plot2(getfield("close", "1")[value1]);

 

這段就可以在不論及時或是完成的K棒中找到01分的Bar。(參考附圖)

附加文件

musashi 發文於   2022/08/10

謝謝小編,我知道了!

發表回覆
Close