Python程式交易︱比特幣短炒策略Back Test方法 手把手教你點睇python program(二)
這系列的第一篇文章,簡介了寫 Python 程式時,需根據後續要做到的功能,引入相關的 Library,接下來,我們開始構建文章提及的比特幣短炒策略。
首先,我們來重溫相關 Python 編碼:
第 8 至 10 行可以一併來看。第 8 行「START = datetime.datetime(2022, 1, 1)」,在 Python,一般而言,如果見到 「XXX = YYY」這樣的格式,是指定義一個變數,並為這個變數分配數值,所以,第 8 行便是定義一個名為 START 的變數,分配的數值側是由「datetime.datetime(2022, 1, 1)」來構成。
datetime 是一個 Library 的名字,在第一文章 import datetime 已提及,這是一個用來處理日期數據的 Library,在 datetime 之下,有不同的 method,其中一個的名字又是 datetime,這種重覆的命名方式容易令人混淆,只能硬背。
因此,datetime.datetime 是指引用 datetime 這個 Library 之下的 datetime 這個 method,而要處理的是 3 個數值(argument),分別是 2022、1、1,對 datetime.datetime 而言,第一個位置是年份的數字,第二個位置是月份的數字,第三個位置是日子的數字,而 datetime.datetime 會把這三個數字以 dictionary 的格式,組成一個日期,為 2022 年 1 月 1 日,作為「START」的數值。
「END = datetime.datetime(2023, 4, 1)」與「START = datetime.datetime(2022, 1, 1)」的意思同出一徹,不重覆了。
「YEARS = (END – START).days/ 365.25」的意思,是定義一個名為「YEARS」變數,組成的數值方面,是用 END 的日期減去 START 的日期,並用 .day 這個 method 算出兩者相差多少日子,把得出的結果除以 365.25,這是在計算由 END 至 START 期間,相當於多少年,以備之後計算策略的年均複合成長率 (CAGR) 之用。
相關文章:Python程式交易︱比特幣短炒策略Back Test方法 手把手教你點睇python program(一)
第 11 行,「STARTING_BALANCE = 10000」,即定義名為 STARTING_BALANCE 的變數,這是在模擬起始本金,方便之後模擬以 10000 元來按策略買賣的話,回報率會是如何。
第 12 行,「PCT_THRESH = 92」,是定義名為 PCT_THRESH 的變數,數值是 92,這是模擬本文的短炒策略的其中一環,要在即日收市價,達至相當於當日高低波幅的 92% 或以上,才是買入訊號。
第 13 行,「price = yf.download(‘BTC-USD’, START, END)」,意指定義名為「price」的函數,數值的組成,是引用雅虎財經 (yfinance,或簡稱為 yf) library 之中的 download 這個 method,download 這 method 可代入 3 個 arguments,第一個位置是在資產在雅虎財經的代號,以比特幣為例,便是 BTC-USD,由於 BTC-USD 在 Python 的 data structure 是字串,所以要用「”」括住;第二個位置是起始日期,由於之前已定義了 START,可以在這裏直接引用;第三個位置是結束日期,同理是直接引用 END。整句的作用,就是從雅虎財經讀取比特幣的歷史數據,數據期間是由 START 至 END 的日期。
延伸閱讀:Python程式交易|比特幣短炒不宜用保力加通道 統計數據話你知點解
第 14 行,price.head(),意是是對 price 這個儲存了比特幣歷史數據的變數,使用「head」這個 method,「head」method 會順序顯示 price 裏的數據,那會顯示多少項呢﹖其實要視你在 head() 的括號裏輸入什麼數字,沒有任何數字,預設便是 5 項,假如代入 10,便會顯示 10 項了。而顯示資料的格式,便如下圖。
其他待續。
延伸閱讀:Python程式交易|以太幣見高先追 身處熊市也有正回報