Skip to main content

Hướng dẫn đặt lệnh giao dịch trên Entrade bằng API

· 3 min read

Bài viết này hướng dẫn cách sử dụng Python để gửi lệnh giao dịch chứng khoán trên nền tảng Entrade bằng API.

Bước 1: Đăng nhập để lấy JWT TokenTrading Token

Trước khi có thể đặt lệnh, bạn cần lấy JWT TokenTrading Token. Nếu chưa có, hãy tham khảo bài viết:
Hướng dẫn lấy JWT Token và Trading Token

Bước 2: Cấu trúc API đặt lệnh

API đặt lệnh sử dụng POST request với endpoint: https://services.entrade.com.vn/dnse-order-service/v2/orders

Dưới đây là đoạn mã Python để thực hiện việc đặt lệnh:

import requests
import json

# Thay thế bằng thông tin thực tế của bạn
jwt_token = "your_actual_jwt_token_here"
trading_token = "your_actual_trading_token_here"
account_id = "your_actual_account_id_here"
loan_package_id = 1037 # Thay thế bằng ID gói vay thực tế của bạn

# URL API đặt lệnh
url = 'https://services.entrade.com.vn/dnse-order-service/v2/orders'

# Headers yêu cầu
headers = {
'Authorization': f'Bearer {jwt_token}',
'Content-Type': 'application/json',
'Trading-Token': trading_token
}

# Dữ liệu đặt lệnh
order_data = {
"symbol": "ACB", # Mã chứng khoán
"side": "NB", # NB: Mua, NS: Bán
"orderType": "ATC", # Loại lệnh: ATC, LO, MP, v.v.
"price": 100000, # Giá đặt lệnh (VNĐ)
"quantity": 100, # Số lượng đặt
"loanPackageId": loan_package_id, # ID gói vay (hoặc null nếu không dùng)
"accountNo": account_id # Số tài khoản giao dịch
}

# Gửi yêu cầu đặt lệnh
response = requests.post(url, headers=headers, data=json.dumps(order_data))

# Kiểm tra phản hồi từ API
if response.status_code in [200, 201]:
print("Lệnh đặt thành công:", response.json())
else:
print(f"Lỗi khi đặt lệnh. Mã lỗi: {response.status_code}")
print(response.text)

Dưới đây là đoạn mã Python để thực hiện việc đặt lệnh:

