| Top 5 thư viện Python cần biết: Pandas, Numpy, Matplo…

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 23:55 | 32 lượt xem

Top 5 thư viện Python cần biết: Pandas, Numpy, Matplotlib, Yfinance, TA-Lib

Python là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, đặc biệt trong lĩnh vực phân tích dữ liệu và khoa học dữ liệu. Dưới đây là 5 thư viện Python quan trọng mà mọi nhà phân tích dữ liệu cần biết.

1. Pandas

Pandas Logo

Pandas là thư viện mạnh mẽ cho việc thao tác và phân tích dữ liệu. Nó cung cấp các cấu trúc dữ liệu hiệu quả như DataFrame và Series.

Các tính năng chính:

  • Xử lý dữ liệu dạng bảng (DataFrame)
  • Đọc/ghi nhiều định dạng file (CSV, Excel, SQL, etc.)
  • Lọc và chuyển đổi dữ liệu
  • Xử lý dữ liệu thiếu
  • Phân tích thống kê cơ bản

Ví dụ code:

import pandas as pd

# Tạo DataFrame
df = pd.DataFrame({
    'Tên': ['An', 'Bình', 'Cường'],
    'Tuổi': [25, 30, 35],
    'Lương': [1000, 2000, 3000]
})

# Hiển thị thống kê cơ bản
print(df.describe())

2. NumPy

NumPy Logo

NumPy là thư viện cơ bản cho tính toán số học trong Python. Nó cung cấp các mảng đa chiều và các hàm toán học mạnh mẽ.

Các tính năng chính:

  • Mảng đa chiều (ndarray)
  • Tính toán vector hóa
  • Đại số tuyến tính
  • Xử lý tín hiệu số
  • Tích hợp với các thư viện khác

Ví dụ code:

import numpy as np

# Tạo mảng
arr = np.array([1, 2, 3, 4, 5])

# Tính toán vector hóa
print(arr * 2)  # Nhân mỗi phần tử với 2
print(np.mean(arr))  # Tính trung bình

3. Matplotlib

Matplotlib Logo

Matplotlib là thư viện vẽ đồ thị phổ biến nhất trong Python. Nó cho phép tạo các biểu đồ tĩnh, động và tương tác.

Các tính năng chính:

  • Vẽ đồ thị 2D và 3D
  • Tùy chỉnh giao diện đồ thị
  • Hỗ trợ nhiều định dạng xuất
  • Tích hợp với Jupyter Notebook
  • Tương thích với nhiều thư viện khác

Ví dụ code:

import matplotlib.pyplot as plt
import numpy as np

# Tạo dữ liệu
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Vẽ đồ thị
plt.plot(x, y)
plt.title('Đồ thị hàm sin')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show()

4. Yfinance

Yfinance Logo

Yfinance là thư viện cho phép tải dữ liệu tài chính từ Yahoo Finance một cách dễ dàng.

Các tính năng chính:

  • Tải dữ liệu chứng khoán
  • Lấy thông tin công ty
  • Dữ liệu lịch sử giá
  • Thông tin cổ tức
  • Dữ liệu thị trường

Ví dụ code:

import yfinance as yf

# Tải dữ liệu cổ phiếu
msft = yf.Ticker("MSFT")
hist = msft.history(period="1mo")

# Hiển thị dữ liệu
print(hist.head())

5. TA-Lib

TA-Lib Logo

TA-Lib là thư viện mạnh mẽ cho phân tích kỹ thuật trong thị trường tài chính.

Các tính năng chính:

  • Chỉ báo kỹ thuật (RSI, MACD, Bollinger Bands)
  • Mẫu hình nến
  • Phân tích xu hướng
  • Tối ưu hóa hiệu suất
  • Tích hợp với Pandas

Ví dụ code:

import talib
import numpy as np

# Tính RSI
close_prices = np.array([...])  # Dữ liệu giá đóng cửa
rsi = talib.RSI(close_prices)

# Tính MACD
macd, macd_signal, macd_hist = talib.MACD(close_prices)

Kết luận

