Danh mục: Tin tức
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Chia sẻ PostgreSQL Database qua mạng LAN
Được viết bởi thanhdt vào ngày 02/12/2025 lúc 07:36 | 364 lượt xem
Chia sẻ PostgreSQL Database qua mạng LAN
Khi làm việc trong nhóm hoặc trong môi trường nội bộ doanh nghiệp, bạn thường cần cho nhiều máy trong mạng LAN cùng truy cập vào một PostgreSQL server. Bài viết này hướng dẫn cách cấu hình PostgreSQL để các máy khác trong LAN có thể kết nối an toàn và ổn định.
1. Kiểm tra địa chỉ IP của máy cài PostgreSQL
Bạn cần biết IP nội bộ của máy chủ PostgreSQL để các máy khác trong LAN kết nối.


Mở Command Prompt → nhập:
ipconfig
Tìm mục IPv4 Address. Ví dụ:
IPv4 Address. . . . . . . . . . . : 192.168.1.10
Đây sẽ là địa chỉ để các máy khác truy cập.
2. Chỉnh sửa file postgresql.conf để mở cổng LAN
File cấu hình nằm tại:
- Windows:
C:\Program Files\PostgreSQL\<version>\data\postgresql.conf - Ubuntu:
/etc/postgresql/<version>/main/postgresql.conf
Mở file và tìm dòng:
#listen_addresses = 'localhost'
Sửa thành:
listen_addresses = '*'
Hoặc giới hạn trong LAN, ví dụ:
listen_addresses = '192.168.1.10'


3. Chỉnh sửa file pg_hba.conf để cho phép máy khác kết nối
File này nằm cùng thư mục với postgresql.conf.
Thêm dòng sau để cho phép toàn bộ LAN truy cập:
host all all 192.168.1.0/24 md5
Giải thích:
192.168.1.0/24là toàn bộ dải LAN.- Có thể thay đổi theo dải IP bạn sử dụng.
md5là yêu cầu xác thực bằng mật khẩu.


4. Mở cổng tường lửa (Firewall)
PostgreSQL mặc định chạy port 5432, cần mở để máy khác truy cập.
Trên Windows
Command Prompt (Run as Administrator):
netsh advfirewall firewall add rule name="PostgreSQL" dir=in action=allow protocol=TCP localport=5432
Trên Ubuntu
sudo ufw allow 5432/tcp

5. Khởi động lại PostgreSQL
Windows:
services.msc
Chọn PostgreSQL → Restart.
Ubuntu:
sudo systemctl restart postgresql
6. Kết nối từ máy khác trong LAN
Từ máy client, mở DBeaver / PgAdmin và kết nối:
- Host:
192.168.1.10 - Port:
5432 - User: user PostgreSQL của bạn
- Database: tên database


