GROUP問題

  •   64 
  • 最後發表   Sagiter  2025 七月 15
Sagiter 發文於   2025/07/15

請問我使用GROUP抓取我兩個股票池(一個是有個股期的清單如1101.TW,一個是這些個股期近月的清單如FIDFF*1),如下內容為何總是出現5029的錯誤代碼。但如果是不經過迴圈如下單一股票的方式就不會有問題。

//_StockPrice = getsymbolField(_StockGroup[1], "Close");

//_FuturePrice = GetSymbolField(_FutureGroup[1], "收盤價");

以下為透過FOR迴圈時就有問題。

// =============================================================================

 

inputs:

  _StockGroup(Group, "個股清單"),      // 請選擇您手動建立的 "個股" 股池

  _FutureGroup(Group, "期貨清單"),     // 請選擇您手動建立的 "期貨" 股池

  _SpreadThreshold(1.5);                 // 價差觸發閾值 (單位: %)

 

var:

  _StockGroupSize(0),   // 個股股池的商品數量

  _FutureGroupSize(0),  // 期貨股池的商品數量

  _LoopSize(0),         // 迴圈執行的次數

  _StockPrice(0),       // 個股價格

  _FuturePrice(0),      // 期貨價格

  _SpreadRatio(0),

  i(0);      // 價差百分比

//_StockPrice = getsymbolField(_StockGroup[1], "Close");

//_FuturePrice = GetSymbolField(_FutureGroup[1], "收盤價");

 

// ---------------.---------------

 

// 使用 for 迴圈逐一處理股池內的商品

for i = 1 to 241 begin

    

    // 透過 getsymbolfield 取得價格。個股用日收盤價,期貨用即時價。

    _StockPrice = GetSymbolField(_StockGroup[i], "收盤價");

    _FuturePrice = getsymbolField(_FutureGroup[i], "Close");

    

    // 確保價格都>0,避免計算錯誤

    if _StockPrice > 0 and _FuturePrice > 0 then

    begin

        // 計算價差百分比

        _SpreadRatio = (_FuturePrice - _StockPrice) / _StockPrice * 100;

        

        // 判斷價差絕對值是否超過閾值

        if AbsValue(_SpreadRatio) > _SpreadThreshold then

        begin

            // 設定 Ret = 1 來符合警示腳本的觸發格式

            Ret = 1;

            

              end;

    end;

end;

print("TIME",DAteTime,"_StockPrice",_StockPrice,"_FuturePrice",_FuturePrice);

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/07/15

我建立兩個商品組合,分別是Group1(裡面有南亞、中鋼及聯電)及Group2(裡面是三檔個股的近月份期貨)。以下的交易腳本執行結果是正常的。

inputs:
  _StockGroup(Group, "個股清單"),      // 請選擇您手動建立的 "個股" 股池
  _FutureGroup(Group, "期貨清單"),     // 請選擇您手動建立的 "期貨" 股池
  _SpreadThreshold(1.5);                 // 價差觸發閾值 (單位: %)
var:
  _StockGroupSize(0),   // 個股股池的商品數量
  _FutureGroupSize(0),  // 期貨股池的商品數量
  _LoopSize(0),         // 迴圈執行的次數
  _StockPrice(0),       // 個股價格
  _FuturePrice(0),      // 期貨價格
  _SpreadRatio(0),
  i(0);      // 價差百分比
//_StockPrice = getsymbolField(_StockGroup[1], "Close");
//_FuturePrice = GetSymbolField(_FutureGroup[1], "收盤價");
// ---------------.---------------
// 使用 for 迴圈逐一處理股池內的商品
_StockGroupSize=GroupSize(_StockGroup);
for i = 1 to _StockGroupSize begin
    // 透過 getsymbolfield 取得價格。個股用日收盤價,期貨用即時價。
    _StockPrice = GetSymbolField(_StockGroup[i], "收盤價");
    _FuturePrice = getsymbolField(_FutureGroup[i], "Close");
    // 確保價格都>0,避免計算錯誤
    if _StockPrice > 0 and _FuturePrice > 0 then
    begin
        // 計算價差百分比
        _SpreadRatio = (_FuturePrice - _StockPrice) / _StockPrice * 100;
        // 判斷價差絕對值是否超過閾值
        if AbsValue(_SpreadRatio) > _SpreadThreshold then
        begin
            // 設定觸發
            alert("警示");
        end;
    end;
end;
print("TIME",DAteTime,"_StockPrice",_StockPrice,"_FuturePrice",_FuturePrice);

 

 

 

 

Sagiter 發文於   2025/07/15

謝謝您。可以了。在run看看。

發表回覆
Close