雲端部署交易系統 (Cloud Deployment with AWS)

請更新講師代碼至 2024年十月之後的版本

雲端部署交易系統 (Cloud Deployment with AWS)

為什麼需要雲端部署?

現有本地端設置的限制

  • 交易依賴於:
    • 本地電腦的可用性
    • 個人網路連線的穩定性
  • 潛在風險:
    • 電腦故障/當機
    • 電池電量耗盡
    • 網路連線中斷
    • 網路連線品質不穩定

雲端部署的優勢

  • 完全獨立於本地設備與網路
  • 提升系統:
    • 可靠性
    • 可用性
    • 靈活性
  • 理論上可以 24 小時不間斷運作
  • 不受地理位置限制(即使在網路訊號較差的地區)

AWS 雲端服務特點

  • 提供免費方案:
    • 新用戶首次註冊後 12 個月免費
    • 可使用 EC2 雲端實例
  • 支援多種操作系統:
    • Windows 實例
    • Linux 實例(可選)

實際應用示範

基本設置

  • 使用 T2 micro 實例
  • 可通過遠端桌面連線存取
  • 支援標準軟體安裝:
    • Python
    • Anaconda
    • Jupyter Notebook

關鍵優勢展示

  1. 獨立網路連線:
    • 交易執行不依賴本地網路
    • 即使本地網路中斷,交易仍持續進行
  2. 持續運作能力:
    • 關閉遠端連線後,程式仍在雲端持續執行
    • 可關閉本地電腦,不影響交易進行

重要結論

雲端部署對於實際資金交易極其重要:

  • 提供更穩定的交易環境
  • 降低技術中斷風險
  • 提升整體交易系統可靠性

內容主要強調了將交易系統從本地環境遷移至雲端的重要性和優勢。通過 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:金鑰對設置

  1. 建立新金鑰對:
    • 命名金鑰(如:algo_trade)
    • 下載私鑰檔案(.pem)
    • 安全存儲私鑰檔案

連接到 Windows 實例

連接步驟

  1. 選擇運行中的實例
  2. 點擊「Connect」
  3. 選擇 RDP 客戶端
  4. 下載遠程桌面文件
  5. 解密並獲取密碼:
    • 使用之前下載的金鑰檔案
    • 複製生成的密碼

費用說明

  • 免費層級包含:
    • 每月 750 小時使用時間
    • 可 24/7 運行單一 T2 micro 實例
  • 額外實例費用:
    • 約每月 $10 美元/實例
    • 停止的實例不計費

實用提示

  1. 可以創建多個實例:
    • 透過啟動/停止管理費用
    • 未運行的實例不計費
  2. 遠程連接特性:
    • 斷開連接後程序仍持續運行
    • 可隨時重新連接

內容主要講解如何從零開始設置 AWS EC2 實例,特別適合想要將交易系統遷移到雲端的使用者。通過詳細的步驟說明,使用者可以輕鬆完成從帳戶創建到實例連接的全過程,同時也對相關成本有清晰的認識。

雲端演算法交易環境建置指南

Python 環境安裝

Anaconda 設置

  1. 基礎安裝

    • 訪問 Anaconda 官網
    • 下載 Python 3.8 (64-bit) Windows 版本
    • 完成完整 Anaconda 安裝
  2. 必要套件安裝

    • 通過 Anaconda Prompt 安裝:
      • V20
      • tpqoax
    • Git 安裝(用於最新版 tpqoax 已經不需要 git)

檔案傳輸設置

本地檔案存取設定

  1. 設定遠端桌面連接:

    • 右鍵編輯遠端桌面連接檔案
    • 進入 Local Resources 設定
    • 啟用本地磁碟機存取權限
  2. 檔案傳輸方法:

    • 可直接拖放檔案
    • 支援在雲端存取本地 C、D、E 磁碟
    • 主要傳輸項目:
      • Python 腳本(trader.py)
      • 設定檔(config files) api=tpqoa.tpqoa(“oanda.cfg”)

執行交易腳本的方法

方法一:Anaconda Prompt

  • 直接開啟 Anaconda Prompt
  • 使用 Python 命令執行腳本
  • 需注意更新設定檔路徑

方法二:Windows 命令提示字元

  1. 基本步驟:
    [Anaconda安裝路徑]/Scripts/activate.bat
    python [腳本路徑]/trader.py
    

方法三:批次檔案(Batch File)自動化

  1. 建立批次檔案:
    call [Anaconda路徑]/Scripts/activate.bat
    python [腳本路徑]/trader.py
    cmd /k
    
  2. 特點:
    • 可通過雙擊執行
    • cmd /k 保持視窗開啟
    • 方便監控交易過程

重要注意事項

  1. 路徑設定:

    • 確保使用完整檔案路徑
    • 注意反斜線處理(使用 r 前綴)
    • 更新設定檔中的路徑資訊
  2. 自動化考量:

    • 批次檔案方式最適合自動化
    • 可保留命令視窗監控執行狀態

內容主要說明如何在 AWS 雲端環境中建立完整的演算法交易基礎架構,從基本的 Python 環境設置到自動化執行交易腳本的不同方法。特別強調了幾種不同的執行方式,以及如何實現更好的自動化和監控。

自動化交易排程與控制系統

Windows 任務排程設置

基本任務創建

  1. 開啟任務排程器
  2. 建立基本任務設定:
    • 命名任務(例如:algo_trade)
    • 設定觸發條件(週期性)
    • 選擇執行時間

排程細節

  • 交易日設定:
    • 週一至週五
    • 指定開始時間
  • 執行動作:
    • 選擇運行程式
    • 指定批次檔案路徑
  • 可用進階設定:
    • 觸發條件調整
    • 執行條件設定
    • 其他自定義設定

自動停止機制實作

OANDA 交易系統

  1. 必要導入:
import pandas as pd
import numpy as np
import tpqoa
import datetime
from datetime import timedelta
import time
  1. 停止時間實作:
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 交易系統 (暫時不討論)

  1. 基本設置:
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 時間控制
  • 可設定具體停止時間
  • 自動中性化倉位

其他可能的停止觸發條件

  1. 風險控制:

    • 最大虧損限制
    • 最大獲利目標
    • 交易次數限制
  2. 市場條件:

    • 波動性門檻
    • 特定市場事件

重要考量因素

  1. 時間設定:

    • 考慮市場交易時段
    • 避開低流動性期間
    • 配合不同時區設定
  2. 風險管理:

    • 確保正確的倉位關閉
    • 完整的交易記錄
    • 錯誤處理機制

這個內容主要涵蓋了如何建立一個完整的自動化交易系統,從任務排程到自動停止機制的實作。特別強調了不同交易系統(OANDA 和 FXCM)的具體實現方式,以及各種可能的停止條件設計。

1個讚