5 thư viện trên là nền tảng quan trọng cho việc phân tích dữ liệu và tài chính trong Python. Mỗi thư viện đều có thế mạnh riêng:

  • Pandas: Xử lý và phân tích dữ liệu
  • NumPy: Tính toán số học
  • Matplotlib: Trực quan hóa dữ liệu
  • Yfinance: Lấy dữ liệu tài chính
  • TA-Lib: Phân tích kỹ thuật

Việc kết hợp các thư viện này sẽ giúp bạn xây dựng các giải pháp phân tích dữ liệu mạnh mẽ và hiệu quả.

Tài liệu tham khảo

Mở rộng — Cài đặt và pipeline 5 thư viện kết hợp

Trong phân tích tài chính thực tế, 5 thư viện trên hiếm khi đứng riêng lẻ. Chúng phối hợp thành một pipeline: Yfinance lấy dữ liệu → Pandas làm sạch → NumPy tính toán → TA-Lib thêm chỉ báo → Matplotlib vẽ biểu đồ.

# [CÀI ĐẶT - BASH]
# Cài toàn bộ thư viện cần thiết
pip install pandas numpy matplotlib yfinance TA-Lib
# [PIPELINE - PYTHON]
import yfinance as yf
import pandas as pd
import numpy as np
import talib
import matplotlib.pyplot as plt

# 1) Lấy dữ liệu
df = yf.download("AAPL", start="2024-01-01", interval="1d")

# 2) Làm sạch bằng Pandas
df = df[["Open", "High", "Low", "Close", "Volume"]].dropna()

# 3) Tính chỉ báo bằng TA-Lib
df["RSI"] = talib.RSI(df["Close"], timeperiod=14)
df["MA20"] = talib.SMA(df["Close"], timeperiod=20)

# 4) Tính toán bằng NumPy
df["LogReturn"] = np.log(df["Close"] / df["Close"].shift(1))

# 5) Vẽ biểu đồ bằng Matplotlib
plt.figure(figsize=(12, 5))
plt.plot(df.index, df["Close"], label="Close")
plt.plot(df.index, df["MA20"], label="MA20", alpha=0.8)
plt.legend()
plt.title("AAPL - Pipeline Python")
plt.show()

Vì sao pipeline này quan trọng?

Khi bạn đã quen pipeline, việc chuyển từ phân tích một mã sang một danh mục 100 mã chỉ là thêm một vòng lặp. Đây chính là nền tảng của các bot giao dịch định lượng.

Mở rộng — Pandas nâng cao cho trader

Pandas không chỉ đọc CSV. Với trader, hai thao tác quan trọng nhất là rolling window (cửa sổ trượt) và resample (đổi khung thời gian).

# [PANDAS NÂNG CAO - PYTHON]
import pandas as pd

# Rolling: trung bình động và độ lệch chuẩn trượt
df["SMA20"] = df["Close"].rolling(20).mean()
df["Vol20"] = df["Close"].rolling(20).std()

# Resample: đổi dữ liệu 1 phút sang 15 phút
df_15m = df.resample("15min").agg({
    "Open": "first",
    "High": "max",
    "Low": "min",
    "Close": "last",
    "Volume": "sum",
})
Thao tác Phương thức Ứng dụng
Cửa sổ trượt rolling() SMA, volatility, z-score
Đổi khung thời gian resample() 1m → 15m, 1h → 1D
Dịch chuyển shift() Lợi nhuận, tín hiệu trước
Gộp nhóm groupby() Thống kê theo mã/ngày

Mở rộng — NumPy: vector hoá để xử lý nhanh

NumPy cho phép thao tác trên toàn bộ mảng mà không cần vòng lặp, giúp xử lý hàng triệu điểm dữ liệu trong mili giây. Đây là lý do mọi thư viện ML đều xây trên NumPy.

# [NUMPY VECTOR HOÁ - PYTHON]
import numpy as np

prices = np.array([100.0, 101.5, 99.8, 102.3, 103.0])

# vector hoá: không cần for
returns = prices[1:] / prices[:-1] - 1
log_returns = np.log(prices[1:] / prices[:-1])

# thống kê nhanh
mean = np.mean(returns)
vol  = np.std(returns, ddof=1)
print(f"Mean={mean:.4f} Vol={vol:.4f}")

So sánh vòng lặp vs vector hoá

