if len(Close) >= N: # 陣列裡的收盤價數量足夠就可以開始計算MA指標 MA = sum(Close[-N:]) / N # 期數為N期的MA指標 if time == lastTime: # 同一分鐘 MA_List[-1] = MA # 不斷更新最近一根K棒的MA值 else: # 不同分鐘 MA_List.append(MA) # 新增一根K棒的MA值 if len(MA_List) > N: # 陣列裡的MA數量足夠就可以開始判斷 thisMA = MA_List[-1] # 當前MA值 lastMA = MA_List[-2] # 上一分鐘MA值 thisClose = Close[-1] # 當前收盤價 lastClose = Close[-2] # 上一分鐘收盤價 # 黃金交叉(收盤價由下往上穿越MA值) if lastClose <= lastMA and thisClose > thisMA: # 利用套件函數送出委託單,詳細用法請參考說明文件 print('多單進場') GOrder.GOCommand().Order(Broker, Prod, 'B', '0', '1', 'IOC', 'MKT', '1') GO.EndDescribe() # 死亡交叉(收盤價由上往下穿越MA值) elif lastClose >= lastMA and thisClose < thisMA: # 利用套件函數送出委託單,詳細用法請參考說明文件 print('空單進場') GOrder.GOCommand().Order(Broker, Prod, 'S', '0', '1', 'IOC', 'MKT', '1') GO.EndDescribe() lastTime = minute # 記錄當前分鐘
# Yuanta(元大證券)、Capital(群益證券)、Capital_Future(群益期貨)、Kgi(凱基證券)、Kgi_Future(凱基期貨)、Simulator(虛擬期貨) Broker = 'Masterlink_Future' PriceOffer = 'Simulator' # match(成交資訊)、commission(委託資訊)、updn5(上下五檔資訊) Kind = 'match' # 取即時報價的商品代碼(GOrder內需先訂閱該商品) Prod = 'TXFA0' # 取得當天日期 Date = datetime.datetime.now().strftime("%Y/%m/%d") # 定義報價指令的物件 GOQ = GOrder.GOQuote() # 定義下單指令的物件 GOC = GOrder.GOCommand() endTime = datetime.datetime.strptime('2020/1/3 16:33:10', '%Y/%m/%d %H:%M:%S') import tick2OHLC A = tick2OHLC.tick2OHLC() for row in GOQ.Describe(PriceOffer, Kind, Prod): time = datetime.datetime.strptime(row[0], '%Y/%m/%d %H:%M:%S.%f') price = float(row[2]) print(time, price) A.put(time, price) # if time >= endTime: # GOQ.EndDescribe()