請更新講師代碼至 2024年十月之後的版本
雲端部署交易系統 (Cloud Deployment with AWS)
為什麼需要雲端部署?
現有本地端設置的限制
- 交易依賴於:
- 本地電腦的可用性
- 個人網路連線的穩定性
- 潛在風險:
- 電腦故障/當機
- 電池電量耗盡
- 網路連線中斷
- 網路連線品質不穩定
雲端部署的優勢
- 完全獨立於本地設備與網路
- 提升系統:
- 可靠性
- 可用性
- 靈活性
- 理論上可以 24 小時不間斷運作
- 不受地理位置限制(即使在網路訊號較差的地區)
AWS 雲端服務特點
- 提供免費方案:
- 新用戶首次註冊後 12 個月免費
- 可使用 EC2 雲端實例
- 支援多種操作系統:
- Windows 實例
- Linux 實例(可選)
實際應用示範
基本設置
- 使用 T2 micro 實例
- 可通過遠端桌面連線存取
- 支援標準軟體安裝:
- Python
- Anaconda
- Jupyter Notebook
關鍵優勢展示
- 獨立網路連線:
- 交易執行不依賴本地網路
- 即使本地網路中斷,交易仍持續進行
- 持續運作能力:
- 關閉遠端連線後,程式仍在雲端持續執行
- 可關閉本地電腦,不影響交易進行
重要結論
雲端部署對於實際資金交易極其重要:
- 提供更穩定的交易環境
- 降低技術中斷風險
- 提升整體交易系統可靠性
內容主要強調了將交易系統從本地環境遷移至雲端的重要性和優勢。通過 AWS 的示範,說明了如何實現一個更穩定、可靠的交易系統架構。特別強調了系統的持續運作能力和獨立性,這對於實際資金交易來說是極其重要的考量因素。
AWS EC2 雲端實例設置指南
建立 AWS 帳戶
註冊流程
- 訪問 AWS 官方網站
- 點擊「建立新 AWS 帳戶」
- 需要提供:
- 電子郵件
- 密碼
- AWS 帳戶名稱
- 提供 12 個月免費試用期
AWS 服務概覽
- 提供多樣化服務:
- 虛擬服務器
- 容器
- 數據庫
- 機器學習
- 其他進階服務
EC2 實例創建流程
步驟 1:選擇映像檔(AMI)
- 免費方案可選擇:
- Amazon Linux
- Ubuntu Server
- Microsoft Windows Server 2019
步驟 2:選擇實例類型
- 免費方案限定使用 T2 micro:
- 基礎運算能力
- 1GB 記憶體
- 30GB 儲存空間
- 足以運行 1-2 個交易策略
步驟 3:金鑰對設置
- 建立新金鑰對:
- 命名金鑰(如:algo_trade)
- 下載私鑰檔案(.pem)
- 安全存儲私鑰檔案
連接到 Windows 實例
連接步驟
- 選擇運行中的實例
- 點擊「Connect」
- 選擇 RDP 客戶端
- 下載遠程桌面文件
- 解密並獲取密碼:
- 使用之前下載的金鑰檔案
- 複製生成的密碼
費用說明
- 免費層級包含:
- 每月 750 小時使用時間
- 可 24/7 運行單一 T2 micro 實例
- 額外實例費用:
- 約每月 $10 美元/實例
- 停止的實例不計費
實用提示
- 可以創建多個實例:
- 透過啟動/停止管理費用
- 未運行的實例不計費
- 遠程連接特性:
- 斷開連接後程序仍持續運行
- 可隨時重新連接
內容主要講解如何從零開始設置 AWS EC2 實例,特別適合想要將交易系統遷移到雲端的使用者。通過詳細的步驟說明,使用者可以輕鬆完成從帳戶創建到實例連接的全過程,同時也對相關成本有清晰的認識。
雲端演算法交易環境建置指南
Python 環境安裝
Anaconda 設置
-
基礎安裝
- 訪問 Anaconda 官網
- 下載 Python 3.8 (64-bit) Windows 版本
- 完成完整 Anaconda 安裝
-
必要套件安裝
- 通過 Anaconda Prompt 安裝:
- V20
- tpqoax
- Git 安裝(用於最新版 tpqoax 已經不需要 git)
- 通過 Anaconda Prompt 安裝:
檔案傳輸設置
本地檔案存取設定
-
設定遠端桌面連接:
- 右鍵編輯遠端桌面連接檔案
- 進入 Local Resources 設定
- 啟用本地磁碟機存取權限
-
檔案傳輸方法:
- 可直接拖放檔案
- 支援在雲端存取本地 C、D、E 磁碟
- 主要傳輸項目:
- Python 腳本(trader.py)
- 設定檔(config files) api=tpqoa.tpqoa(“oanda.cfg”)
執行交易腳本的方法
方法一:Anaconda Prompt
- 直接開啟 Anaconda Prompt
- 使用 Python 命令執行腳本
- 需注意更新設定檔路徑
方法二:Windows 命令提示字元
- 基本步驟:
[Anaconda安裝路徑]/Scripts/activate.bat python [腳本路徑]/trader.py
方法三:批次檔案(Batch File)自動化
- 建立批次檔案:
call [Anaconda路徑]/Scripts/activate.bat python [腳本路徑]/trader.py cmd /k
- 特點:
- 可通過雙擊執行
cmd /k
保持視窗開啟- 方便監控交易過程
重要注意事項
-
路徑設定:
- 確保使用完整檔案路徑
- 注意反斜線處理(使用 r 前綴)
- 更新設定檔中的路徑資訊
-
自動化考量:
- 批次檔案方式最適合自動化
- 可保留命令視窗監控執行狀態
內容主要說明如何在 AWS 雲端環境中建立完整的演算法交易基礎架構,從基本的 Python 環境設置到自動化執行交易腳本的不同方法。特別強調了幾種不同的執行方式,以及如何實現更好的自動化和監控。
自動化交易排程與控制系統
Windows 任務排程設置
基本任務創建
- 開啟任務排程器
- 建立基本任務設定:
- 命名任務(例如:algo_trade)
- 設定觸發條件(週期性)
- 選擇執行時間
排程細節
- 交易日設定:
- 週一至週五
- 指定開始時間
- 執行動作:
- 選擇運行程式
- 指定批次檔案路徑
- 可用進階設定:
- 觸發條件調整
- 執行條件設定
- 其他自定義設定
自動停止機制實作
OANDA 交易系統
- 必要導入:
import pandas as pd
import numpy as np
import tpqoa
import datetime
from datetime import timedelta
import time
- 停止時間實作:
datetime.utcnow().time() #current utc time
pd.to_datetime("17:30").time() #desired end of trading session (in utc time)
if datetime.utcnow().time()>=pd.to_datetime("17:30").time():
print("Stop the Trading Session!")
# python 3.12 or newer
if datetime.now(timezone.utc).time()>=pd.to_datetime("17:30").time():
print("Stop the Trading Session!")
class ConTrader:
# 略
def on_success(self, time ,bid,ask):
recent_tick = pd.to_datetime(time)
if recent_tick.time()>=pd.to_datetime("17:30").time():
self.stop_stream=True
df=pd.Dataframe({self.instrument:(ask+bid)/2},
index=[recent_tick])
self.tick_data=self.tick_data.append(df)
# stop_time = pd.Timestamp('17:30:00').time()
# if recent_tick.time() > stop_time:
# self.stop_stream = True
FXCM 交易系統 (暫時不討論)
- 基本設置:
import datetime as dt
def trader():
current_time = dt.datetime.utcnow()
stop_time = dt.datetime(year, month, day, hour, minute)
if current_time > stop_time:
# 關閉所有倉位
# 取消訂閱市場數據
# 停止數據流
停止條件設計
時間基礎設定
- UTC 時間控制
- 可設定具體停止時間
- 自動中性化倉位
其他可能的停止觸發條件
-
風險控制:
- 最大虧損限制
- 最大獲利目標
- 交易次數限制
-
市場條件:
- 波動性門檻
- 特定市場事件
重要考量因素
-
時間設定:
- 考慮市場交易時段
- 避開低流動性期間
- 配合不同時區設定
-
風險管理:
- 確保正確的倉位關閉
- 完整的交易記錄
- 錯誤處理機制
這個內容主要涵蓋了如何建立一個完整的自動化交易系統,從任務排程到自動停止機制的實作。特別強調了不同交易系統(OANDA 和 FXCM)的具體實現方式,以及各種可能的停止條件設計。