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

**URL:** <https://vip.studycamp.tw/t/%E9%9B%B2%E7%AB%AF%E9%83%A8%E7%BD%B2%E4%BA%A4%E6%98%93%E7%B3%BB%E7%B5%B1-cloud-deployment-with-aws/7817>\
**Category:** 量化金融\
**Tags:** 上課筆記\
**Created:** [2025年一月14日 15:19 UTC](https://vip.studycamp.tw/t/%E9%9B%B2%E7%AB%AF%E9%83%A8%E7%BD%B2%E4%BA%A4%E6%98%93%E7%B3%BB%E7%B5%B1-cloud-deployment-with-aws/7817 "2025-01-14T15:19:27Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![fengyu\_wu](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/fengyu_wu/32/178_2.png) [@fengyu\_wu](https://vip.studycamp.tw/u/fengyu_wu)\
**Post date:** [2025年一月14日 15:19 UTC](https://vip.studycamp.tw/t/%E9%9B%B2%E7%AB%AF%E9%83%A8%E7%BD%B2%E4%BA%A4%E6%98%93%E7%B3%BB%E7%B5%B1-cloud-deployment-with-aws/7817/1 "2025-01-14T15:19:27Z")

</div>

請更新講師代碼至 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. 基礎安裝

2. 必要套件安裝

## 檔案傳輸設置

### 本地檔案存取設定

1. 設定遠端桌面連接：

2. 檔案傳輸方法：

## 執行交易腳本的方法

### 方法一：Anaconda Prompt

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

### 方法二：Windows 命令提示字元

1. 基本步驟：

```batch
[Anaconda安裝路徑]/Scripts/activate.bat
python [腳本路徑]/trader.py

```

### 方法三：批次檔案（Batch File）自動化

1. 建立批次檔案：

```batch
call [Anaconda路徑]/Scripts/activate.bat
python [腳本路徑]/trader.py
cmd /k

```

2. 特點：
  - 可通過雙擊執行
  - `cmd /k` 保持視窗開啟
  - 方便監控交易過程

## 重要注意事項

1. 路徑設定：

2. 自動化考量：

* * *

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

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

## Windows 任務排程設置

### 基本任務創建

1. 開啟任務排程器
2. 建立基本任務設定：
  - 命名任務（例如：algo\_trade）
  - 設定觸發條件（週期性）
  - 選擇執行時間

### 排程細節

- 交易日設定：
  - 週一至週五
  - 指定開始時間

- 執行動作：
  - 選擇運行程式
  - 指定批次檔案路徑

- 可用進階設定：
  - 觸發條件調整
  - 執行條件設定
  - 其他自定義設定

## 自動停止機制實作

### OANDA 交易系統

1. 必要導入：

```python
import pandas as pd
import numpy as np
import tpqoa
import datetime
from datetime import timedelta
import time

```

1. 停止時間實作：

```python
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. 基本設置：

```python
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）的具體實現方式，以及各種可能的停止條件設計。
