Skip to content

Commit 1732a6f

Browse files
deployable
1 parent 6b51a89 commit 1732a6f

File tree

12 files changed

+161
-4963
lines changed

12 files changed

+161
-4963
lines changed
File renamed without changes.
File renamed without changes.

trading_automation.py renamed to Trading-Automation/trading_automation.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@
1616
filters,
1717
JobQueue,
1818
)
19-
from secret import API_KEY, API_SECRET, TELEGRAM_TOKEN, TELEGRAM_CHAT_ID
2019
import apscheduler.util
2120

21+
API_KEY = os.environ['BINANCE_KEY']
22+
API_SECRET = os.environ['BINANCE_SECRET']
23+
TELEGRAM_TOKEN = os.environ['TELEGRAM_TOKEN']
24+
TELEGRAM_CHAT_ID = int(os.environ['TELEGRAM_CHAT_ID'])
25+
2226
def patched_get_localzone():
2327
return pytz.UTC
2428

update_symbols.py renamed to Trading-Automation/update_symbols.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
from statistics import stdev
55
from binance.client import Client
66
from pycoingecko import CoinGeckoAPI
7-
from secret import API_KEY, API_SECRET
7+
API_KEY = os.environ['BINANCE_KEY']
8+
API_SECRET = os.environ['BINANCE_SECRET']
89

910
OUTPUT_FILE = "symbols.yaml"
10-
UPDATE_INTERVAL = 300 # <-- in seconds (e.g., 300 = 5 minutes)
11+
UPDATE_INTERVAL = 180
1112
cg = CoinGeckoAPI()
1213

1314
def fetch_with_retry(func, *args, retries=3, **kwargs):
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: CI Test on AWS EC2
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
deploy-test:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout including submodules
15+
uses: actions/checkout@v3
16+
with:
17+
submodules: recursive
18+
fetch-depth: 0
19+
20+
- name: Set up SSH Key from base64
21+
run: |
22+
printf "%s" "${{ secrets.AWS_EC2_KEY_B64 }}" | base64 -d > key.pem
23+
chmod 600 key.pem
24+
25+
- name: load python
26+
uses: actions/setup-python@v4
27+
with:
28+
python-version: '3.12'
29+
30+
- name: Upload .env to EC2
31+
run: |
32+
echo "BINANCE_KEY=${{ secrets.BINANCE_KEY }}" > .env
33+
echo "BINANCE_SECRET=${{ secrets.BINANCE_SECRET }}" >> .env
34+
echo "TELEGRAM_TOKEN=${{ secrets.TELEGRAM_TOKEN }}" >> .env
35+
echo "TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }}" >> .env
36+
37+
scp -i key.pem -o StrictHostKeyChecking=no .env \
38+
${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/Trading-Automation/.env
39+
40+
ssh -i key.pem -o StrictHostKeyChecking=no ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} \
41+
"echo '.env' >> ~/Trading-Automation/.gitignore || true"
42+
43+
- name: Deploy EC2 Environment
44+
run: |
45+
ssh -i key.pem -o StrictHostKeyChecking=no ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
46+
if [ ! -f ~/.auriga_env_configured ]; then
47+
echo "alias python=/usr/bin/python3.12" >> ~/.profile
48+
echo "alias pip=/home/ubuntu/.local/bin/pip" >> ~/.profile
49+
source .profile
50+
sudo apt update && sudo apt upgrade
51+
sudo apt install locate
52+
sudo updatedb
53+
wget -O get-pip.py https://bootstrap.pypa.io/get-pip.py
54+
sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.old &>/dev/null
55+
python3 get-pip.py
56+
touch ~/.auriga_env_configured
57+
echo "✔️ Environment configured."
58+
else
59+
echo "ℹ️ Environment already configured. Skipping alias setup."
60+
fi
61+
EOF
62+
scp -o StrictHostKeyChecking=no -i key.pem -r "Trading-Automation" \
63+
${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/
64+
ssh -o StrictHostKeyChecking=no -i key.pem ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
65+
sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.old &>/dev/null
66+
cd Trading-Automation
67+
python3 -m pip install -r requirements.txt || true
68+
EOF
69+
- name: Deploy Trading Service
70+
run: |
71+
scp -o StrictHostKeyChecking=no -i key.pem trading.service ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/
72+
scp -o StrictHostKeyChecking=no -i key.pem symbols_update.service ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }}:~/
73+
ssh -o StrictHostKeyChecking=no -i key.pem ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
74+
pkill python*
75+
sudo mv ~/trading.service /etc/systemd/system/
76+
sudo mv ~/symbols_update.service /etc/systemd/system/
77+
sudo systemctl daemon-reload
78+
sudo systemctl enable symbols_update.service trading.service
79+
EOF
80+
- name: Restart Trading Service
81+
run: |
82+
ssh -o StrictHostKeyChecking=no -i key.pem ${{ secrets.AWS_EC2_USER }}@${{ secrets.AWS_EC2_HOST }} << 'EOF'
83+
sudo systemctl daemon-reload
84+
sudo systemctl restart symbols_update.service
85+
sudo systemctl restart trading.service
86+
sudo systemctl status trading.service --no-pager
87+
EOF
88+

streamlit_dashboard.py

Lines changed: 0 additions & 35 deletions
This file was deleted.

symbols.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
BTCUSDT:
2+
market_cap: 13374022
3+
circulating_supply: 113.04256188
4+
last_price: 118444.72
5+
volatility:
6+
15m: 0.000525176176289569
7+
1h: 0.00040466543794330246
8+
1d: 0.0013374250844323183
9+
volume_15m: 110.34134
10+
volume_1h: 379.43718
11+
volume_1d: 8852.062
12+
arbitrage:
13+
bid_ask_spread: 0.00999999999476131
14+
top_bid: 118444.72
15+
top_ask: 118444.73
16+
order_book_depth: 6.04289
17+
ETHUSDT:
18+
market_cap: 69460
19+
circulating_supply: 999819501.739918
20+
last_price: 4168.1
21+
volatility:
22+
15m: 0.0008297871747153822
23+
1h: 0.000739325018930009
24+
1d: 0.002714050295131521
25+
volume_15m: 3764.6595
26+
volume_1h: 14452.6791
27+
volume_1d: 343302.3651
28+
arbitrage:
29+
bid_ask_spread: 0.010000000000218279
30+
top_bid: 4168.42
31+
top_ask: 4168.43
32+
order_book_depth: 91.9338

0 commit comments

Comments
 (0)