Cách làm 1 triệu điểm Kết luận
Vòng lặp for ~ 0.8 giây Chậm, dễ sai
Vector hoá NumPy ~ 0.01 giây Nhanh gấp 80 lần

Các hàm hay dùng

  • np.mean / np.std: trung bình, độ lệch chuẩn.
  • np.cumsum: tổng tích luỹ, tính equity curve.
  • np.where: điều kiện theo phần tử, tạo tín hiệu.
  • np.corrcoef: ma trận tương quan danh mục.

Mở rộng — Matplotlib cho biểu đồ giao dịch

Một biểu đồ rõ ràng giúp bạn phát hiện lỗi chiến lược nhanh hơn bất kỳ con số nào. Matplotlib hỗ trợ đầy đủ candlestick, chỉ báo và vùng mua bán.

# [BIỂU ĐỒ - PYTHON]
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, figsize=(12, 8))

# Giá + MA
ax1.plot(df.index, df["Close"], label="Close", lw=1)
ax1.plot(df.index, df["MA20"], label="MA20", alpha=0.7)
ax1.legend()

# RSI
ax2.plot(df.index, df["RSI"], color="purple")
ax2.axhline(70, color="red", ls="--")
ax2.axhline(30, color="green", ls="--")
plt.tight_layout()
plt.show()

Mẹo tối ưu biểu đồ

  • Dùng plt.tight_layout() để tránh chồng tiêu đề.
  • Lưu ảnh bằng plt.savefig("chart.png", dpi=150).
  • Vẽ vùng mua/bán bằng axvspan để trực quan.

Mở rộng — Yfinance: lấy dữ liệu thị trường thực tế

Yfinance là cổng dữ liệu nhanh nhất để thực hành: chứng khoán Mỹ, crypto, forex đều lấy được chỉ với vài dòng. Dưới đây là các mẫu hay dùng cho trader.

# [YFINANCE - PYTHON]
import yfinance as yf

# 1) Dữ liệu lịch sử
df = yf.download("BTC-USD", period="1y", interval="1d")
print(df.tail())

# 2) Thông tin công ty
aapl = yf.Ticker("AAPL")
print(aapl.info.get("longName"))
print(aapl.info.get("sector"))

# 3) Danh sách nhiều mã cùng lúc
symbols = ["AAPL", "MSFT", "NVDA"]
data = yf.download(symbols, period="6mo", interval="1d")

Xử lý lỗi khi dữ liệu rỗng

# [KIỂM TRA DỮ LIỆU - PYTHON]
if df.empty:
    print("Khong co du lieu - kiem tra symbol hoac internet")
else:
    df = df.dropna()
    print("So dong:", len(df))

Những trường hợp thường gặp

  • interval="1m" chỉ có 7 ngày gần nhất.
  • Crypto có thể tải khung giờ lớn hơn chứng khoán.
  • Dữ liệu điều chỉnh cổ tức mặc định là bật (auto_adjust).

Mở rộng — TA-Lib: bộ chỉ báo kỹ thuật hoàn chỉnh

TA-Lib cung cấp hơn 150 chỉ báo kỹ thuật được chuẩn hoá, tương tự những gì có trong MT5. Đây là cầu nối tuyệt vời giữa Python và kiến thức MetaTrader.

# [TA-LIB - PYTHON]
import talib
import pandas as pd

# RSI, MACD, Bollinger Bands
df["RSI"]   = talib.RSI(df["Close"], timeperiod=14)
df["MACD"], df["MACD_signal"], df["MACD_hist"] =     talib.MACD(df["Close"], fastperiod=12, slowperiod=26, signalperiod=9)
df["BB_up"], df["BB_mid"], df["BB_low"] =     talib.BBANDS(df["Close"], timeperiod=20, nbdevup=2, nbdevdn=2)

# ATR đo biến động
df["ATR"] = talib.ATR(df["High"], df["Low"], df["Close"], timeperiod=14)
print(df[["Close", "RSI", "ATR"]].tail())

Bảng chỉ báo phổ biến

Chỉ báo Hàm TA-Lib Ứng dụng
RSI RSI() Quá mua / quá bán
MACD MACD() Động lượng xu hướng
Bollinger Bands BBANDS() Độ biến động, breakout
ATR ATR() Đặt SL theo biến động
EMA EMA() Xu hướng ngắn hạn
Stoch STOCH() Xác nhận đảo chiều

