請問我使用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);
2 評論