Day-08 資料蒐集:取得個股每月各交易日盤後資訊 + 解析 CSV
import argparse
import datetime
import loguru
def main(args):
# 判斷命令列參數是否有 -c 或 --check
if args.check:
loguru.logger.info(f'[-c|--check] is used')
else:
loguru.logger.info(f'[-c|--check] is not used')
# 判斷命令列參數是否有 -t [value] 或 --today [value]
if args.today:
loguru.logger.info(f'[-t|--today] [value:{args.today}]')
else:
loguru.logger.info(f'[-t|--today] is not used')
if __name__ == '__main__':
# 初始化參數解析器
parser = argparse.ArgumentParser()
# 加入參數範本
# -t [value:yyyy-mm-dd]
# --today [value:yyyy-mm-dd]
parser.add_argument(
# 短參數
'-t',
# 長參數
'--today',
# 參數說明
help='set today in yyyy-mm-dd format',
# 如果參數需要由字串解析成指定型態或物件,使用 type 參數
type=lambda s: datetime.datetime.strptime(s, '%Y-%m-%d')
)
# 加入參數範本
# -c
# --check
parser.add_argument(
'-c',
'--check',
help='enable check mode',
# 如果參數後不提供值,使用 store_true / store_false 作為預設值 True / False
action='store_true'
)
# 解析命令列參數
args = parser.parse_args()
main(args)
透過參數設定今天為指定日期,讓程式可以同時支援運行即時交易與歷史回測模式。
import argparse
import csv
import datetime
import loguru
today = datetime.date.today()
def process_taiex(row):
pass
def predict_taiex():
# 以指定日期取出 day08.py 每日取得並儲存的結果進行運算
with open(f'day-08-{today:%Y%m%d}.csv', 'r', newline='') as f:
reader = csv.DictReader(f)
for row in reader:
process_taiex(row)
def main(args):
global today
if args.check:
loguru.logger.info(f'[-c|--check] is used')
else:
loguru.logger.info(f'[-c|--check] is not used')
if args.today:
loguru.logger.info(f'[-t|--today] [value:{args.today}]')
# 假設今日為指定日期
today = args.today
else:
loguru.logger.info(f'[-t|--today] is not used')
predict_taiex()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
# -t [value:yyyy-mm-dd]
# --today [value:yyyy-mm-dd]
parser.add_argument(
'-t',
'--today',
help='set today in yyyy-mm-dd format',
type=lambda s: datetime.datetime.strptime(s, '%Y-%m-%d')
)
# -c
# --check
parser.add_argument(
'-c',
'--check',
help='enable check mode',
action='store_true'
)
args = parser.parse_args()
main(args)
只要在資料取出和運算的邏輯上安排好流程,讓即時交易與歷史回測共用相同機制,則可透過 [-t|--today] 參數的使用與否,在不同模式之間切換。
https://docs.python.org/3.6/library/argparse.html
團隊系列文:
CSScoke - 金魚都能懂的這個網頁畫面怎麼切 - 金魚都能懂了你還怕學不會嗎
Clarence - LINE bot 好好玩 30 天玩轉 LINE API
Hina Hina - 陣列大亂鬥
King Tzeng - IoT沒那麼難!新手用JavaScript入門做自己的玩具
Vita Ora - 好 Js 不學嗎 !? JavaScript 入門中的入門。
TaTaMo - 用Python開發的網頁不能放到Github上?Lektor說可以!!