Mở rộng — Kết hợp tất cả: backtest mini 30 dòng

Khi đã nắm 5 thư viện, bạn có thể viết một backtest đơn giản: lấy dữ liệu, tính tín hiệu, mô phỏng lệnh và vẽ equity — tất cả trong khoảng 30 dòng.

# [BACKTEST MINI - PYTHON]
import yfinance as yf
import pandas as pd
import numpy as np
import talib

df = yf.download("BTC-USD", period="2y", interval="1d")
df = df[["Close"]].dropna()

# tín hiệu: giá trên SMA20
df["SMA20"] = talib.SMA(df["Close"], timeperiod=20)
df["Signal"] = (df["Close"] > df["SMA20"]).astype(int).shift(1).fillna(0)

# mô phỏng lợi nhuận (chưa tính phí)
df["Return"] = df["Close"].pct_change().fillna(0)
df["Strategy"] = df["Signal"] * df["Return"]
df["Equity"] = (1 + df["Strategy"]).cumprod()

print("Tổng lợi nhuận:", round((df["Equity"].iloc[-1] - 1) * 100, 2), "%")

# vẽ equity
import matplotlib.pyplot as plt
df["Equity"].plot(title="BTC SMA20 Strategy")
plt.show()

Mở rộng ý tưởng

  • Thêm phí và slippage cho sát thực tế.
  • Thêm chỉ báo RSI để lọc tín hiệu.
  • Chạy trên danh mục nhiều mã và gộp kết quả.

Mở rộng — Mẹo hiệu năng và xử lý lỗi thường gặp

Lỗi hay gặp khi cài TA-Lib

Trên Windows, cài TA-Lib có thể lỗi biên dịch. Cách nhanh nhất là dùng bản wheel pre-built hoặc cài qua pip install TA-Lib với phiên bản phù hợp Python.

# [KIỂM TRA CÀI ĐẶT - BASH]
python -c "import talib; print(talib.__version__)"
python -c "import pandas, numpy, matplotlib, yfinance; print('OK')"

Mẹo tăng tốc phân tích

Vấn đề Giải pháp
Dữ liệu lớn, chậm Dùng NumPy vector hoá thay vòng lặp
Nhiều mã lặp lại Tách hàm, dùng groupby
Vẽ chậm Giảm số điểm, dùng figsize hợp lý
Bộ nhớ đầy Chỉ giữ cột cần thiết

Mở rộng — Lộ trình học tiếp theo

Năm thư viện này là nền tảng. Để đi sâu vào giao dịch định lượng, hãy học tiếp: phân tích chuỗi thời gian, machine learning cho tín hiệu, và cách vận hành bot trên VPS.

  1. Thành thạo pipeline 5 thư viện với dữ liệu thật.
  2. Viết lại chiến lược MT5 đơn giản bằng Python.
  3. Backtest có chi phí và so sánh với MT5.
  4. Học API broker (Binance, MT5) để tự động hoá.
  5. Chạy bot 24/7 trên VPS và giám sát Telegram.

Mở rộng — Dự án thực hành với 5 thư viện: phân tích danh mục

Một bài tập thực tế giúp gắn kết cả 5 thư viện: tải dữ liệu nhiều mã, tính tương quan, vẽ heatmap và chọn tỷ trọng đơn giản.

# [PHÂN TÍCH DANH MỤC - PYTHON]
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

symbols = ["AAPL", "MSFT", "NVDA", "BTC-USD"]
data = yf.download(symbols, period="1y", interval="1d")["Close"]
data = data.dropna()

# lợi nhuận và tương quan
returns = data.pct_change().dropna()
corr = returns.corr()

print("Ma trận tương quan:")
print(corr.round(2))

# vẽ heatmap tương quan
plt.imshow(corr, cmap="coolwarm", aspect="auto")
plt.colorbar()
plt.xticks(range(len(symbols)), symbols, rotation=45)
plt.yticks(range(len(symbols)), symbols)
plt.title("Tương quan danh mục")
plt.show()