7. Lưu ý bảo mật
- Không mở toàn mạng Internet, chỉ LAN.
- Sử dụng mật khẩu mạnh.
- Có thể cấu hình SSL nếu muốn kết nối an toàn hơn.
8. Tóm tắt nhanh
| Bước | Nội dung |
|---|---|
| 1 | Lấy IP LAN của server (ipconfig / ifconfig) |
| 2 | Sửa postgresql.conf → listen_addresses='*' |
| 3 | Sửa pg_hba.conf → cho phép LAN 192.168.1.0/24 |
| 4 | Mở firewall port 5432 |
| 5 | Restart PostgreSQL |
| 6 | Client kết nối qua IP LAN |
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) trong SQL Server
Được viết bởi thanhdt vào ngày 02/12/2025 lúc 07:30 | 251 lượt xem
Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) trong SQL Server
📊 Phân tích danh mục đầu tư
Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) trong SQL Server
Mục tiêu buổi học:
- Hiểu cách sử dụng các toán tử logic trong điều kiện WHERE.
- Kết hợp nhiều điều kiện với AND, OR, NOT.
- Tránh những lỗi phổ biến khi dùng toán tử logic.
1. Giới thiệu toán tử logic
Khi viết truy vấn SQL, chúng ta thường cần lọc dữ liệu theo nhiều điều kiện. SQL Server cung cấp 3 toán tử logic quan trọng:
| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
| AND | Chỉ chọn các dòng thỏa mãn tất cả điều kiện | Chọn nhân viên có lương > 5000 và chức vụ là “Manager” |
| OR | Chọn các dòng thỏa mãn ít nhất một điều kiện | Chọn nhân viên có lương > 5000 hoặc có chức vụ là “Manager” |
| NOT | Lọc bỏ những dòng thỏa mãn điều kiện | Chọn tất cả nhân viên ngoại trừ những người có chức vụ là “Intern” |
2. Ví dụ minh họa
🔹 Sử dụng AND
Giả sử bạn có bảng Employees với các cột EmployeeID, FirstName, Salary, JobTitle.
Bạn muốn tìm những nhân viên có lương trên 5000 và giữ chức vụ Manager:
SELECT * FROM Employees
WHERE Salary > 5000 AND JobTitle = 'Manager';
Giải thích: Câu lệnh trên chỉ trả về các nhân viên có cả hai điều kiện đúng.
Sử dụng OR
Bây giờ, bạn muốn tìm những nhân viên có lương trên 5000 hoặc giữ chức vụ Manager:
SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager';
Giải thích: Chỉ cần một trong hai điều kiện đúng là bản ghi sẽ được chọn.
Sử dụng NOT
Giả sử bạn muốn tìm tất cả nhân viên ngoại trừ những người có chức vụ “Intern”:
SELECT * FROM Employees
WHERE NOT JobTitle = 'Intern';
Giải thích: SQL Server sẽ lọc tất cả các bản ghi ngoại trừ những người có JobTitle là “Intern”.
Kết hợp AND, OR, NOT Bạn có thể kết hợp nhiều toán tử logic trong cùng một câu truy vấn. Ví dụ: Tìm những nhân viên có lương trên 5000 hoặc là Manager, nhưng không phải là Intern:
SELECT * FROM Employees
WHERE (Salary > 5000 OR JobTitle = 'Manager') AND NOT JobTitle = 'Intern';
Lưu ý: Dùng dấu ngoặc tròn ()` để kiểm soát thứ tự ưu tiên của điều kiện.
3. Những lỗi thường gặp khi sử dụng toán tử logic Quên dấu ngoặc làm thay đổi thứ tự ưu tiên
SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager' AND NOT JobTitle = 'Intern';
Sai: SQL sẽ ưu tiên thực hiện AND trước OR, có thể gây sai kết quả.
Sửa đúng: Dùng dấu ngoặc để đảm bảo điều kiện chạy đúng.
4. Bài tập thực hành
Tìm nhân viên có lương trên 7000 và làm ở bộ phận “IT”.
Tìm nhân viên có chức vụ là “Sales” hoặc có lương trên 6000.
Tìm tất cả nhân viên ngoại trừ những người có chức vụ “HR”.
Gợi ý đáp án:
-- Bài 1
SELECT * FROM Employees
WHERE Salary > 7000 AND Department = 'IT';
-- Bài 2
SELECT * FROM Employees
WHERE JobTitle = 'Sales' OR Salary > 6000;
-- Bài 3
SELECT * FROM Employees
WHERE NOT JobTitle = 'HR';
Chúc bạn học tốt! Ngày mai, chúng ta sẽ học cách sắp xếp dữ liệu với ORDER BY. Hẹn gặp lại ở Ngày 7 nhé! 🎯

Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Ngày 35 – Python hằng ngày 365 ngày – Tạo và ghi file
Được viết bởi thanhdt vào ngày 02/12/2025 lúc 00:01 | 280 lượt xem
Ngày 35 – Python hằng ngày 365 ngày – Tạo và ghi file
📊 Phân tích danh mục đầu tư
🐍 Ngày 35 – Python hằng ngày 365 ngày – Tạo và ghi file
🎯 Mục tiêu
Học cách tạo, ghi và đọc file văn bản (.txt) trong Python.
🧠 Kiến thức chính
- Dùng open(“filename”, “mode”) để mở file:
- “w”: ghi mới (xoá nội dung cũ nếu có)
- “a”: ghi tiếp vào cuối file
- “r”: chỉ đọc
- Nên dùng with open(…) để đảm bảo đóng file tự động.
📦 Ví dụ: Ghi và đọc file
# Ghi nội dung vào file
with open("demo.txt", "w", encoding="utf-8") as f:
f.write("Xin chào Python!\n")
f.write("Hôm nay là ngày 35\n")
# Đọc lại nội dung file
with open("demo.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
📂 Sau khi chạy, bạn sẽ thấy file demo.txt trong thư mục hiện tại.
📝 Bài tập thực hành
Bài 1: Tạo file note.txt và ghi 3 dòng bất kỳ
Bài 2: Ghi danh sách vào file
lines = ["Dòng 1", "Dòng 2", "Dòng 3"]
- Ghi từng dòng vào file lines.txt (mỗi phần tử 1 dòng)
- Đọc lại nội dung và in ra màn hình.
💡 Gợi ý
- Dùng vòng lặp for để ghi nhiều dòng.
- Dùng f.write(line + “\n”) để đảm bảo mỗi dòng cách dòng.
📌 Ghi chú
- File sẽ nằm cùng thư mục với file Python nếu không chỉ định đường dẫn cụ thể.
- Dùng os.path.exists() để kiểm tra file có tồn tại không trước khi đọc.
🚀 Bắt đầu với Python

Bạn có thể mở bài học này trên Google Colab để chạy trực tiếp:
📺 Ngày 35 – Tạo và ghi file trong Python
Trong video này, bạn sẽ học cách tạo và ghi file trong Python bằng các chế độ "w" và "a". Một kỹ năng cực kỳ quan trọng để lưu trữ dữ liệu hoặc log!
in Sự kiện
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Async trong Python & FastAPI
Được viết bởi thanhdt vào ngày 01/12/2025 lúc 14:23 | 220 lượt xem
Async trong Python & FastAPI: Lập trình bất đồng bộ từ A–Z



4
Lập trình bất đồng bộ (asynchronous programming) là nền tảng giúp FastAPI đạt hiệu năng vượt trội so với nhiều framework Python truyền thống.
Bài viết này giúp bạn hiểu:
- Async là gì & vì sao nó quan trọng
- Khác nhau giữa blocking vs non-blocking
- Coroutine, event loop hoạt động ra sao
- FastAPI xử lý async thế nào
- So sánh hiệu năng khi gọi API tuần tự vs song song
1. Async là gì? Tại sao phải dùng trong Backend?
Trong backend, phần lớn thời gian không phải CPU chạy code, mà là:
- Chờ database trả về
- Chờ API ngoài trả về
- Chờ đọc file
- Chờ network I/O
Các “khoảng chờ” này nếu dùng lập trình thông thường (blocking) sẽ làm tắc luồng, giảm throughput của server.
Async giải quyết vấn đề này bằng cách:
- Không chặn luồng khi đang “chờ”
- Cho phép server xử lý các request khác song song
- Tận dụng tối đa tài nguyên khi hệ thống I/O nhiều


2. Blocking vs Non-blocking – Khác nhau thế nào?
Blocking (truyền thống)
result = call_api()
process(result)
Trong lúc call_api() chờ phản hồi, toàn bộ hàm bị đứng lại → không làm gì được.
Non-blocking (async)
result = await call_api_async()
process(result)
Khi “chờ”, Python nhường quyền cho tác vụ khác → server có thể xử lý hàng trăm request cùng lúc.
3. Event Loop & Coroutine – Trái tim của Async
Coroutine
Một hàm có thể tạm dừng & tiếp tục chạy ở đúng vị trí cũ.
async def get_data():
return 123
Event Loop
Bộ điều phối coroutine — quyết định hàm nào chạy tiếp, hàm nào tạm dừng để chờ I/O.

FastAPI chạy trên ASGI (Asynchronous Server Gateway Interface), tận dụng tối đa event loop để xử lý concurrency.
4. Async trong FastAPI hoạt động như thế nào?
Ví dụ:
from fastapi import FastAPI
app = FastAPI()
@app.get("/user")
async def get_user():
return {"name": "Thanh", "role": "Backend"}
Lưu ý:
- Chỉ cần dùng
async def→ route của bạn trở thành bất đồng bộ - FastAPI sẽ dùng event loop để xử lý đồng thời nhiều request
- Nếu hàm bên trong có
await(như DB, API bên ngoài), server sẽ cực kỳ hiệu quả
5. Ví dụ thực tế: Gọi API tuần tự vs song song
Giả sử ta cần gọi 3 API khác nhau.
Cách 1 – Blocking (mất 3 giây)
import time
import requests
def call_api():
res = requests.get("https://httpbin.org/delay/1")
return res.status_code
start = time.time()
call_api()
call_api()
call_api()
print("Total:", time.time() - start)
Kết quả: khoảng 3 giây
Cách 2 – Async (chỉ ~1 giây)
import httpx
import asyncio
import time
async def call_api_async():
async with httpx.AsyncClient() as client:
r = await client.get("https://httpbin.org/delay/1")
return r.status_code
async def main():
start = time.time()
await asyncio.gather(
call_api_async(),
call_api_async(),
call_api_async()
)
print("Total:", time.time() - start)
asyncio.run(main())
Kết quả: ~1 giây
→ do cả 3 request thực thi cùng lúc.


6. Khi nào nên dùng async trong FastAPI?
✔ Dùng async khi:
- Gọi database (PostgreSQL async driver, MongoDB, Redis…)
- Gọi API ngoài (payment, trading, AI API…)
- Đọc/ghi file
- Xử lý nhiều request đồng thời
- Viết microservices
✘ Không cần async khi:
- Bạn xử lý CPU-bound (ML training, thuật toán nặng)
→ Dùng multiprocessing hoặc background tasks phù hợp hơn.
7. Lưu ý quan trọng khi dùng async trong FastAPI
1. Không mix requests (sync) trong async
Sai:
async def task():
res = requests.get("http://...")
→ requests là thư viện sync → block event loop → mất hết lợi ích async.
Dùng httpx.AsyncClient.
2. ORM sync không tận dụng được async
Dùng SQLAlchemy sync trong async → kém hiệu quả.
Giải pháp:
- SQLAlchemy Async
- Tortoise ORM
- Gino
8. Demo endpoint async thực tế trong FastAPI
import httpx
from fastapi import FastAPI
app = FastAPI()
@app.get("/prices")
async def get_prices():
async with httpx.AsyncClient() as client:
btc = await client.get("https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT")
eth = await client.get("https://api.binance.com/api/v3/ticker/price?symbol=ETHUSDT")
return {
"btc": btc.json(),
"eth": eth.json()
}
Endpoint này xử lý đồng thời nhiều request tới Binance → nhanh hơn cực nhiều so với gọi tuần tự.
9. Minh họa kiến trúc FastAPI dùng Async


10. Kết luận
- Async giúp FastAPI mạnh hơn Flask/Django REST trong các hệ thống I/O-bound
- Tối ưu tài nguyên server, tăng throughput
- Rất phù hợp cho microservices, AI API, trading API, data API
- Là kỹ năng bắt buộc nếu muốn code backend FastAPI một cách hiện đại và chuyên nghiệp
Tham khảo khóa học FastAPI thực chiến
👉 Python API Development với FastAPI
https://www.huongnghiepdulieu.com/python-fastapi/
Khóa học gồm:
- Async & concurrency
- CRUD + PostgreSQL + ORM
- Authentication JWT
- Upload file & xử lý media
- Docker + Deploy
- Project hoàn chỉnh
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| FastAPI đang trở thành tiêu chuẩn mới
Được viết bởi thanhdt vào ngày 01/12/2025 lúc 14:12 | 345 lượt xem
Tại sao FastAPI đang trở thành tiêu chuẩn mới cho Backend Python

FastAPI đã nhanh chóng trở thành một trong những framework Python được ưa chuộng nhất trong thế giới backend hiện đại — đặc biệt ở các dự án AI, Fintech, Data Engineering và Microservices.
Sự kết hợp giữa hiệu năng cao, cú pháp rõ ràng, hỗ trợ async và hệ sinh thái tài liệu tự sinh giúp FastAPI trở thành chuẩn mới cho backend Python.
1. FastAPI là gì? Vì sao nó ra đời?
FastAPI là một web framework hiện đại dùng để xây dựng API với Python 3.7+.
Nó được thiết kế dựa trên 4 nguyên tắc:
- Nhanh → performance gần ngang Node.js & Go
- Dễ viết → cú pháp ngắn, dựa trên Python type hints
- Tin cậy → validate dữ liệu tự động bằng Pydantic
- Tự sinh tài liệu API → Swagger UI & ReDoc sẵn


Chỉ cần chạy server là bạn đã có ngay API docs đẹp, thử request trực tiếp mà không cần viết một dòng frontend nào.
2. So sánh FastAPI – Flask – Django REST
FastAPI – Hiệu năng cao, hướng API-first
- Viết API nhanh, rõ ràng
- Hỗ trợ async/await (I/O bound workload cực mạnh)
- Auto docs cực hợp teamwork
- Rất phù hợp microservices, mobile backend, AI API
Flask – Tối giản, linh hoạt
- Microframework
- Phù hợp web nhỏ, prototype
- Không có async native, không auto docs
Django REST Framework – Full hệ sinh thái
- Đi kèm admin, ORM, middleware
- Phù hợp hệ thống lớn, nhiều module
- Cấu trúc nặng hơn, ít phù hợp microservices

3. Những ưu điểm làm FastAPI trở thành “tiêu chuẩn mới”
(1) Hỗ trợ bất đồng bộ (Async)
FastAPI chạy trên ASGI thay vì WSGI, cho phép xử lý hàng nghìn request đồng thời.
Điều này cực kỳ quan trọng khi backend cần:
- Gọi API ngoài (binance, bitget, service payment…)
- Gọi database nhiều lần
- Upload file
- Xử lý streaming
(2) Type Hints → Kiểm tra dữ liệu tự động
Ví dụ:
class User(BaseModel):
name: str
age: int
Chỉ cần khai báo như vậy:
- FastAPI tự validate input
- Tự tạo docs
- Tự báo lỗi sai kiểu dữ liệu
(3) Tự sinh tài liệu API (Swagger UI / ReDoc)
Đây là lý do nhiều công ty lớn chọn FastAPI.

Trong môi trường enterprise + microservices, API docs là thứ sống còn.
(4) Performance mạnh
Benchmark cho thấy FastAPI nhanh hơn phần lớn framework Python truyền thống.
(5) Rất phù hợp với AI / Fintech / Data API
Các hệ thống này thường:
- I/O-bound (gọi tới model, tới DB, tới external API)
- Cần tốc độ phản hồi nhanh
- Cần nhiều endpoint auto-documented
- Dễ deploy microservice
FastAPI đáp ứng toàn bộ.
4. Demo API đầu tiên – Chạy trong 10 giây
Tạo file main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
async def hello():
return {"message": "Hello, FastAPI!"}
Chạy server:
uvicorn main:app --reload
Mở trình duyệt tại:
- http://127.0.0.1:8000/hello → JSON trả về
- http://127.0.0.1:8000/docs → Swagger UI
- http://127.0.0.1:8000/redoc → ReDoc

5. Kiến trúc Backend chuẩn với FastAPI
Dưới đây là một mô hình kiến trúc phổ biến:



Các layer chính:
- Router Layer – định nghĩa endpoint
- Service Layer – xử lý logic
- Repository Layer – giao tiếp database
- Model Layer (Pydantic + ORM) – validate input & mapping database
- Docs tự sinh – Swagger UI / ReDoc
- Deployment Layer – Docker, Kubernetes, Nginx, Uvicorn
Mô hình này giúp bạn xây dựng được backend cực kỳ sạch, dễ mở rộng.
6. Khi nào nên dùng FastAPI?
✔ Rất phù hợp nếu bạn làm:
- Microservices
- Backend cho mobile app
- API cho AI/ML models
- API trading (Binance, Bitget, MT5)
- Fintech / thanh toán
- Hệ thống phân tán, scale nhiều service
- Backend nhẹ, muốn ship nhanh
✘ Không phù hợp nếu bạn cần:
- Web app HTML truyền thống
- CMS, admin mạnh (Django hợp hơn)
7. Tham khảo khóa học: Python FastAPI Backend
Để học chuyên sâu + thực chiến, bạn có thể xem khóa học tại:
👉 https://www.huongnghiepdulieu.com/python-fastapi/
Khóa học bao gồm:
- Kiến thức FastAPI từ cơ bản đến nâng cao
- Authentication JWT
- Kết nối database PostgreSQL
- API CRUD theo chuẩn enterprise
- Deploy cloud (Docker + Uvicorn + Nginx)
- Project hoàn chỉnh: User → Login → CRUD → Upload → Dashboard
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| 3 loại bot trên sàn Bitget: Bot tự tạo, Bot của sàn và Bot Copy Trade
Được viết bởi thanhdt vào ngày 30/11/2025 lúc 10:15 | 430 lượt xem
3 loại bot trên sàn Bitget: Bot tự tạo, Bot của sàn và Bot Copy Trade
Bitget là một trong những nền tảng hiếm hoi hỗ trợ đầy đủ ba hình thức bot giao dịch: bot tự lập trình, bot có sẵn của sàn và bot sao chép giao dịch. Mỗi loại bot phù hợp cho một kiểu trader khác nhau, với mức độ tự động hóa, rủi ro và tính linh hoạt riêng. Dưới đây là phân tích chi tiết về ba loại bot này.
1. Bot tự tạo (Custom API Bot)

Bot tự tạo là loại bot do người dùng lập trình và kết nối trực tiếp với Bitget thông qua API. Đây là hình thức bot linh hoạt nhất, cho phép bạn xây dựng chiến lược giao dịch riêng theo ý muốn.
Đặc điểm
- Hoạt động dựa trên API Key.
- Tự do xây dựng chiến lược: trend-following, breakout, SMC, AI Trading, scalping.
- Có thể chạy trên server riêng (VPS, Cloud, máy cá nhân).
- Hoàn toàn quyết định toàn bộ logic vào – thoát lệnh.
Ưu điểm
- Tính tự do và linh hoạt cao nhất.
- Tối ưu theo phong cách giao dịch cá nhân.
- Tự động hóa được cả quản lý rủi ro, trailing stop, quản lý vốn.
Hạn chế
- Cần kiến thức lập trình và vận hành server.
- Dễ gặp lỗi API, timeout, bot dừng đột ngột nếu thiết lập sai.
- Không ổn định bằng bot chạy trực tiếp trên hệ thống sàn.
Bot tự tạo phù hợp với người dùng muốn kiểm soát 100% chiến lược và tối ưu hóa lợi nhuận bằng thuật toán riêng.
2. Bot của sàn (Built-in Trading Bots)



Đây là các bot được Bitget cung cấp sẵn và hoạt động trực tiếp trên server nội bộ của sàn. Người dùng không cần code, không cần vận hành server và không lo bot dừng giữa chừng.
Các bot nổi bật của Bitget
- Bot Grid (Spot và Futures)
- AI Grid Bot
- DCA Bot
- Martingale Bot
- Combo Bot
Ưu điểm
- Ổn định cao vì chạy trực tiếp trên hạ tầng Bitget.
- Không bị lỗi API, không bị timeout.
- Dễ sử dụng, phù hợp người mới.
- Có thống kê hiệu suất và mô phỏng thử ngay trong sàn.
Hạn chế
- Chiến lược cố định, không quá linh hoạt.
- Khó tối ưu mức lợi nhuận như bot tự code.
- Một số bot có rủi ro cao nếu dùng sai (Martingale).
Bot của sàn phù hợp với người muốn sự ổn định, đơn giản và không cần phải tự lập trình.
3. Bot Copy Trade (Sao chép giao dịch)



Bot Copy Trade hoạt động bằng cách sao chép lệnh của một trader chuyên nghiệp. Khi trader mở lệnh, tài khoản người sao chép sẽ mở theo. Đây cũng được xem là một dạng bot tự động hóa vì người dùng không cần thao tác gì.
Đặc điểm
- Theo dõi trader thật trên thị trường.
- Lệnh vào – thoát 100% tự động.
- Chọn trader theo thống kê: Winrate, PnL, Drawdown, phong cách giao dịch.
Ưu điểm
- Dễ dàng bắt đầu, không cần kiến thức kỹ thuật.
- Đi theo kinh nghiệm và chiến lược của người khác.
- Có thể chọn nhiều trader để phân tán rủi ro.
Hạn chế
- Rủi ro phụ thuộc hoàn toàn vào trader.
- Kết quả của master không đồng nghĩa bạn cũng có lợi nhuận.
- Một số trader dùng đòn bẩy cao hoặc giao dịch cảm tính.
Bot Copy Trade phù hợp với người ít kinh nghiệm hoặc không có thời gian theo dõi thị trường.
Kết luận
Ba loại bot trên Bitget bổ sung cho nhau, phục vụ ba nhóm người dùng khác nhau:
- Bot tự tạo: tối ưu nhất cho trader có chuyên môn kỹ thuật và muốn chiến lược riêng.
- Bot của sàn: ổn định và dễ sử dụng, phù hợp cho phần lớn người dùng.
- Bot Copy Trade: đơn giản, chỉ cần chọn trader tốt là có thể bắt đầu.
Sự đa dạng này khiến Bitget trở thành một trong số ít sàn cung cấp đầy đủ giải pháp tự động hóa giao dịch cho cả người mới và trader chuyên nghiệp.
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Hướng dẫn thay đổi Position Mode trên Bitget
Được viết bởi thanhdt vào ngày 29/11/2025 lúc 17:57 | 380 lượt xem
Hướng dẫn thay đổi Position Mode trên Bitget
(Cập nhật cho người dùng Bot Auto Trading)

6
1. Position Mode là gì
Bitget hỗ trợ hai chế độ quản lý vị thế khi giao dịch Futures:
One-Way Mode (Chế độ 1 chiều)
- Mỗi cặp chỉ có duy nhất một vị thế (net position).
- Khi mở Long rồi mở Short, lệnh Short sẽ đóng vị thế Long.
- Dùng cho bot trend-following, swing trading, chiến lược một chiều.
- API sử dụng:
positionSide = "net"hoặc không gửi positionSide.
Hedge Mode (Chế độ phòng hộ – 2 chiều)
- Có thể giữ Long và Short cùng lúc trên cùng một cặp.
- Long và Short được quản lý riêng biệt.
- Dùng cho grid bot, market making, hedging.
- API sử dụng:
positionSide = "long"hoặcpositionSide = "short".
Việc đặt sai Position Mode sẽ dẫn đến lỗi API như:40774 – The order type for unilateral position must also be the unilateral position type.
2. Cách kiểm tra Position Mode trên Bitget
Bước 1: Truy cập vào Futures USDT-M
Trên menu chính của Bitget, chọn Futures → USDT-M Futures → Giao dịch.
Bước 2: Mở phần Cài đặt
Nhấp vào biểu tượng bánh răng (Settings) ở góc phải trên của màn hình giao dịch Futures.
Bước 3: Tìm mục “Chế độ vị thế”
Trong phần “Kỳ hạn và vĩnh cửu” sẽ có mục:
- Chế độ vị thế:
- Chế độ tài sản đơn lẻ (One-way)
- Chế độ phòng hộ (Hedge Mode)
Trạng thái hiện tại sẽ được hiển thị tại đây.



6
3. Cách chuyển giữa One-Way và Hedge Mode
Chuyển sang One-Way Mode
- Mở Settings trong giao diện Futures.
- Chọn “Chế độ vị thế”.
- Chọn “Chế độ tài sản đơn lẻ”.
- Xác nhận thay đổi.
One-Way phù hợp khi bot hoặc hệ thống giao dịch của bạn chỉ cần mở một chiều tại một thời điểm và không muốn giữ Long và Short đồng thời.
API sử dụng khi ở One-Way Mode:
positionSide = "net"
hoặc bỏ positionSide
Chuyển sang Hedge Mode
- Mở Settings trong giao diện Futures.
- Chọn “Chế độ vị thế”.
- Chọn “Chế độ phòng hộ”.
- Xác nhận thay đổi.
Hedge Mode phù hợp khi bot cần mở Long và Short độc lập, grid trading hoặc hedging.
API sử dụng khi ở Hedge Mode:
positionSide = "long"
positionSide = "short"
reduceOnly = True/False
4. Vị trí hiển thị Position Mode trên màn hình Futures
Trong giao diện giao dịch Futures, Position Mode nằm gần khu vực đặt lệnh, cạnh các nút:
- Cross / Isolated
- Leverage (x10, x20…)
- Nút mở Long / mở Short
Khi One-way Mode đang bật, thường sẽ hiển thị dưới dạng “Chế độ tài sản đơn lẻ”.
Khi Hedge Mode bật, sẽ hiển thị “Chế độ phòng hộ”.



6
5. Lưu ý quan trọng cho bot Auto Trading
- Sai chế độ → bot đặt lệnh lỗi ngay.
- Một số cặp Futures yêu cầu tối thiểu 5 USDT cho mỗi lệnh (min notional).
- Khi chuyển chế độ, bot cần được cấu hình lại theo đúng Position Mode.
- CCXT cần gửi đúng tham số positionSide, nếu không sẽ gặp lỗi 40774.
6. Kết luận
Việc thiết lập đúng Position Mode rất quan trọng đối với hệ thống giao dịch tự động. One-Way Mode phù hợp cho bot theo xu hướng hoặc tín hiệu một chiều, trong khi Hedge Mode phục vụ cho chiến lược nâng cao như hedging hoặc mở vị thế hai chiều đồng thời.
Sau khi thay đổi Position Mode trên Bitget, hãy đảm bảo bot của bạn gửi đúng tham số trong API tương ứng với chế độ đang sử dụng.
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Pullback trong xu hướng
Được viết bởi thanhdt vào ngày 28/11/2025 lúc 21:50 | 259 lượt xem
Pullback trong xu hướng – Cách vào lệnh tối ưu nhất trong Chiến lược Xu Hướng VIP
Pullback là nhịp điều chỉnh tạm thời ngược xu hướng chính. Đây là điểm vào lệnh có tỉ lệ thắng cao nhất, ít rủi ro nhất và được sử dụng bởi hầu hết các trader chuyên nghiệp. Trong chiến lược Xu Hướng VIP, Pullback đóng vai trò là trọng tâm của việc tối ưu hóa entry.
1. Pullback là gì?


4
Pullback là pha giá điều chỉnh ngược chiều với xu hướng chính trước khi xu hướng tiếp tục.
Đặc điểm:
- Xảy ra khi thị trường đang có xu hướng rõ ràng
- Có biên độ ngắn hơn xu hướng chính
- Thường đi kèm khối lượng thấp
- Là khu vực tạo điểm vào lệnh an toàn và tối ưu
Phân biệt:
- Pullback: Điều chỉnh tạm thời
- Reversal: Đảo chiều toàn bộ xu hướng
Trong VIP Strategy, cần phân biệt chính xác để tránh vào lệnh sai khi xu hướng đã yếu.
2. Dấu hiệu nhận biết Pullback đẹp



Một Pullback chất lượng có các dấu hiệu:
- Xu hướng lớn (H4, D1) vẫn rõ ràng (MA50 > MA200 trong xu hướng tăng).
- Khối lượng giảm trong nhịp hồi.
- Giá chạm các vùng kỹ thuật:
- MA20 / MA50
- Biên dưới kênh tăng
- Hỗ trợ mạnh
- Cấu trúc giá vẫn giữ HH-HL hoặc LH-LL.
- MACD Histogram thu hẹp rồi mở rộng trở lại theo xu hướng chính.
Những Pullback không đẹp:
- Volume tăng mạnh khi điều chỉnh
- MACD cắt về 0 nhiều lần
- Giá phá đáy/đỉnh quan trọng
3. Các loại Pullback phổ biến nhất
3.1 Pullback theo MA



- Xu hướng tăng: giá hồi về MA20 hoặc MA50
- Xu hướng giảm: giá hồi lên MA20 hoặc MA50
Ưu điểm: Dễ nhận diện, xuất hiện thường xuyên.
Nhược điểm: Dễ nhiễu trong thị trường biến động.
3.2 Pullback theo kênh giá


Giá hồi về biên dưới của kênh tăng hoặc biên trên của kênh giảm.
Đây là Pullback có độ chính xác cao vì:
- Xu hướng và biên độ rõ ràng
- Điểm vào thường đẹp và SL chặt
3.3 Pullback theo vùng hỗ trợ – kháng cự


Giá phá vỡ vùng S/R mạnh rồi quay lại kiểm tra (retest).
Phù hợp cho trader thích giao dịch điểm retest rõ ràng.
3.4 Pullback theo Fibo Retracement



Các vùng Fibo đẹp:
- 38.2
- 50.0
- 61.8
Nhiều nhà đầu tư lớn sử dụng cấu trúc Fibo để tìm vùng vào lệnh.
4. Tín hiệu xác nhận trước khi vào lệnh



Trong chiến lược Xu Hướng VIP, không vào lệnh khi chưa có xác nhận.
Các tín hiệu xác nhận:
- Nến engulfing
- Pin bar tại vùng hỗ trợ
- Inside bar breakout
- MACD Histogram mở rộng lại
- Giá phá cấu trúc giảm nhỏ (micro HH trong xu hướng tăng)
5. Cách đặt Stop Loss – Take Profit cho Pullback
Stop Loss
- Dưới đáy Pullback (xu hướng tăng)
- Trên đỉnh Pullback (xu hướng giảm)
- Có thể đặt dưới/ trên MA50 hoặc biên kênh
Take Profit
Hai cách:
- TP cố định: R:R = 1:2 hoặc 1:3
- TP động: Dời SL theo MA20 hoặc MA50
Chiến lược VIP ưu tiên TP động vì xu hướng có thể kéo dài hơn dự đoán.
6. Case Study thực chiến với XAUUSD



- D1: Xu hướng tăng mạnh, MA50 trên MA200
- H4: Hồi nhẹ về MA20
- H1: MACD Histogram thu hẹp rồi mở rộng
- M30: Xuất hiện nến Pin Bar tại vùng pullback
- Entry: Break pin bar
- SL: Dưới đáy pullback
- TP: Dời SL theo MA20
Kết quả: Giá chạy 300 pip theo xu hướng.
7. Những sai lầm làm trader thất bại khi giao dịch Pullback
- Vào lệnh khi xu hướng không rõ.
- Nhầm Pullback với đảo chiều.
- Không chờ tín hiệu xác nhận.
- Đặt SL quá gần khiến dễ bị quét.
- Mở quá nhiều lệnh cùng xu hướng.
8. Kết luận
Pullback là điểm vào lệnh quan trọng nhất trong chiến lược Xu Hướng VIP. Khi kết hợp MA, kênh giá, S/R, Fibo, MACD Histogram và đa khung thời gian, trader có thể đạt tỉ lệ thắng cao, hạn chế nhiễu và tận dụng trọn vẹn các con sóng lớn.
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| Phân tích kỹ thuật – Chiến lược Xu Hướng VIP
Được viết bởi thanhdt vào ngày 28/11/2025 lúc 21:47 | 213 lượt xem
Phân tích kỹ thuật – Chiến lược Xu Hướng VIP



4
Chiến lược Xu Hướng VIP (Trend Following VIP) là phương pháp dựa trên việc xác định và giao dịch theo xu hướng chính của thị trường. Mục tiêu là nắm bắt những con sóng lớn, giảm nhiễu, tối ưu điểm vào – thoát lệnh và quản lý rủi ro theo chuẩn của các trader chuyên nghiệp.
Bài viết này trình bày đầy đủ tư duy, công cụ, quy trình giao dịch và ví dụ thực tế để bạn có thể áp dụng ngay.
1. Triết lý của Chiến lược Xu Hướng VIP
Xu hướng là yếu tố trung tâm của phương pháp. Chiến lược VIP dựa trên ba nguyên tắc:
- Giá luôn di chuyển theo xu hướng.
- Xu hướng mạnh thường kéo dài.
- Nhiệm vụ của trader không phải đoán đỉnh – đáy, mà là đi cùng xu hướng cho đến khi nó đảo chiều.
Điểm đặc biệt của phương pháp này là kết hợp:
- Đa khung thời gian
- Cấu trúc thị trường
- Moving Average
- Kênh giá (Price Channel)
- MACD Histogram
2. Xác định xu hướng bằng MA và cấu trúc thị trường


2.1 MA cho xu hướng tổng quan
- MA50: xu hướng trung hạn
- MA200: xu hướng dài hạn
- Khi MA50 nằm trên MA200: thị trường tăng
- Khi MA50 nằm dưới MA200: thị trường giảm
2.2 Cấu trúc giá
Kết hợp MA với cấu trúc HH-HL hoặc LH-LL giúp lọc nhiễu:
- Xu hướng tăng: Higher High – Higher Low
- Xu hướng giảm: Lower High – Lower Low
MA xác nhận, cấu trúc cho điểm vào.
3. Kênh giá – Công cụ tối ưu điểm vào theo xu hướng



Kênh giá giúp trader:
- Theo dõi biên độ dao động của xu hướng
- Tìm vị trí giá hồi để vào lệnh đẹp
- Tránh vào lệnh giữa vùng nhiễu
Chiến lược Xu Hướng VIP ưu tiên:
- Buy tại đường dưới kênh khi xu hướng tăng
- Sell tại đường trên kênh khi xu hướng giảm
4. MACD Histogram – Xác nhận lực của xu hướng


MACD Histogram giúp:
- Đo động lượng (momentum)
- Xác nhận xu hướng thật hoặc giả
- Nhận diện thời điểm xu hướng yếu dần
Nguyên tắc:
- Histogram mở rộng: xu hướng mạnh
- Histogram thu hẹp: cảnh báo điều chỉnh
- Histogram cắt về 0: khả năng đảo chiều
5. Quy trình giao dịch của Chiến lược Xu Hướng VIP
Quy trình 4 bước:
Bước 1: Xác định xu hướng chính
Dùng MA50 – MA200 + cấu trúc HH/HL hoặc LH/LL.
Bước 2: Xác định vùng vào lệnh
Dựa trên kênh giá, Fibo, vùng hỗ trợ – kháng cự.
Bước 3: Xác nhận lực
Dùng MACD Histogram để xác nhận động lượng.
Bước 4: Quản lý rủi ro
- Stoploss theo đáy/đỉnh gần nhất
- Risk 1:2 hoặc 1:3
- Dời SL theo MA hoặc kênh giá khi xu hướng thuận lợi
6. Ví dụ thực chiến


Ví dụ với XAUUSD:
- MA50 nằm trên MA200 → Xu hướng tăng
- Giá tạo HL tại biên dưới kênh tăng → vị trí vào lệnh
- MACD Histogram mở rộng → động lượng mạnh
- TP đặt tại biên trên kênh hoặc vùng kháng cự
- Dời SL theo MA50
7. Ưu điểm của Chiến lược Xu Hướng VIP
- Ít nhiễu, dễ theo dõi
- Phù hợp Forex, Crypto, Chứng khoán
- Không yêu cầu bắt đỉnh đáy
- Quản lý rủi ro rõ ràng
- Lợi nhuận bền vững từ các con sóng dài
8. Kết luận
Chiến lược Xu Hướng VIP là phương pháp tối ưu cho trader muốn giao dịch theo xu hướng một cách chuyên nghiệp. Việc kết hợp MA, Kênh giá, MACD Histogram và đa khung thời gian giúp giảm nhiễu, tăng xác suất, và tạo ra lợi nhuận ổn định.
Bài viết gần đây
-
Gia Công Bot Auto Trading | Case PyBot PyNhiQuaiBot 2026
Tháng 7 29, 2026 -
Bot Auto Trading XAUUSD MT5 | PyBot PyNhiQuaiBot Hedging Grid
Tháng 7 29, 2026
| FLUTTER FIREBASE AUTHENTICATION
Được viết bởi thanhdt vào ngày 28/11/2025 lúc 21:31 | 204 lượt xem
FLUTTER FIREBASE AUTHENTICATION
Email/Password – Google Sign-In – Apple Sign-In – Token – Secure Storage


Firebase Authentication là giải pháp đăng nhập phổ biến nhất cho ứng dụng Flutter năm 2025. Firebase cung cấp nhiều phương thức:
- Email/Password
- Google Sign-In
- Apple Sign-In
- Phone Authentication
- Anonymous Login
- Custom Token
- Third-party OAuth
Bài này hướng dẫn quy trình đầy đủ từ cài đặt → cấu hình → code thực hiện → quản lý phiên đăng nhập.
1. KHỞI TẠO DỰ ÁN FIREBASE


Các bước:
- Vào console.firebase.google.com
- Tạo Project
- Thêm App Android
- Thêm App iOS
- Tải file:
google-services.json(Android)GoogleService-Info.plist(iOS)
- Kích hoạt Authentication → Sign-in Method
Sau đó thêm dependencies:
firebase_core: ^3.0.0
firebase_auth: ^5.0.0
google_sign_in: ^7.0.0
flutter_secure_storage: ^9.0.0
Khởi tạo Firebase trong main.dart:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
2. EMAIL / PASSWORD AUTH


Đăng ký tài khoản
final credential = await FirebaseAuth.instance
.createUserWithEmailAndPassword(
email: email, password: password);
Đăng nhập
final credential = await FirebaseAuth.instance
.signInWithEmailAndPassword(
email: email, password: password);
Đăng xuất
await FirebaseAuth.instance.signOut();
3. GOOGLE SIGN-IN

Đăng nhập Google cần 2 thư viện:
- firebase_auth
- google_sign_in
Triển khai:
final googleUser = await GoogleSignIn().signIn();
final googleAuth = await googleUser?.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth?.accessToken,
idToken: googleAuth?.idToken,
);
await FirebaseAuth.instance.signInWithCredential(credential);
4. APPLE SIGN-IN (BẮT BUỘC CHO iOS)


Apple yêu cầu apps có Google/Facebook login phải hỗ trợ Sign in with Apple.
Thêm:
sign_in_with_apple: ^6.0.0
Code:
final credential = await SignInWithApple.getAppleIDCredential(
scopes: [AppleIDAuthorizationScopes.email, AppleIDAuthorizationScopes.fullName],
);
final firebaseCredential = OAuthProvider("apple.com").credential(
idToken: credential.identityToken,
accessToken: credential.authorizationCode,
);
await FirebaseAuth.instance.signInWithCredential(firebaseCredential);
5. PHONE AUTHENTICATION


Firebase sẽ gửi mã OTP SMS.
await FirebaseAuth.instance.verifyPhoneNumber(
phoneNumber: phone,
verificationCompleted: (credential) {
FirebaseAuth.instance.signInWithCredential(credential);
},
verificationFailed: (_) {},
codeSent: (id, _) {
verifyId = id;
},
codeAutoRetrievalTimeout: (_) {},
);
Xác nhận OTP:
final credential = PhoneAuthProvider.credential(
verificationId: verifyId,
smsCode: otp,
);
await FirebaseAuth.instance.signInWithCredential(credential);
6. LƯU TOKEN VỚI SECURE STORAGE
FirebaseAuth cung cấp idToken và refreshToken.
Người dùng có thể đăng nhập lại tự động.
final user = FirebaseAuth.instance.currentUser;
final token = await user?.getIdToken();
Lưu vào SecureStorage:
await storage.write(key: "token", value: token);
Đăng nhập lại:
final token = await storage.read(key: "token");
if (token != null) {
// Auto login
}
7. STREAM AUTH STATE (KIỂM TRA NGƯỜI DÙNG ĐANG LOGIN)


FirebaseAuth phát ra stream cập nhật mỗi khi trạng thái user thay đổi.
Sử dụng StreamBuilder:
StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.hasData) return Dashboard();
return LoginScreen();
},
);
8. TÍCH HỢP FIREBASE AUTH VỚI BACKEND RIÊNG
Nếu ứng dụng có backend (NodeJS, Python, Go…), bạn có thể xác minh token Firebase phía server.
Backend nhận token:
Authorization: Bearer <firebase_id_token>
Middleware xác minh:
- NodeJS: firebase-admin
- Flask/FASTAPI: firebase_admin
- Go: firebase-auth
9. XỬ LÝ LỖI & THÔNG ĐIỆP CHUẨN
Các lỗi thường gặp:
- invalid-email
- wrong-password
- user-not-found
- account-exists-with-different-credential
- network-request-failed
Ví dụ:
try {
await FirebaseAuth.instance.signInWithEmailAndPassword(
email: email,
password: password,
);
} on FirebaseAuthException catch (e) {
if (e.code == 'wrong-password') {
message = "Password không đúng";
}
}
10. KẾT HỢP AUTH + CRUD TRONG ỨNG DỤNG
Mô hình chuẩn:
Luồng:
- Đăng nhập → Lấy token Firebase
- Gửi token lên backend
- Backend xác thực
- Flutter gọi API CRUD
- UI cập nhật theo state
11. TỔNG KẾT
Firebase Authentication cung cấp giải pháp đăng nhập nhanh, bảo mật và đa nền tảng cho Flutter, bao gồm:
- Email/Password
- Apple
- OTP Phone
- Custom Token
- State stream realtime
- Secure Storage
Ứng dụng thực tế có thể kết hợp Firebase Auth với Firestore hoặc backend riêng để hoàn thiện chức năng.
THAM CHIẾU – HỌC FLUTTER
Tài liệu và lộ trình Flutter đầy đủ:
https://www.huongnghieplaptrinhflutter.com/