第四章:撰寫多商品單投資策略


Posted by nightqwq on 2021-12-11

上一章,我們成功撰寫基本面策略。

這一章,我們試著用同一種策略同時投資不同的加密貨幣。

練習版程式碼連結:https://colab.research.google.com/drive/1X3an9lm2DPiTxnbYr4IOhA5YRqH-R2hV?usp=sharing


a. 策略撰寫

來到「Download Historical Data」下方的儲存格,可以看到有兩個 symbols,代表不同的買法,第一種買法是直接用美金買,第二種是拿 Bitcoin 買。

我們可以先將第二行 symbol 變成註解(前面加上 #)。

symbols 下方的 for 迴圈能幫助我們下載 symbols 裡面所有加密貨幣的歷史資料。

現在移動到下一個儲存格,會發現有一個函式,這個函式的用意是將這些不同的加密貨幣價格串接起來。

再移動到下一個儲存格,這裡會以歷史價格為參數,使用上面的函式來將價格做合併並繪製出來。

換句話說,我們現在等同創造了一個假想的商品,這個商品就是我們導入的不同加密貨幣的融合。

而如果我們對它研發了一個策略並進行回測,最後發現績效不錯的話,那麼就代表這個策略對我們導入的每個加密貨幣商品都有不錯的績效,所以就可以同時對這些商品使用同一個策略,此即為多商品單策略研發。

再次往下一個儲存格,會發現這裡是我們前幾個章節所介紹的趨勢交易策略。

現在往下開一個新的儲存格,把合併玩的歷史價格丟入趨勢交易策略裡面做回測:

import numpy as np

portfolio = trend_strategy.backtest(ohlcv_comb, variables = {
    'name': ['sma', 'hullma'],

    'n1': np.arange(20, 100, 5),

    'n2': np.arange(20, 200, 5),
}, plot = True)

相信大家對於上述的程式碼都已經很熟悉,所以就不過多解釋。

接下來移動到「Final Strategy」,實際跑看看績效是多少:

portfolios = {}

for s in symbols:

  print(s)

  ohlcv = ohlcvs[s]

  portfolio = trend_strategy.backtest(ohlcv, variables = {
      'name': 'sma',

      'n1': 70,

      'n2': 120,
  }, plot = True)

  portfolios[s] = portfolio

之所以要用迴圈包住,是因為要跑所有的加密貨幣。

如圖,顯示了五種加密貨幣的回測結果。

下面的兩個策略是額外的,大家可以自行玩玩看,也可以用來投資。

Breakout 策略:

就是當股價突破 N 天前高時,進行買入,並且在突破 N 天低點時,進行賣出的策略!

RSI 策略
RSI 的全名是 Relative Strength Index,這個指標可以看出市場的多空狀況,來當作買賣的依據,RSI 會介於 0~100 之間,在加密貨幣的交易中,常常使用 RSI > 50 來當作是多空的分水嶺,當然還有各式各樣的用法,可以參考下面的連結。

英文:https://www.investopedia.com/terms/r/rsi.asp

中文:https://www.stockfeel.com.tw/教你看懂rsi相對強弱指標/


這一節,我們完成了多商品單研發策略。

下一章,我們將實際演練如何將策略用來投資加密貨幣市場。

完整版程式碼連結:https://colab.research.google.com/drive/1tvKuG8eyvSZRTQaorfCR0KfybzplcZxD?usp=sharing


#加密貨幣 #Python







Related Posts

筆記、[JS102] 升級你的 JavaScript 技能:ES6 + npm + Jest

筆記、[JS102] 升級你的 JavaScript 技能:ES6 + npm + Jest

Currying

Currying

Node.js 和Node.js REPL 關係

Node.js 和Node.js REPL 關係


Comments