```python
import requests
import json

# Thay thế bằng thông tin thực tế của bạn
jwt_token = "your_actual_jwt_token_here"
trading_token = "your_actual_trading_token_here"
account_id = "your_actual_account_id_here"
loan_package_id = 1037 # Thay thế bằng ID gói vay thực tế của bạn

# URL API đặt lệnh
url = 'https://services.entrade.com.vn/dnse-order-service/v2/orders'

# Headers yêu cầu
headers = {
'Authorization': f'Bearer {jwt_token}',
'Content-Type': 'application/json',
'Trading-Token': trading_token
}

# Dữ liệu đặt lệnh
order_data = {
"symbol": "ACB", # Mã chứng khoán
"side": "NB", # NB: Mua, NS: Bán
"orderType": "ATC", # Loại lệnh: ATC, LO, MP, v.v.
"price": 100000, # Giá đặt lệnh (VNĐ)
"quantity": 100, # Số lượng đặt
"loanPackageId": loan_package_id, # ID gói vay (hoặc null nếu không dùng)
"accountNo": account_id # Số tài khoản giao dịch
}

# Gửi yêu cầu đặt lệnh
response = requests.post(url, headers=headers, data=json.dumps(order_data))

# Kiểm tra phản hồi từ API
if response.status_code in [200, 201]:
print("Lệnh đặt thành công:", response.json())
else:
print(f"Lỗi khi đặt lệnh. Mã lỗi: {response.status_code}")
print(response.text)

Lấy danh sách tài khoản từ API Entrade bằng Python

· 2 min read

Bài viết này hướng dẫn cách sử dụng Python để lấy danh sách tài khoản từ hệ thống Entrade bằng JWT token.

Bước 1: Đăng nhập để lấy JWT Token

Trước khi truy xuất danh sách tài khoản, bạn cần đăng nhập để lấy JWT Token. Xem bài viết hướng dẫn tại: Đăng nhập API Entrade bằng Python.

Bước 2: Gửi yêu cầu GET để lấy danh sách tài khoản

Dưới đây là đoạn mã sử dụng requests để gửi yêu cầu lấy danh sách tài khoản:

import requests

# Thay thế 'your_actual_jwt_token_here' bằng JWT token thực tế từ API đăng nhập.
jwt_token = "your_actual_jwt_token_here"

# Thiết lập headers cho yêu cầu GET
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {jwt_token}'
}

# URL của API lấy danh sách tài khoản
url = 'https://services.entrade.com.vn/dnse-order-service/accounts'

# Gửi yêu cầu GET
response = requests.get(url, headers=headers)

# Biến lưu trữ số tài khoản mặc định
tieukhoan = ''

# Kiểm tra phản hồi từ API
if response.status_code == 200:
# Nếu thành công, lấy ID tài khoản mặc định
tieukhoan = response.json().get('default', {}).get('id', 'Không có tài khoản mặc định')
print(tieukhoan)
print(response.json())
else:
# Nếu thất bại, in mã lỗi
print(f'Không thể lấy danh sách tài khoản. Mã lỗi: {response.status_code}')

Lấy Dữ liệu Giá Cổ phiếu Hàng ngày với ssi_fc_data

· 2 min read

Giới thiệu

Bài viết này hướng dẫn cách sử dụng thư viện ssi_fc_data để lấy dữ liệu giá cổ phiếu hàng ngày và xử lý bằng Pandas.

Mã nguồn

# Import necessary modules
from ssi_fc_data import fc_md_client, model
import config
import pandas as pd # Import Pandas for DataFrame handling
import json

# Create a Market Data Client
client = fc_md_client.MarketDataClient(config)

# Create a request for daily stock price data
req = model.daily_stock_price(symbol, from_date, to_date) # Lấy dữ liệu cho một hoặc nhiều ngày

# Request daily stock price data using the Market Data Client
data_dict = client.daily_stock_price(config, req)

print(type(data_dict))
print(data_dict)

Giải thích

  1. Import thư viện cần thiết

    • ssi_fc_data: Thư viện để truy xuất dữ liệu chứng khoán từ SSI.
    • pandas: Được sử dụng để xử lý dữ liệu dạng bảng.
    • json: Hỗ trợ xử lý dữ liệu JSON trả về từ API.
  2. Khởi tạo client

    • MarketDataClient(config): Tạo client để kết nối với dữ liệu thị trường.
  3. Tạo yêu cầu lấy dữ liệu giá cổ phiếu hàng ngày

    • model.daily_stock_price(symbol, from_date, to_date): Xây dựng yêu cầu lấy dữ liệu.
  4. Gửi yêu cầu và nhận dữ liệu

    • client.daily_stock_price(config, req): Gửi yêu cầu đến API và nhận dữ liệu.
    • Kiểm tra kiểu dữ liệu trả về (print(type(data_dict))).
    • In dữ liệu nhận được (print(data_dict)).

Cải tiến

Chuyển đổi dữ liệu sang Pandas DataFrame

# Convert JSON data to Pandas DataFrame
df = pd.DataFrame(data_dict)
print(df.head())

Xử lý lỗi khi gửi yêu cầu API

try:
data_dict = client.daily_stock_price(config, req)
df = pd.DataFrame(data_dict)
print(df.head())
except Exception as e:
print("Lỗi khi lấy dữ liệu:", str(e))

Lưu dữ liệu vào CSV để phân tích sau

df.to_csv("stock_data.csv", index=False)
print("Dữ liệu đã được lưu vào stock_data.csv")

📌 Tham khảo thêm: Tài liệu ssi_fc_data

Lấy Dữ liệu OHLC từ MetaTrader 5 bằng Python

· 2 min read

Giới thiệu

Bài viết này hướng dẫn cách sử dụng Python để lấy dữ liệu OHLC từ nền tảng MetaTrader 5 (MT5) bằng thư viện MetaTrader5.

Mã nguồn

import MetaTrader5 as mt5
from datetime import datetime
import pandas as pd

# Kết nối tới MetaTrader 5
if not mt5.initialize():
print("Khởi tạo MT5 không thành công")
mt5.shutdown()

symbol = 'EURUSD.sml'
from_date_str = datetime.strptime('2025-03-01', '%Y-%m-%d')
to_date_str = datetime.strptime('2025-03-05', '%Y-%m-%d')
timeframe = mt5.TIMEFRAME_M1

# Lấy dữ liệu OHLC cho cặp tiền symbol trong khoảng thời gian đã xác định
ohlc_data = mt5.copy_rates_range(symbol, timeframe, from_date_str, to_date_str)
print('OHLC_Data')
print(ohlc_data)

Giải thích

  1. Khởi tạo kết nối MT5

    • mt5.initialize(): Kết nối với nền tảng MetaTrader 5.
    • Nếu không thành công, chương trình sẽ thoát.
  2. Xác định tham số

    • symbol: Cặp tiền tệ cần lấy dữ liệu (EURUSD.sml).
    • from_date_strto_date_str: Khoảng thời gian cần lấy dữ liệu.
    • timeframe: Khung thời gian (M1 - 1 phút).
  3. Lấy dữ liệu OHLC

    • mt5.copy_rates_range(symbol, timeframe, from_date_str, to_date_str): Truy vấn dữ liệu giá.
    • In dữ liệu nhận được.

Cải tiến

Chuyển đổi dữ liệu sang Pandas DataFrame

if ohlc_data is not None and len(ohlc_data) > 0:
df = pd.DataFrame(ohlc_data)
print(df.head())
else:
print("Không có dữ liệu OHLC")

Xử lý lỗi khi lấy dữ liệu

if ohlc_data is None:
print("Lỗi: Không thể lấy dữ liệu OHLC từ MT5")

Lưu dữ liệu vào CSV để phân tích sau

df.to_csv("ohlc_data.csv", index=False)
print("Dữ liệu đã được lưu vào ohlc_data.csv")

📌 Tham khảo thêm: Tài liệu MetaTrader5 Python API

Lấy mã OTP từ Email bằng API Entrade

· 2 min read

Bài viết này hướng dẫn cách sử dụng Python để lấy mã OTP từ email thông qua hệ thống Entrade bằng JWT token.

Bước 1: Đăng nhập để lấy JWT Token

Trước khi truy xuất mã OTP, bạn cần đăng nhập để lấy JWT Token. Xem bài viết hướng dẫn tại: Đăng nhập API Entrade bằng Python.

Bước 2: Gửi yêu cầu GET để lấy mã OTP từ email

Dưới đây là đoạn mã sử dụng requests để gửi yêu cầu lấy mã OTP:

import requests

# Thay thế bằng JWT token thực tế từ API đăng nhập
jwt_token = "your_actual_jwt_token_here"

# URL của API lấy mã OTP từ email
url = 'https://services.entrade.com.vn/dnse-auth-service/api/email-otp'

# Thiết lập headers cho yêu cầu GET
headers = {
'Authorization': f'Bearer {jwt_token}',
'Content-Type': 'application/json'
}

# Gửi yêu cầu GET
response = requests.get(url, headers=headers)

# Kiểm tra phản hồi từ API
if response.status_code == 200:
# Nếu thành công, hiển thị thông báo hoặc in dữ liệu OTP (nếu có)
print('Lấy OTP từ Email thành công')
# print(response.json()) # Uncomment nếu muốn xem nội dung JSON trả về
else:
# Nếu thất bại, in mã lỗi và nội dung lỗi
print(f'Không thể lấy OTP từ Email. Mã lỗi: {response.status_code}')
print(response.text)

Lấy số dư tài khoản từ API Entrade bằng Python

· 2 min read

Bài viết này hướng dẫn cách sử dụng Python để lấy số dư tài khoản từ hệ thống Entrade bằng JWT token.

Bước 1: Đăng nhập và lấy danh sách tài khoản

Trước khi lấy số dư tài khoản, bạn cần:

  1. Đăng nhập để lấy JWT TokenXem hướng dẫn.
  2. Lấy danh sách tài khoản và chọn id tài khoản mặc định – Xem hướng dẫn.

Bước 2: Gửi yêu cầu GET để lấy số dư tài khoản

Dưới đây là đoạn mã sử dụng requests để gửi yêu cầu lấy số dư tài khoản:

import requests

# Thay thế bằng thông tin tài khoản và token thực tế
account = "your_account_id_here" # ID tài khoản lấy từ API danh sách tài khoản
jwt_token = "your_actual_jwt_token_here"

# Thiết lập headers cho yêu cầu GET
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {jwt_token}'
}

# URL của API lấy số dư tài khoản
url = f'https://services.entrade.com.vn/dnse-order-service/account-balances/{account}'

# Gửi yêu cầu GET
response = requests.get(url, headers=headers)

# Kiểm tra phản hồi từ API
if response.status_code == 200:
# Nếu thành công, in nội dung JSON trả về
print(response.json())
else:
# Nếu thất bại, in mã lỗi
print(f'Không thể lấy số dư tài khoản. Mã lỗi: {response.status_code}')

Lấy thông tin gói vay từ API Entrade

· 2 min read

Bài viết này hướng dẫn cách sử dụng Python để lấy danh sách gói vay từ hệ thống Entrade bằng JWT token.

Bước 1: Đăng nhập để lấy JWT Token

Trước khi truy xuất gói vay, bạn cần đăng nhập để lấy JWT Token. Xem bài viết hướng dẫn tại: Đăng nhập API Entrade bằng Python.

Bước 2: Lấy danh sách gói vay từ API

Dưới đây là đoạn mã sử dụng requests để gửi yêu cầu lấy danh sách gói vay:

import requests

# Thay thế bằng mã tài khoản thực tế của bạn
account_id = "your_actual_account_id_here"

# Thay thế bằng JWT token hợp lệ
jwt_token = "your_actual_jwt_token_here"

# URL của API lấy danh sách gói vay
url = f'https://services.entrade.com.vn/dnse-order-service/accounts/{account_id}/loan-packages'

# Thiết lập headers với JWT token
headers = {
'Authorization': f'Bearer {jwt_token}'
}

# Gửi yêu cầu GET để lấy danh sách gói vay
response = requests.get(url, headers=headers)

# Biến lưu ID gói vay đầu tiên
loan_package_id = None

# Kiểm tra phản hồi từ API
if response.status_code == 200:
# Nếu thành công, lấy danh sách gói vay từ phản hồi JSON
loan_packages = response.json()
print(loan_packages)

# Giả sử loan_packages là một danh sách và chúng ta lấy ID của gói vay đầu tiên
if loan_packages and 'loanPackages' in loan_packages:
loan_package_id = loan_packages['loanPackages'][0]['id']
print('Loan Package ID:', loan_package_id)
else:
print('Dữ liệu gói vay không đúng định dạng mong đợi.')

else:
# Nếu thất bại, in mã lỗi và nội dung lỗi
print(f'Không thể lấy danh sách gói vay. Mã lỗi: {response.status_code}')
print(response.text)

Lấy thông tin người dùng từ API Entrade bằng Python

· One min read

Bài viết này hướng dẫn cách sử dụng Python để gọi API lấy thông tin người dùng từ hệ thống Entrade bằng cách sử dụng JWT token.

Bước 1: Đăng nhập để lấy JWT Token

Trước khi truy xuất thông tin người dùng, bạn cần đăng nhập để lấy JWT Token. Xem bài viết hướng dẫn tại: Đăng nhập API Entrade bằng Python.

Bước 2: Gửi yêu cầu GET để lấy thông tin người dùng

Dưới đây là đoạn mã sử dụng requests để gửi yêu cầu lấy thông tin người dùng:

import requests

# Thay thế 'your_actual_jwt_token_here' bằng JWT token thực tế từ API đăng nhập.
jwt_token = "your_actual_jwt_token_here"

# Thiết lập headers cho yêu cầu GET
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {jwt_token}'
}

# URL của API lấy thông tin người dùng
url = 'https://services.entrade.com.vn/dnse-user-service/api/me'

# Gửi yêu cầu GET
response = requests.get(url, headers=headers)

# Kiểm tra phản hồi từ API
if response.status_code == 200:
# Nếu thành công, in nội dung JSON trả về
print(response.json())
else:
# Nếu thất bại, in mã lỗi
print(f'Không thể lấy thông tin người dùng: {response.status_code}')

Lấy Trading Token từ API Entrade

· 2 min read

Bài viết này hướng dẫn cách sử dụng Python để lấy Trading Token từ hệ thống Entrade bằng JWT token và mã OTP.

Bước 1: Đăng nhập để lấy JWT Token

Trước khi lấy Trading Token, bạn cần đăng nhập để lấy JWT Token. Xem bài viết hướng dẫn tại: Đăng nhập API Entrade bằng Python.

Bước 2: Lấy mã OTP từ email

Bạn cần lấy mã OTP từ email trước khi có thể yêu cầu Trading Token. Hướng dẫn chi tiết tại: Lấy mã OTP từ Email bằng API Entrade.

Bước 3: Gửi yêu cầu POST để lấy Trading Token

Dưới đây là đoạn mã sử dụng requests để gửi yêu cầu lấy Trading Token:

import requests

# Thay thế bằng JWT token thực tế từ API đăng nhập
jwt_token = "your_actual_jwt_token_here"

# Thay thế bằng mã OTP thực tế từ email
otp_from_email = "your_actual_otp_here"

# URL của API lấy Trading Token
url = 'https://services.entrade.com.vn/dnse-order-service/trading-token'

# Thiết lập headers cho yêu cầu POST
headers = {
'Authorization': f'Bearer {jwt_token}',
'Content-Type': 'application/json',
'otp': otp_from_email
}

# Payload rỗng như trong hướng dẫn API
payload = {}

# Gửi yêu cầu POST
response = requests.post(url, headers=headers, json=payload)

# Kiểm tra phản hồi từ API
trading_token = ''
if response.status_code == 200:
# Nếu thành công, lấy Trading Token từ phản hồi JSON
trading_token = response.json().get('tradingToken', '')
print('Trading Token:', trading_token)
else:
# Nếu thất bại, in mã lỗi và nội dung lỗi
print(f'Không thể lấy Trading Token. Mã lỗi: {response.status_code}')
print(response.text)

Xác thực Token với ssi_fc_data

· 2 min read

Giới thiệu

Bài viết này hướng dẫn cách xác thực token khi sử dụng thư viện ssi_fc_data để lấy dữ liệu thị trường từ fc_md_client.

Mã nguồn

from ssi_fc_data import fc_md_client, model
import config

# Khởi tạo client từ fc_md_client
client = fc_md_client.MarketDataClient(config)

# Hàm xác thực token với xử lý lỗi
def Xacthuc_token():
try:
token = model.accessToken(config.consumerID, config.consumerSecret)
response = client.access_token(token)
print("Token xác thực:", response)
except Exception as e:
print("Lỗi xác thực token:", str(e))

# Gọi hàm
Xacthuc_token()

Giải thích

  1. Import thư viện cần thiết

    • ssi_fc_data: Thư viện để lấy dữ liệu chứng khoán SSI.
    • fc_md_client: Module kết nối dữ liệu thị trường.
    • model: Chứa phương thức xác thực.
    • config: Chứa consumerIDconsumerSecret để xác thực.
  2. Khởi tạo client

    • MarketDataClient(config): Tạo client để truy cập dữ liệu thị trường.
  3. Hàm xác thực token

    • model.accessToken(config.consumerID, config.consumerSecret): Lấy token.
    • client.access_token(token): Xác thực token với server.
    • In kết quả hoặc thông báo lỗi nếu có.
  4. Gọi hàm

    • Xacthuc_token(): Chạy quy trình xác thực.

Cải tiến

Xử lý lỗi: Tránh lỗi khi config sai hoặc server lỗi. ✅ Thông báo rõ ràng: Báo lỗi cụ thể nếu xác thực thất bại. ✅ Dễ bảo trì hơn: Code có cấu trúc rõ ràng.


📌 Tham khảo thêm: Tài liệu ssi_fc_data