Bài viết gần đây
-
Bot Telegram báo giá crypto — Python, Binance, cảnh báo ngưỡng
Tháng 8 9, 2026 -
Gọi API Claude và OpenAI bằng Python — AI vào app của bạn
Tháng 8 9, 2026
Trang chủ → Bài Viết → Bot Binance tự động mua/bán với Claude Code, AI Code và Python — Testnet Sandbox
| Bot Binance tự động mua/bán với Claude Code, AI Code và Python — Testnet Sandbox
Được viết bởi Đặng Trí Thanh vào ngày 09/08/2026 lúc 15:35 | 9 lượt xem
Bot Binance tự động mua/bán với Claude Code, AI Code và Python — Testnet Sandbox
Ngày 55 – 2026-08-16 | Chuỗi Python 365 ngày | Hướng Nghiệp Dữ Liệu
**Meta mô tả (SEO):** Dùng Claude Code & AI Code để code bot Binance auto trade bằng Python. Kết nối testnet, MA20, đặt lệnh market, paper trading, ghi log CSV — Ngày 55 Python 365.
**Từ khóa:** claude code, ai code, python, bot binance, auto trading, testnet, ma20, paper trading, Python 365
**Video:** https://www.youtube.com/shorts/PLACEHOLDER
**Lưu ý:** Sau khi upload video Ngày 55, thay ID trong YAML `youtube` bằng ID thật từ YouTube Studio.
—
Xem video Ngày 55 (Short)
Link trực tiếp: [https://www.youtube.com/shorts/PLACEHOLDER](https://www.youtube.com/shorts/PLACEHOLDER)
—
Mục lục
1. [Từ Telegram cảnh báo đến Binance đặt lệnh](#1-từ-telegram-cảnh-báo-đến-binance-đặt-lệnh)
2. [Dùng Claude Code & AI Code để code nhanh hơn](#2-dùng-claude-code–ai-code-để-code-nhanh-hơn)
3. [Binance Testnet — sân chơi an toàn với tiền ảo](#3-binance-testnet–sân-chơi-an-toàn-với-tiền-ảo)
4. [Cài đặt python-binance và kết nối](#4-cài-đặt-python-binance-và-kết-nối)
5. [Đọc số dư tài khoản testnet](#5-đọc-số-dư-tài-khoản-testnet)
6. [Tín hiệu MA20 — quyết định BUY hay SELL](#6-tín-hiệu-ma20–quyết-định-buy-hay-sell)
7. [Đặt lệnh MARKET trên testnet](#7-đặt-lệnh-market-trên-testnet)
8. [Chế độ mô phỏng Paper Trading không cần pip](#8-chế-độ-mô-phỏng-paper-trading-không-cần-pip)
9. [Script Ngày 55 từng bước](#9-script-ngày-55-từng-bước)
10. [So sánh 2 chế độ: Testnet vs Paper Trading](#10-so-sánh-2-chế-độ-testnet-vs-paper-trading)
11. [Bảo mật API key và .env](#11-bảo-mật-api-key-và-env)
12. [FAQ](#12-faq)
13. [Kết luận](#13-kết-luận)
—
1. Từ Telegram cảnh báo đến Binance đặt lệnh
Ở **Ngày 51**, bạn đã học cách tạo **bot Telegram báo giá crypto** bằng Python: lấy giá realtime từ Binance public API, kiểm tra ngưỡng, gửi cảnh báo vào điện thoại. Đó là lớp “thông báo” — bot *nhìn* giá và *nói* cho bạn biết.
**Ngày 55** nâng cấp lên một bậc: bot không chỉ nhìn — nó **tự động đặt lệnh mua/bán** trên Binance. Đây là bước chuyển từ “cảnh báo” sang “thực thi” — cột mốc quan trọng trên hành trình xây dựng **bot auto trading hoàn chỉnh**.
Bài này dùng **Claude Code** và **AI Code** để code Python nhanh hơn, và chạy trên **Binance SPOT TESTNET** (môi trường sandbox với tiền ảo) để thực hành an toàn tuyệt đối.
**Disclaimer:** Bot trong bài chạy trên testnet (tiền ảo). Không cam kết lợi nhuận. Tuân thủ điều khoản Binance. Đây là nội dung giáo dục trong chuỗi **Python 365 ngày**.
—
2. Dùng Claude Code & AI Code để code nhanh hơn
Trước khi đi vào code, một điểm đáng chú ý: **toàn bộ script Ngày 55 được viết với sự hỗ trợ của Claude Code và AI Code**. Đây là xu hướng lập trình năm 2026: bạn không cần gõ từng dòng — bạn mô tả ý tưởng, AI sinh code, bạn review và chạy.
# Tại sao dùng Claude Code / AI Code cho bot trading?
| Lợi ích | Mô tả |
|—|—|
| **Tốc độ** | Code 170 dòng trong < 5 phút thay vì 2-3 giờ gõ tay |
| **Chính xác** | AI biết chính xác syntax Binance API, xử lý lỗi, format JSON |
| **Best practice** | Tự động thêm try/except, fallback pattern, type hints |
| **Đa chế độ** | AI đề xuất graceful degradation: có `python-binance` thì chạy testnet, không có thì fallback paper trading |
| **Review trước khi chạy** | Bạn đọc lại toàn bộ code, hiểu logic, rồi mới chạy — không blind copy |
# Quy trình code với AI:
Bạn: "Viết bot Binance kết nối testnet, dùng MA20 ra tín hiệu BUY/SELL,
có chế độ mô phỏng fallback, ghi log CSV, stdlib nếu không có pip"
AI (Claude Code): → sinh ~170 dòng Python
Bạn: → đọc, kiểm tra BINANCE_API_KEY, TESTNET=True, chạy thử
Kết quả: một script hoàn chỉnh, có xử lý lỗi, có 2 chế độ chạy, sẵn sàng production — trong thời gian cực ngắn.
---
3. Binance Testnet — sân chơi an toàn với tiền ảo
**Testnet** là môi trường sandbox của Binance: API giống hệt production, nhưng giao dịch bằng **tiền ảo**. Bạn có thể đặt lệnh, hủy lệnh, kiểm tra số dư — tất cả miễn phí và không rủi ro.
# Cách đăng ký testnet:
1. Vào **[testnet.binance.vision](https://testnet.binance.vision/)**
2. Đăng nhập bằng GitHub (không cần tài khoản Binance thật)
3. Vào **API Management** → tạo **HMAC API Key + Secret**
4. Vào **Faucet** → nhấn "Request funds" để nhận **tiền ảo** (BTC, USDT, ETH...)
5. Copy key/secret vào file `.env`
.env
BINANCE_API_KEY=your_testnet_api_key_here
BINANCE_SECRET=your_testnet_secret_here
TESTNET=true
Script mặc định `TESTNET=true` — chỉ cần tắt (`TESTNET=false`) khi bạn **có chủ đích** dùng tài khoản thật.
---
4. Cài đặt python-binance và kết nối
# Cài đặt
pip install python-binance
# Kết nối testnet
from binance.client import Client
client = Client(API_KEY, SECRET, testnet=True)
Chỉ 3 dòng. Tham số `testnet=True` tự động trỏ API endpoint về `testnet.binance.vision` thay vì `api.binance.com`. Toàn bộ request sau đó — get_account, create_order, get_klines — đều chạy trên sandbox.
# Graceful degradation
Script được thiết kế để **không crash** nếu chưa cài `python-binance`:
try:
from binance.client import Client
except ImportError:
print("Chưa cài python-binance -> chuyển chế độ mô phỏng")
run_simulate() # fallback: stdlib only, paper trading
Đây là pattern production-grade: **tự thích nghi với môi trường**. Nếu bạn đang trên máy không có quyền pip (VD: server hạn chế), script vẫn chạy được — chỉ không đặt lệnh thật.
---
5. Đọc số dư tài khoản testnet
info = client.get_account()
for b in info["balances"]:
if float(b["free"]) > 0:
print(f"{b['asset']}: free={b['free']} locked={b['locked']}")
Kết quả trả về danh sách tất cả asset trong tài khoản. Trên testnet, sau khi faucet, bạn sẽ thấy:
BTC: free=1.00000000 locked=0.00000000
USDT: free=10000.00000000 locked=0.00000000
ETH: free=10.00000000 locked=0.00000000
Đây là **tiền ảo** — bạn có thể dùng để test bot thoải mái, không lo mất tiền thật.
---
6. Tín hiệu MA20 — quyết định BUY hay SELL
Logic tín hiệu được kế thừa từ **Ngày 48** (MA20 crossover):
closes = [float(k[4]) for k in client.get_klines(
symbol="BTCUSDT", interval="1h", limit=20)]
ma20 = sum(closes) / len(closes)
price = float(client.get_symbol_ticker(symbol="BTCUSDT")["price"])
signal = "BUY" if price > ma20 else "SELL"
# Giải thích:
**MA20** = trung bình động 20 cây nến 1 giờ (~gần 1 ngày giao dịch)
**price > MA20** → xu hướng tăng → tín hiệu **BUY**
**price < MA20** → xu hướng giảm → tín hiệu **SELL**
Đây là logic đơn giản nhất để minh họa bot tự động ra quyết định. Trong thực tế, bạn sẽ kết hợp thêm RSI, volume, ATR... như các bài sau trong chuỗi.
---
7. Đặt lệnh MARKET trên testnet
order = client.create_order(
symbol="BTCUSDT",
side=Client.SIDE_BUY,
type=Client.ORDER_TYPE_MARKET,
quantity=0.0001, # lượng nhỏ, tiền ảo testnet
)
print(f"Lệnh đã đặt (testnet): {order.get('symbol')} "
f"{order.get('side')} {order.get('executedQty')}")
# Các loại lệnh:
| Loại | Mô tả | Dùng khi |
|---|---|---|
| **MARKET** | Mua/bán ngay tại giá thị trường | Bot cần khớp nhanh |
| **LIMIT** | Đặt giá cố định, chờ khớp | Muốn kiểm soát giá vào |
| **STOP_LOSS** | Kích hoạt khi giá chạm ngưỡng | Cắt lỗ tự động |
Ngày 55 dùng **MARKET** cho đơn giản. Các ngày sau sẽ thêm LIMIT, STOP_LOSS, OCO.
# Cờ `--order`
Script **không** tự động đặt lệnh khi chạy mặc định — bạn phải thêm flag:
python "Day 55_Bot Binance tu dong mua ban.py" --order
Đây là cơ chế an toàn: bạn xem số dư, kiểm tra tín hiệu trước, rồi mới quyết định có đặt lệnh không.
---
8. Chế độ mô phỏng Paper Trading không cần pip
Nếu chưa cài `python-binance`, script tự chuyển sang **chế độ mô phỏng** (paper trading) — dùng Binance **public API** (không cần key) và ghi log CSV:
def run_simulate():
cash, coins = 10000.0, 0.0
while True:
closes = fetch_klines("BTCUSDT") # public API
price, ma20 = closes[-1], sum(closes) / len(closes)
if price > ma20 and coins == 0:
cash, coins = 0.0, cash / price # BUY
action = "BUY"
elif price 0:
cash, coins = coins * price, 0.0 # SELL
action = "SELL"
else:
action = "HOLD"
# Ghi log CSV
with open("bot_binance_log.csv", "a") as f:
csv.writer(f).writerow([time, action, price, balance])
time.sleep(60)
# Điểm hay của paper trading:
**Không cần pip**: chỉ dùng `urllib` stdlib gọi Binance public klines API
**Không cần key**: dữ liệu giá công khai, ai cũng lấy được
**Ghi log CSV**: phân tích hiệu suất sau khi chạy
**Vốn ảo $10,000**: bắt đầu với 10k USDT giả, theo dõi PnL
Đây là cách tuyệt vời để **backtest chiến lược trước khi dùng tiền thật** — ngay cả khi bạn chưa có tài khoản Binance.
---
9. Script Ngày 55 từng bước
Dưới đây là toàn bộ cấu trúc script (~170 dòng), phân tích từng phần:
# Bước 1: Imports + config
import csv, json, os, sys, time, urllib.request
from datetime import datetime
from pathlib import Path
SYMBOL = "BTCUSDT"
LOG_FILE = BASE_DIR / "bot_binance_log.csv"
# Bước 2: load_env()
def load_env() -> dict:
env = {}
for line in ENV_FILE.read_text().splitlines():
if "=" in line:
k, v = line.split("=", 1)
env[k.strip()] = v.strip().strip('"')
return env
# Bước 3: fetch_klines() — public API
def fetch_klines(symbol, limit=20):
url = f"https://api.binance.com/api/v3/klines?symbol={symbol}&interval=1h&limit={limit}"
with urllib.request.urlopen(url) as resp:
return [float(k[4]) for k in json.loads(resp.read())]
# Bước 4: run_testnet() — kết nối + đọc dư + đặt lệnh
client = Client(API_KEY, SECRET, testnet=True)
info = client.get_account() # số dư
ticker = client.get_symbol_ticker(symbol="BTCUSDT") # giá
order = client.create_order(...) # đặt lệnh (nếu --order)
# Bước 5: run_simulate() — paper trading fallback
while True:
price, ma20 = get_price_and_ma20()
if price > ma20: BUY
elif price < ma20: SELL
write_log_CSV()
time.sleep(60)
# Bước 6: main() — dispatch
if not API_KEY:
run_simulate() # không key -> mô phỏng
else:
run_testnet("--order" in sys.argv)
[Link GitHub source code đầy đủ](#) — hoặc tải về từ thư mục `Ngay 55_2026.08.16/`.
---
10. So sánh 2 chế độ: Testnet vs Paper Trading
| Tiêu chí | Testnet (python-binance) | Paper Trading (stdlib) |
|---|---|---|
| **Cần cài pip** | Có (`python-binance`) | Không |
| **Cần API key** | Có (testnet key miễn phí) | Không |
| **Đọc số dư** | Có (dư thật trên testnet) | Không (vốn ảo $10k) |
| **Đặt lệnh thật** | Có (trên sandbox) | Không (chỉ log) |
| **Ghi log CSV** | Không (có thể thêm) | Có |
| **Độ chân thực** | Gần production nhất | Mô phỏng đơn giản |
| **Rủi ro** | 0 (tiền ảo) | 0 |
| **Phù hợp** | Test trước khi lên production | Học, backtest nhanh |
**Khuyến nghị:** Bắt đầu với Paper Trading để hiểu logic → chuyển sang Testnet khi muốn test API thật → cuối cùng mới lên production với tiền thật.
---
11. Bảo mật API key và .env
# Tuyệt đối không commit key lên GitHub
.gitignore
.env
bot_binance_log.csv
# File .env mẫu
Sao chép từ .env.example
BINANCE_API_KEY=your_testnet_key_here
BINANCE_SECRET=your_testnet_secret_here
TESTNET=true
# Cấp quyền tối thiểu cho API key
Trên Binance testnet (và production), khi tạo API key:
**Bỏ chọn "Enable Withdrawals"** — không bao giờ cho phép rút tiền qua API
**Bỏ chọn "Enable Futures"** nếu chỉ trade spot
**Giới hạn IP** nếu có IP tĩnh
---
12. FAQ
# Hỏi: Testnet có giống production 100% không?
**Đáp:** API endpoints giống hệt. Điểm khác: thanh khoản thấp hơn (ít người trade trên testnet), giá có thể lệch nhẹ so với production. Nhưng để test logic bot thì quá đủ.
# Hỏi: Tôi có cần tài khoản Binance thật để dùng testnet không?
**Đáp:** Không. Bạn chỉ cần đăng nhập testnet bằng GitHub. Không liên quan gì đến tài khoản Binance thật.
# Hỏi: Tôi dùng Claude Code để code bot này được không?
**Đáp:** Được! Thực tế script Ngày 55 được viết với Claude Code. Bạn có thể copy prompt từ bài này, dán vào Claude Code/Cursor/Copilot, và nó sẽ sinh code cho bạn. Nhớ review kỹ trước khi chạy.
# Hỏi: Từ khóa Claude Code, AI Code, Python có ý nghĩa gì trong bài này?
**Đáp:** Đây là 3 từ khóa SEO chính. "Claude Code" và "AI Code" phản ánh xu hướng lập trình 2026: dùng AI để code bot trading. "Python" là ngôn ngữ chính của toàn bộ chuỗi. Bài viết tối ưu để Google hiểu đây là nội dung về lập trình bot trading với sự hỗ trợ của AI.
# Hỏi: Làm sao để lấy được CHAT_ID cho Telegram (như Ngày 51)?
**Đáp:** Xem lại **Ngày 51** trong playlist Python 365. Tóm tắt: gửi `/start` cho bot của bạn → gọi `https://api.telegram.org/bot/getUpdates` → copy `chat.id`.
# Hỏi: Tôi muốn ghép Telegram (Ngày 51) + Binance (Ngày 55) thành 1 bot hoàn chỉnh?
**Đáp:** Đó là mục tiêu! Bạn sẽ cần: MA20 (Ngày 48) → tín hiệu → Binance đặt lệnh (Ngày 55) → Telegram thông báo kết quả (Ngày 51). Bài tổng hợp sẽ có trong các ngày tiếp theo.
# Hỏi: Làm sao để bot chạy 24/7?
**Đáp:** Deploy lên VPS (DigitalOcean $6/tháng, hoặc Raspberry Pi ở nhà). Dùng `screen` hoặc `systemd` để keep-alive. Bài về deploy sẽ có trong các ngày sau.
---
13. Kết luận
**Ngày 55** là cột mốc: bot của bạn không còn là "công cụ xem giá" — nó đã trở thành **hệ thống tự động đặt lệnh**. Từ đây, bạn có thể:
✅ **Kết nối Binance API** (testnet an toàn)
✅ **Đọc số dư** tài khoản
✅ **Tính MA20** làm tín hiệu BUY/SELL
✅ **Đặt lệnh MARKET** tự động
✅ **Fallback paper trading** khi chưa cài thư viện
✅ **Ghi log CSV** để phân tích hiệu suất
Kết hợp với **Ngày 51** (Telegram cảnh báo) và **Ngày 48** (MA20), bạn đã có đủ 3 lớp: **phân tích → thực thi → thông báo**.
# Tiếp theo trong Python 365:
**Ngày 56+**: Thêm LIMIT order, STOP_LOSS, OCO
**Ngày 60+**: Backtest chiến lược trên dữ liệu lịch sử
**Ngày 70+**: Deploy bot lên VPS chạy 24/7
**Ngày 80+**: Tích hợp Claude Code để bot tự phân tích tin tức
---
**Đăng ký kênh YouTube Hướng Nghiệp Dữ Liệu** để không bỏ lỡ bài nào trong chuỗi **Python 365 ngày**!
[▶ Playlist Python 365](https://www.youtube.com/playlist?list=PLlvatcRiI_TLt4teIBQgtXBlGLAerk9Ce) · [🌐 Website HNDL](https://www.huongnghiepdulieu.com/) · [📘 Khóa học Python](https://www.huongnghiepdulieu.com/lap-trinh-python-co-ban/)
---
*Bài viết trong chuỗi Python 365 ngày — hành trình 1 năm học Python từ số 0 đến bot trading tự động. Không cam kết lợi nhuận. Nội dung giáo dục.*
✉️
Weekly Digest — Nhận Bản Tin Hàng Tuần
Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.
Đặng Trí Thanh
Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL
847
Bài viết
15.4k
Người theo dõi
120k+
Lượt đọc
Đặng Trí Thanh — Founder & CTO · Hướng Nghiệp Dữ Liệu - DNT Digital. Chuyên đào tạo và triển khai thực chiến Python, MT5 và hệ thống bot auto trading / IB cho học viên và doanh nghiệp.