參考 題型範例 - 全國高級中等學校技藝競賽平台 工業類

題目:交易趨勢預測的程式設計


問題描述
  1. 有商業活動的自由交易,就會留下交易資料。當數筆交易價產生之後,後續的交易價如何發展?走勢又如何?常常是引起人們興趣的話題,對於價格走勢的預測已有很多研究的發表。不論漲勢或跌勢,人們想知道趨勢是否延續?或即將反轉?其中動向指數(Directional Movement Index,DMI)是一種常用的方法。


  2. 要計算「動向指數」所需資料有:每日的最高價、收盤價及最低價。
    1. 先求出趨向變動值(DM):趨向變動值為本日交易價變動幅度大於前一日交易價變動幅度的『最大值』。可分為『PDM』及『MDM』。
      1. 『PDM』= 本日最高價 – 前一日最高價, 其表示當日行情較前一日行情更向上創新高的幅度值,若此值為負數時,則必須將PDM值改為0值。
      2. 『MDM』= 前一日最低價 – 本日最低價, 其表示當日行情較前一日行情更向下創新低的幅度值,若此值為負數時,則必須將MDM值改為0值。
      3. 『PDM』與『MDM』比較,較小者改為0;若兩者相等,均改為0。
      4. 『PDM』及『MDM』計算出來後,再分別求出其每日之往前10日(含該日)平均值,因這些值隨日期變(移)動,故稱之為移動平均值。
    2. 找出真實的波幅(真實的波動價位值,簡稱TR):TR為本日交易價與前一日交易價比較後的最大變動值。該變動值需比較下列三種差價的『絕對值』後,取其中最大者為本日之TR:
      1. 本日最高價 – 本日最低價;
      2. 本日最高價 – 前一日收盤價;
      3. 本日最低價 – 前一日收盤價。
      TR求出後,再計算其10日之移動平均值。
    3. 求出方向線(DI):為探測交易價上漲或下跌方向的指標,以『PDI』表示上升方向指標,為最近10日內實際上漲的動量百分比;以『MDI』表示下跌方向指標,為最近10日內實際下跌的動量百分比。
    4. PDI = 10日的『PDM』平均值 / 10日的TR平均值;
      MDI = 10日的『MDM』平均值 / 10日的TR平均值;
    5. 求出平均方向的移動平均值(ADX):
    6. 方向平均值(DX) = 100 * ︱PDI - MDI︱ / ( PDI + MDI ), 其中『︱x︱』表示取x之絕對值。再計算其10日移動平均值ADX。

  3. 預測交易趨勢的步驟:
    1. 今日ADX >= 前一日ADX,表示趨勢延續,輸出1;
    2. 其餘,輸出0。
    3. 輸出內容包含ADX值及預測值(0或1)
註:
  1. 計算時注意初始值(例如:PDM、MDM有效值從第2天開始;DX有效值從第11天開始;ADX有效值從第20天開始。)
  2. 從第21天開始輸出預測結果。
輸入格式:(35天的資料,所附文字檔data1.txt)
最高價 80.3 80.7 81.5 79.8 80.5 81.9 81.2 81.4 80.9 81.2 80.0 81.4 80.1 79.9 77.0 73.2 71.3 70.4 71.8 72.5 71.1 71.1 71.8 71.1 73.0 73.7 72.8 73.3 73.3 77.5 73.8 71.0 70.3 68.0 65.3 收盤價 79.7 80.1 79.3 78.6 80.4 80.6 80.4 80.7 80.8 78.7 79.5 80.2 79.8 77.0 69.3 70.7 69.2 68.5 71.7 71.7 70.0 70.2 70.7 70.2 72.2 71.4 71.7 72.3 73.3 73.5 70.0 70.2 67.0 64.8 60.5 最低價 78.3 78.7 79.3 78.1 78.8 80.6 80.1 80.2 79.7 78.7 78.8 79.3 79.0 76.5 69.3 67.0 68.2 68.1 69.4 70.7 68.4 70.1 69.8 66.5 68.9 71.4 70.9 71.2 72.1 73.5 69.3 69.5 65.1 63.9 59.0
輸出格式:(從第21天開始輸出15天的預測結果)
ADX: 51.63 57.45 63.91 69.51 66.11 58.39 51.16 43.15 38.12 33.87 27.72 20.22 16.06 10.88 13.03 預測: 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1
操作範例1:輸入格式:(35天的資料,所附文字檔data2.txt)
最高價 19.2 19.1 17.9 17.6 16.5 16.6 16.4 16.5 16.6 16.6 16.5 16.6 17.2 17.3 17.3 17.3 17.3 17.2 17.2 16.5 15.4 14.7 14.9 14.7 14.6 14.8 15.0 14.6 14.7 14.6 14.4 14.7 14.9 14.8 14.9 收盤價 19.1 18.5 17.9 16.9 16.4 16.0 16.0 16.5 16.3 16.4 16.2 16.5 17.0 17.2 17.0 17.3 16.9 17.1 16.9 16.0 14.5 14.1 14.9 14.4 14.2 14.7 14.8 14.3 14.3 14.3 14.2 14.6 14.8 14.7 14.5 最低價 19.1 18.2 17.4 16.9 16.1 16.0 15.9 16.1 16.3 16.3 16.1 16.2 16.6 17.1 16.9 16.9 16.9 16.9 16.9 15.9 14.5 14.0 15.2 14.3 14.2 14.5 14.5 14.2 14.3 14.2 14.0 14.1 14.4 14.6 14.5
輸出格式:(從第21天開始輸出15天的預測結果)
ADX: 37.21 35.75 41.18 49.75 55.44 60.25 63.30 66.95 70.76 74.53 74.24 70.23 64.30 57.02 50.50 預測: 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0
操作範例2:輸入格式:(35天的資料,所附文字檔data3.txt)
最高價 39.7 39.1 37.6 37.9 37.7 37.5 38.4 38.5 38.7 38.7 39.2 38.9 38.4 39.4 38.8 39.0 39.4 40.0 40.2 38.8 37.2 34.6 33.5 31.9 32.4 32.1 31.9 32.3 32.2 32.1 32.7 34.2 33.7 36.2 35.5 收盤價 38.8 37.9 36.9 37.2 37.5 36.8 38.3 38.0 38.0 38.5 38.4 37.8 38.2 38.5 38.3 39.0 39.3 39.8 38.5 37.6 34.0 32.8 32.1 31.2 31.8 31.1 31.9 31.7 31.7 31.7 32.7 33.8 33.5 35.1 35.4 最低價 38.8 37.7 36.6 37.2 37.1 36.8 36.9 37.9 38.0 37.9 38.2 37.7 37.9 38.4 38.0 38.2 38.7 39.4 38.5 37.1 33.9 31.5 32.1 30.8 31.5 31.0 31.1 31.5 31.7 31.4 31.9 32.8 33.0 34.7 34.4
輸出格式:(從第21天開始輸出15天的預測結果)
ADX: 33.00 38.57 41.05 44.23 47.61 50.06 53.90 57.33 63.74 70.80 70.92 66.87 62.83 62.51 62.02 預測: 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
執行結果


     程式碼下載