在1分K交易腳本, 怎麼取得 近3天, 加權指數 0900~0914分 第一根15分k 的成交金額?

  •   25 
  • 最後發表   石頭  8 小時前
石頭 發文於   2026/04/29

if time=091500  then begin

value90 = GetSymbolField("TSE.TW","成交金額","15");      

value91 = GetSymbolField("TSE.TW","成交金額","15")[1];   

value92 = GetSymbolField("TSE.TW","成交金額","15")[2];

value93 = GetSymbolField("TSE.TW","成交金額","15")[3];

end ;

 

這樣寫是對的嗎?

謝謝

排序方式: 標準 | 最新
虎科大許教授 發文於   2026/04/29

這樣寫不對。這個問題既跨頻率又跨商品,處理起來比較複雜。你可能需要跑迴圈處理。

虎科大許教授 發文於   2026/04/29

我打算把這個既跨頻率又跨商品的問題收藏為我的新版書籍範例,先分享給你參考。

If barfreq <> "Min" or barinterval <> 1 then raiseRunTimeError("限用1分鐘");
Input: Length(3, "天數");
SetTotalBar(270 * (Length + 1));
Var: i(0), Count(0);
Array: Arr1[](0), Arr2[](0);
If isLastBar then
    begin
        value1 = 270 * (Length + 1) / 15; //15分K筆數
        for i = 0 to value1-1
            begin
                if GetSymbolField("TSE.TW","日期","15")[i]<>Date and 
                    GetSymbolField("TSE.TW","日期","15")[i] <> GetSymbolField("TSE.TW","日期","15")[i+1] then
                    begin
                        count += 1;
                        Array_SetMaxIndex(Arr1, count);
                        Array_SetMaxIndex(Arr2, count);
                        Arr1[count]=GetSymbolField("TSE.TW","日期","15")[i]*1000000+GetSymbolField("TSE.TW","時間","15")[i];
                        Arr2[count]=GetSymbolField("TSE.TW","成交金額","15")[i];
                        print(Arr1[count],Arr2[count]);
                    end;
            end;        
    end;

石頭 發文於   2026/04/29

原來難度如此之高......

感謝教授無私分享!

虎科大許教授 發文於   2026/04/29

若要在盤中應用,考慮到計算的是歷史數據,只需要計算一次,可用isFirstCall("RealTime")取代isLastBar,這樣會比較有效率。

 

發表回覆
Close