import matplotlib.pyplot as plt import matplotlib.dates as mdates from mpl_finance import candlestick_ohlc import datetime,sys strptime=datetime.datetime.strptime import numpy as np # 取得資料 # Date='20190902' # Product='TXFI9' Date=sys.argv[1] Product=sys.argv[2] FilePath='C:/Data/' Broker='Simulator' Table='Match' Data=GetHistoryData(FilePath,Broker,Date,Product,Table) # 取特定時間的資料 Data = [ line for line in Data if strptime(line[0],"%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345' ] # 定義1分K棒的物件 MinuteKBar=KBar(Date,1) # 計算K棒 for line in Data: time=strptime(line[0],"%Y/%m/%d %H:%M:%S.%f") price=int(line[2]) qty=int(line[3]) MinuteKBar.AddPrice(time,price,qty) # 取得K線物件 KData=MinuteKBar.GetChartTypeData()
# 載入必要套件 from indicator import GetHistoryData import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime, sys strptime = datetime.datetime.strptime # 取得資料 Date = sys.argv[1] Product = sys.argv[2] FilePath = 'C:/Data/' Broker = 'Simulator' # 取得資料 MData = GetHistoryData(FilePath, Broker, Date, Product, 'Match') # 取特定時間的資料 MData = [ line for line in MData if strptime(line[0], "%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345' ] # 計算大額成交量資料 BigBuyOrder = [ MData[i] for i in range(1,len(MData)) if \ int(MData[i][5])-int(MData[i-1][5]) < int(MData[i][6])-int(MData[i-1][6]) and int(MData[i][3]) > 50 ] SellBuyOrder = [ MData[i] for i in range(1,len(MData)) if \ int(MData[i][5])-int(MData[i-1][5]) > int(MData[i][6])-int(MData[i-1][6]) and int(MData[i][3]) > 50 ] #取得轉換時間字串至時間格式 MTime = [strptime(line[0], "%Y/%m/%d %H:%M:%S.%f") for line in MData]
# 載入必要套件 from indicator import GetHistoryData import matplotlib.pyplot as plt import matplotlib.dates as mdates import datetime,sys strptime=datetime.datetime.strptime # 取得資料 Date=sys.argv[1] Product=sys.argv[2] FilePath='C:/Data/' Broker='Simulator' # 取得資料 MData=GetHistoryData(FilePath,Broker,Date,Product,'Match') CData=GetHistoryData(FilePath,Broker,Date,Product,'Commission') # 取特定時間的資料(委託檔揭示時間從8點30開始,所以需要從8點45開始繪圖) MData = [ line for line in MData if strptime(line[0],"%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345' ] CData = [ line for line in CData if strptime(line[0],"%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345' \ and strptime(line[0],"%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') > '0845' ] #取得轉換時間字串至時間格式 MTime = [ strptime(line[0],"%Y/%m/%d %H:%M:%S.%f") for line in MData ] CTime = [ strptime(line[0],"%Y/%m/%d %H:%M:%S.%f") for line in CData ] #價格由字串轉數值 Price = [ float(line[2]) for line in MData ] OrderDIff = [ int(line[3])-int(line[5]) for line in CData ]
# 期貨近月月份代號 Month = Product[3] # 選擇權月份契約對照表 CallMonthTable = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'] PutMonthTable = ['M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X'] # 找出相對應的買賣權月份代號 CallMonth = Month PutMonth = PutMonthTable[CallMonthTable.index(Month)] # 取得期貨、選擇權商品名稱 TXFName = Product CallName = 'TXO' + ExercisePrice + CallMonth + Year PutName = 'TXO' + ExercisePrice + PutMonth + Year # 取得資料 TXFData = GetHistoryData(FilePath, Broker, Date, TXFName, Table) CallData = GetHistoryData(FilePath, Broker, Date, CallName, Table) PutData = GetHistoryData(FilePath, Broker, Date, PutName, Table) # 取特定時間的資料 TXFData = [ line for line in TXFData if strptime(line[0], "%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345' ] CallData = [ line for line in CallData if strptime(line[0], "%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345' ] PutData = [ line for line in PutData if strptime(line[0], "%Y/%m/%d %H:%M:%S.%f").strftime('%H%M') < '1345'