我已經有宣告input為什麼還是不行

  •   98 
  • 最後發表   p2021yvc  2025 九月 25
p2021yvc 發文於   2025/08/08

// ------------------------------

// 0. 使用者可調整的參數設定(每行一個 input 宣告)

// ------------------------------

input: _ChgDays(20, "漲幅天數");            // 使用者可自訂漲幅計算天數(例如近20日)

input: _VolAvgDays(5, "成交量平均天數");    // 使用者可自訂平均成交量期數(例如近5日)

input: _TopRank(100, "排名前X名");          // 用來控制篩選前幾名(例如前100名)

 

 

 

 

// ------------------------------

// 1. 排行:依照平均成交量進行排序

// ------------------------------

rank _RankVol desc begin

    retval = Average(Volume, _VolAvgDays); // 計算近 _VolAvgDays 根K棒的平均成交量

end;

 

 

 

 

// ------------------------------

// 2. 排行:依照近 _ChgDays 日漲幅進行排序

// ------------------------------

rank _RankChg desc begin

    var: _chgPct(0); // 漲幅百分比暫存變數

 

    // 若 _ChgDays 日前收盤價不為 0,才進行漲幅計算,否則給極小值排最末

    if Close[_ChgDays] <> 0 then

        _chgPct = (Close - Close[_ChgDays]) / Close[_ChgDays] * 100

    else

        _chgPct = -9999;

 

    retval = _chgPct; // 回傳漲幅百分比作為排行依據

end;

 

// ------------------------------

// 3. 條件篩選:成交量與漲幅皆在前 _TopRank 名以內

// ------------------------------

if _RankVol.pos <= _TopRank and _RankChg.pos <= _TopRank then

    ret = 1;

 

// ------------------------------

// 4. 輸出欄位:顯示排行結果與漲幅數值

// ------------------------------

OutputField1(_RankVol.pos, "成交量排名");

OutputField2(_RankChg.pos, "漲幅排名");

OutputField3(_RankChg.value, "漲幅(%)");

 

 

 

截圖圖片

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

Rank是獨立的區塊,input宣告的參數與它無關,所以讀取不到。若把input放到Rank裡面,也是不行,因為Rank可能會多層排序,使用參數沒有意義(無法於執行前設定)。把它們改成變數,並在Rank中宣告即可。

// ------------------------------
// 0. 使用者可調整的參數設定(每行一個 input 宣告)
// ------------------------------
input: _TopRank(100, "排名前X名");          // 用來控制篩選前幾名(例如前100名)
// ------------------------------
// 1. 排行:依照平均成交量進行排序
// ------------------------------
rank _RankVol desc begin
//    input: _VolAvgDays(5, "成交量平均天數");
    var: _VolAvgDays(5);
    retval = Average(Volume, _VolAvgDays); // 計算近 _VolAvgDays 根K棒的平均成交量
end;
// ------------------------------
// 2. 排行:依照近 _ChgDays 日漲幅進行排序
// ------------------------------
rank _RankChg desc begin
    var:  _ChgDays(20);
    var: _chgPct(0); // 漲幅百分比暫存變數
    // 若 _ChgDays 日前收盤價不為 0,才進行漲幅計算,否則給極小值排最末
    if Close[_ChgDays] <> 0 then
        _chgPct = (Close - Close[_ChgDays]) / Close[_ChgDays] * 100
    else
        _chgPct = -9999;
    retval = _chgPct; // 回傳漲幅百分比作為排行依據
end;
// ------------------------------
// 3. 條件篩選:成交量與漲幅皆在前 _TopRank 名以內
// ------------------------------
if _RankVol.pos <= _TopRank and _RankChg.pos <= _TopRank then
    ret = 1;
// ------------------------------
// 4. 輸出欄位:顯示排行結果與漲幅數值
// ------------------------------
OutputField1(_RankVol.pos, "成交量排名");
OutputField2(_RankChg.pos, "漲幅排名");
OutputField3(_RankChg.value, "漲幅(%)");

虎科大許教授 發文於   2025/09/01

p2021yvc,

17.01版本將提供Rank可以使用input的功能。

虎科大許教授 發文於   2025/09/25

本來預計17.01版本會增加Rank可以使用input的功能,但目前得知的訊息是要等到17.02版本才會提供。

發表回覆
Close