Đọc kết quả

  • Tương quan gần +1: hai tài sản đi cùng nhau, ít tác dụng đa dạng hoá.
  • Tương quan gần 0 hoặc âm: giúp giảm rủi ro danh mục.
  • BTC thường tương quan thấp với cổ phiếu, nhưng cũng biến động mạnh.

Mở rộng — TA-Lib nâng cao: từ chỉ báo đến tín hiệu giao dịch

Chỉ báo chỉ có ý nghĩa khi biến thành tín hiệu hành động. Dưới đây là ví dụ kết hợp RSI và SMA thành một rule rõ ràng.

# [TÍN HIỆU - PYTHON]
import talib

df["SMA50"] = talib.SMA(df["Close"], timeperiod=50)
df["RSI"] = talib.RSI(df["Close"], timeperiod=14)

# rule: giá trên SMA50 VÀ RSI > 50 -> xu hướng tăng
df["Long"] = (df["Close"] > df["SMA50"]) & (df["RSI"] > 50)
df["Signal"] = df["Long"].astype(int).diff().fillna(0)

# Signal = 1 lúc mua, -1 lúc bán
buys = df[df["Signal"] == 1]
sells = df[df["Signal"] == -1]
print(f"Số tín hiệu mua: {len(buys)}, bán: {len(sells)}")

Lưu ý khi dùng chỉ báo

  • Chỉ báo là công cụ xác nhận, không phải “chén thánh”.
  • Luôn kiểm tra tín hiệu trên nhiều giai đoạn, không chỉ một xu hướng.
  • Kết hợp quản lý vốn mới tạo thành chiến lược hoàn chỉnh.

Mở rộng — Tóm tắt nhanh và các câu hỏi thường gặp

5 thư viện đó đủ để làm bot chưa?

Đủ cho phần phân tích và backtest. Để chạy bot thật cần thêm thư viện API của sàn/broker và hệ thống giám sát.

Nên học sâu thư viện nào trước?

Học Pandas + NumPy trước vì chúng là nền tảng. Matplotlib, Yfinance, TA-Lib học song song khi có dữ liệu thật.

Có thay thế Matplotlib bằng thư viện khác không?

Có thể dùng Plotly (tương tác) hay Seaborn (thống kê), nhưng Matplotlib vẫn là chuẩn nền tảng nên nắm trước.

Làm sao biết mình đã đủ giỏi?

Khi bạn tự xây được pipeline hoàn chỉnh: tải dữ liệu → phân tích → tín hiệu → biểu đồ → kết luận, mà không cần nhìn tài liệu từng bước.

Mở rộng — Pandas cho tín hiệu giao dịch: groupby và merge

Khi làm việc với nhiều mã hoặc nhiều khung thời gian, groupbymerge giúp bạn tổ chức dữ liệu gọn gàng.

# [GROUPBY - PYTHON]
import pandas as pd

# dữ liệu nhiều mã: cột symbol
df = pd.DataFrame({
    "symbol": ["AAPL"] * 3 + ["MSFT"] * 3 + ["NVDA"] * 3,
    "date": ["2026-08-01", "2026-08-02", "2026-08-03"] * 3,
    "close": [180, 182, 181, 320, 322, 325, 120, 118, 121],
})

# tính lợi nhuận từng mã theo ngày
df["ret"] = df.groupby("symbol")["close"].pct_change()
print(df)

# thống kê theo mã
stats = df.groupby("symbol")["ret"].agg(["mean", "std", "count"])
print(stats.round(4))

Nối hai bảng dữ liệu bằng merge

# [MERGE - PYTHON]
prices = pd.DataFrame({
    "symbol": ["AAPL", "MSFT"],
    "close": [181.5, 322.0],
})
info = pd.DataFrame({
    "symbol": ["AAPL", "MSFT"],
    "sector": ["Tech", "Tech"],
})
combined = prices.merge(info, on="symbol")
print(combined)

Khi nào dùng gì?

Nhu cầu Công cụ
Thống kê theo nhóm groupby
Ghép hai bảng theo khóa merge
Sắp xếp lại cấu trúc pivot / melt
Gộp nhiều file concat

Mở rộng — Bài tập tổng hợp 5 thư viện

