1. 程式人生 > 其它 >python-量化交易-異常處理

python-量化交易-異常處理

技術標籤:量化交易python

此處將實現一個模擬進行股票交易,對異常情況進行處理的過程。

具體的buy()函式需根據券商提供的介面實現。

處理異常的目的:防止程式直接崩潰。

(程式出錯後代碼給出一個解決方案,而不是崩潰了事)

例如網路不穩定產生的異常(HttpError),而非程式本身。

異常的丟擲方法:

if #條件:
    #執行操作
else:
		#丟擲異常
    raise ValueError(f"BOUGHT of {quantity} share(s) of stock {stock_code} FAIL!")

以上ValueError(f"BOUGHT of {quantity} share(s) of stock {stock_code} FAIL!")這個部分的字串引數將作為

異常e的提示內容,可以在捕獲e之後打印出這個字串。

捕獲異常並列印異常提示的內容:

try:
    buy(stock_code=stock,quantity=quant,random_paramenter= 0.2,maximum_try= max_try)
except Exception as e:
    print(f"捕獲buy函式丟擲的異常,內容為:\n{e}")
    print('執行出現問題,進入異常處理')
    print('error happened while buying...')
else:
    print('執行很順利')

樣例程式碼:

import random
# if __name__ == '__main__':
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
#define function to buy a stock
#最大嘗試次數---3
max_try = 3
#股票程式碼
stock = 'AAPL'
#數量
quant = 1
# 語言:
language = 'en'
#buy function
def buy(stock_code = None, quantity = 0,language = 'en',random_paramenter =
0,maximum_try = 3): try_now_counter = 0 while(True): #此部分根據券商API完成 if try_now_counter<3: if random_paramenter<0.3: if language == 'en': print(f"successfully bought {quantity} share(s) of {stock_code} successfully") else: print(f"第{try_now_counter + 1}次嘗試---成功-----") print(f"成功買入{quantity}股{stock_code}") return else: print(f"已執行第{try_now_counter + 1}次嘗試,失敗。。。") try_now_counter += 1 else: raise ValueError(f"BOUGHT of {quantity} share(s) of stock {stock_code} FAIL!") #指定隨機種子,確保每次虛擬側首結果可重複 random.seed(10) random_number = random.random() print(random_number) try: buy(stock_code=stock,quantity=quant,random_paramenter= 0.2,maximum_try= max_try) except Exception as e: print(f"捕獲buy函式丟擲的異常,內容為:\n{e}") print('執行出現問題,進入異常處理') print('error happened while buying...') else: print('執行很順利')

執行結果1(隨機數大於0.3):

已執行第1次嘗試,失敗。。。
已執行第2次嘗試,失敗。。。
已執行第3次嘗試,失敗。。。
捕獲buy函式丟擲的異常,內容為:
BOUGHT of 1shares of stock AAPL FAIL!
執行出現問題,進入異常處理
error happened while buying...

Process finished with exit code 0

執行結果2 (把隨機數換成小於0.3的數):

successfully bought 1 share(s) of AAPL successfully
執行很順利

Process finished with exit code 0

將程式碼在pycharm中向左縮排一個tab

------>shift+tab

###PS: 檢查python安裝的位置,並安裝相關的包

import sys
print(sys.executable)
這裡假設輸出的執行路徑是:
/Users/lianda_duan/opt/anaconda3/bin/python
在終端或者筆記本的cell中執行以下命令進行包安裝:
! /Users/lianda_duan/opt/anaconda3/bin/python -m pip install pulp