Hãy tự hoàn thành bài tập dưới đây để kiểm tra toàn diện.

  1. Tải dữ liệu 3 mã cổ phiếu bằng Yfinance trong 1 năm.
  2. Làm sạch bằng Pandas, bỏ dòng thiếu dữ liệu.
  3. Tính SMA20, RSI bằng TA-Lib cho từng mã.
  4. Dùng NumPy tính lợi nhuận log hằng ngày.
  5. Vẽ biểu đồ giá + chỉ báo bằng Matplotlib.
  6. Kết luận mã nào có xu hướng rõ nhất.

Hoàn thành được bài này nghĩa là bạn đã vận hành trơn tru pipeline dữ liệu tài chính bằng Python — nền tảng vững chắc trước khi học backtest và bot giao dịch.

Trader hiện đại và top 5 thư viện

Trader chuyên nghiệp ngày nay không chỉ đọc biểu đồ mà còn dùng top 5 thư viện để tự động hóa phân tích, kiểm tra chiến lược và quản lý rủi ro. Python giúp biến ý tưởng thành công cụ một cách nhanh chóng.

Bài viết trình bày chi tiết về top 5 thư viện, từ thiết lập môi trường đến ví dụ áp dụng thực tế trong quy trình giao dịch hằng ngày.

Thiết lập môi trường nhanh

# Cài đặt các thư viện cần thiết
pip install pandas numpy matplotlib requests
# kiểm tra phiên bản
import pandas as pd
print(pd.__version__)

Sau khi cài đặt, bạn có thể bắt đầu nạp dữ liệu giá, tính chỉ báo và vẽ biểu đồ. Quy trình lặp nhanh giúp bạn thử nghiệm nhiều ý tưởng trong thời gian ngắn.

Các bài toán thường gặp của trader

Bài toán Mô tả Thư viện
Tải giá Lấy OHLCV từ sàn requests, ccxt
Tính chỉ báo SMA, RSI, MACD pandas, ta-lib
Backtest Mô phỏng chiến lược backtrader, vectorbt
Cảnh báo Thông báo tín hiệu telegram, twilio
Quản lý vốn Tính khối lượng numpy

Ví dụ: tính RSI và phát hiện tín hiệu

def rsi(close, period=14):
    delta = close.diff()
    gain = delta.clip(lower=0).rolling(period).mean()
    loss = (-delta.clip(upper=0)).rolling(period).mean()
    rs = gain / loss
    return 100 - (100 / (1 + rs))
df['rsi'] = rsi(df['close'])
print(df[['close', 'rsi']].tail())

RSI trên 70 cho thấy vùng quá mua, dưới 30 là quá bán. Đây là tín hiệu tham khảo, cần kết hợp thêm xu hướng và khối lượng trước khi vào lệnh.

Sai lầm phổ biến và cách tránh

Sai lầm Vì sao nguy hiểm Cách tránh
Dùng dữ liệu demo thay live Không đúng thực tế Kiểm tra dữ liệu thật
Bỏ qua phí & trượt giá Lợi nhuận ảo Mô phỏng chi phí thực
Overfitting tham số Chiến lược không ổn định Giữ tham số ít, hợp lý
Không kiểm soát rủi ro Cháy tài khoản Đặt stop loss mọi lệnh

Câu hỏi thường gặp về top 5 thư viện

Tôi mới bắt đầu, học top 5 thư viện từ đâu?

Bắt đầu từ việc nạp dữ liệu và tính chỉ báo cơ bản. Làm được hai việc này, bạn đã có nền tảng để xây dựng công cụ của riêng mình.

Có cần giỏi toán không?

Chỉ cần kiến thức thống kê cơ bản. Các thư viện đã đóng gói sẵn hầu hết phép tính, bạn chỉ cần hiểu ý nghĩa để dùng đúng.

Dùng bot tự động có an toàn không?

An toàn khi bạn hiểu rõ logic, quản lý rủi ro tốt và giám sát thường xuyên. Chạy demo trước khi dùng tiền thật.

Kết luận

Top 5 Thư Viện giúp trader tiết kiệm thời gian, tăng độ chính xác và giảm căng thẳng. Hãy xây dựng từng bước, kiểm chứng kỹ lưỡng và luôn ưu tiên quản lý rủi ro.

Đặng Trí Thanh

Đặng Trí Thanh

Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL
852 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.