Skip to main content

7 posts tagged with "api"

View All Tags

Gửi Lệnh Đặt Mua Cổ Phiếu qua API với requests

· 2 min read

Giới thiệu

Bài viết này hướng dẫn cách gửi lệnh đặt mua cổ phiếu bằng Python thông qua API sử dụng thư viện requests.

Mã nguồn

import requests

# Base URL for the API
base_url = "http://127.0.0.1:8000/newOrder" # Endpoint

# Parameters for the API request
params = {
"instrumentID": "VCB",
"market": "VN",
"buySell": "B",
"orderType": "ATO",
"price": 0,
"quantity": 100,
"account": "2654251",
"stopOrder": "false",
"stopPrice": 0,
"stopStep": 0,
"lossStep": 0,
"profitStep": 0,
"deviceId": "vEthernet (Default Switch):00-15-5D-C2-E5-EE|Wi-Fi:18-CC-18-C9-CB-6A",
"userAgent": "Python/3.11.6(Windows-10-10.0.19045-SP0); ssi-fctrading/2.4.2"
}

# Sending the GET request to the API
response = requests.get(base_url, params=params)

# Print the raw response
print(response)

# Handling the response
if response.status_code == 200:
data = response.json()["data"]
print(f"The stock order for account 2654251 is {data}")
else:
print(f"Error connecting to API: {response.status_code}")

Giải thích

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

    • requests: Thư viện gửi HTTP request.
  2. Cấu hình API

    • base_url: Địa chỉ API xử lý lệnh đặt mua.
    • params: Các tham số truyền vào API, bao gồm mã chứng khoán, số lượng, loại lệnh, tài khoản giao dịch, v.v.
  3. Gửi yêu cầu API

    • requests.get(base_url, params=params): Gửi yêu cầu GET với các tham số đặt lệnh.
  4. Xử lý phản hồi

    • Nếu thành công (status_code == 200), lấy dữ liệu JSON và hiển thị kết quả.
    • Nếu thất bại, in thông báo lỗi với mã lỗi HTTP.

Cải tiến

Xử lý lỗi chi tiết hơn

try:
response = requests.get(base_url, params=params)
response.raise_for_status()
data = response.json().get("data", {})
print(f"Stock order response: {data}")
except requests.exceptions.RequestException as e:
print(f"API request error: {e}")

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

import pandas as pd

df = pd.DataFrame([data])
print(df.head())

Gửi lệnh bằng phương thức POST thay vì GET

response = requests.post(base_url, json=params)

📌 Tham khảo thêm: Tài liệu API đặt lệnh giao dịch

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

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

Tự Học Flutter | Kết Hợp Flutter Với Backend API

· 2 min read

1. Cài Đặt Dependencies

dependencies:
http: ^1.1.0
dio: ^5.4.0

2. Thiết Lập HTTP Client

  • Sử dụng http package hoặc dio để thực hiện các request API
  • Cấu hình:
    • Base URL
    • Headers (Authentication, Content-Type)
    • Timeout
    • Interceptors

3. Tạo Model Classes

class User {
final int id;
final String name;
final String email;

User({
required this.id,
required this.name,
required this.email,
});

factory User.fromJson(Map<String, dynamic> json) {
return User(
id: json['id'],
name: json['name'],
email: json['email'],
);
}
}

4. Xây Dựng API Service

class ApiService {
final client = http.Client();
final baseUrl = 'https://api.example.com';

Future<List<User>> getUsers() async {
try {
final response = await client.get(
Uri.parse('$baseUrl/users'),
headers: {'Authorization': 'Bearer token'},
);

if (response.statusCode == 200) {
final List<dynamic> data = json.decode(response.body);
return data.map((json) => User.fromJson(json)).toList();
} else {
throw Exception('Lỗi lấy dữ liệu: ${response.statusCode}');
}
} catch (e) {
throw Exception('Lỗi kết nối: $e');
}
}
}

5. State Management

class UserProvider extends ChangeNotifier {
final _apiService = ApiService();
List<User> _users = [];
bool _loading = false;
String? _error;

Future<void> fetchUsers() async {
try {
_loading = true;
notifyListeners();

_users = await _apiService.getUsers();
_error = null;
} catch (e) {
_error = e.toString();
} finally {
_loading = false;
notifyListeners();
}
}
}

6. Sử Dụng Trong Widget

class UsersScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer<UserProvider>(
builder: (context, provider, child) {
if (provider._loading) {
return CircularProgressIndicator();
}

if (provider._error != null) {
return Text('Lỗi: ${provider._error}');
}

return ListView.builder(
itemCount: provider._users.length,
itemBuilder: (context, index) {
final user = provider._users[index];
return ListTile(
title: Text(user.name),
subtitle: Text(user.email),
);
},
);
},
);
}
}

7. Xử Lý Lỗi

  • Implement try-catch blocks
  • Hiển thị thông báo lỗi phù hợp
  • Có cơ chế retry khi request thất bại
  • Xử lý các trường hợp:
    • Lỗi kết nối mạng
    • Lỗi server (500)
    • Lỗi authentication (401, 403)
    • Lỗi validation (400)

8. Best Practices

  • Sử dụng base client để tái sử dụng code
  • Implement caching mechanism
  • Logging và monitoring
  • Unit testing cho API calls
  • Sử dụng các pattern như Repository Pattern
  • Tách biệt logic business và UI

Giới thiệu Lập trình Flutter đa nền tảng Full Stack

· 3 min read

Giới thiệu Lập trình Flutter đa nền tảng Full Stack

Video


Giới thiệu

Trong video này, Thanh sẽ giới thiệu về khóa học Lập trình Flutter đa nền tảng Full Stack. Khóa học này sẽ giúp các bạn nắm vững kiến thức từ frontend đến backend, bao gồm cả việc tích hợp AI vào ứng dụng. Đây là cơ hội để các bạn trở thành một lập trình viên Full Stack chuyên nghiệp.


Nội dung khóa học

1. Level 1: UI/UX cơ bản

  • Thời lượng: 15 buổi.
  • Nội dung:
    • Học cách xây dựng giao diện người dùng (UI) cơ bản với Flutter.
    • Làm quen với ngôn ngữ Dart.
    • Tạo các giao diện hấp dẫn và thân thiện với người dùng.

2. Level 2: UI/UX nâng cao và Database

  • Thời lượng: 15 buổi.
  • Nội dung:
    • Xử lý toàn diện UI trên Flutter.
    • Tích hợp các loại cơ sở dữ liệu như SQL Server, MySQL, Firebase, và MongoDB.
    • Quản lý và lưu trữ dữ liệu trong ứng dụng.

3. Level 3: Backend, API và AI

  • Thời lượng: 25 buổi.
  • Nội dung:
    • Xây dựng backend bằng Python.
    • Tích hợp AI vào ứng dụng, bao gồm chatbot và các mô hình dự đoán (ví dụ: dự đoán doanh thu, giá cổ phiếu).
    • Học cách kết hợp kiến thức từ Level 1 và Level 2 để tạo ứng dụng hoàn chỉnh.

Demo tạo API cơ bản trên Python

1. Cài đặt công cụ

  • SQL Server: Cài đặt và cấu hình cơ sở dữ liệu.
  • Visual Studio Code: Công cụ lập trình chính.
  • Thư viện Flask: Cài đặt thư viện Flask để tạo API.

2. Tạo API đơn giản

  • Kết nối cơ sở dữ liệu: Sử dụng Flask để kết nối với SQL Server.
  • Tạo bảng và chèn dữ liệu: Tạo bảng user và chèn dữ liệu mẫu.
  • Chạy API: Sử dụng Postman để kiểm tra API.

3. Kết quả

  • API được tạo thành công và có thể thêm, lấy dữ liệu từ cơ sở dữ liệu.

Lời kết

Khóa học Lập trình Flutter đa nền tảng Full Stack sẽ giúp các bạn nắm vững kiến thức từ cơ bản đến nâng cao, từ frontend đến backend, và cả việc tích hợp AI vào ứng dụng. Hãy đăng ký khóa học để bắt đầu hành trình trở thành một lập trình viên Full Stack chuyên nghiệp.

👉 Xem video hướng dẫn chi tiết

Webinar 16.2: Phân tích định lượng, Backend API, xây dựng Bot cho giao dịch đầu tư tài chính

· 4 min read

Webinar 16.2: Phân tích định lượng, Backend API, xây dựng Bot cho giao dịch đầu tư tài chính

Video


Giới thiệu

Buổi webinar với chủ đề "Phân tích định lượng, Backend API, xây dựng Bot cho giao dịch đầu tư tài chính" đã diễn ra với nhiều nội dung hấp dẫn và thực tế. Tiến sĩ Đặng Anh Tuấn đã chia sẻ những kiến thức quý báu và kinh nghiệm thực tiễn trong lĩnh vực phân tích giao dịch định lượng.


Nội dung chính

1. Phân tích định lượng trong giao dịch tài chính

  • Quy trình phân tích:

    • Bước 1: Phân tích kỹ thuật.
    • Bước 2: Phân tích cơ bản.
    • Bước 3: Áp dụng các thuật toán học máy.
    • Bước 4: Giao dịch tự động (Bot trading).
  • Phân tích kỹ thuật:

    • Sử dụng các chỉ báo kỹ thuật như đường trung bình động (MA), RSI, MACD.
    • Dự báo giá dựa trên biểu đồ nến và các mô hình giá.
  • Phân tích cơ bản:

    • Đánh giá các yếu tố kinh tế vĩ mô, tình hình doanh nghiệp, và các yếu tố ảnh hưởng đến thị trường.
  • Thuật toán học máy:

    • Sử dụng các mô hình như mạng neuron nhân tạo (ANN), học sâu (Deep Learning), và học tăng cường (Reinforcement Learning).
    • Huấn luyện mô hình trên dữ liệu lịch sử để dự báo giá và tối ưu hóa chiến lược giao dịch.

2. Tích hợp Backend và API

  • Backend với Python:

    • Sử dụng Python để xây dựng backend, xử lý dữ liệu và cung cấp API.
    • Các thư viện phổ biến: Flask, FastAPI, Pandas, NumPy, Scikit-learn.
  • API trong giao dịch tự động:

    • API cho phép kết nối giữa ứng dụng giao dịch và sàn giao dịch.
    • Lấy dữ liệu thời gian thực (Real-time data) và thực hiện giao dịch tự động.
  • Demo tạo API đơn giản:

    • Tạo API bằng Flask để kết nối với cơ sở dữ liệu và trả về dữ liệu dạng JSON.
    • Sử dụng Postman để kiểm tra API.

3. Xây dựng Bot giao dịch tự động

  • Bot giao dịch:

    • Bot tự động thực hiện giao dịch dựa trên các tín hiệu từ phân tích kỹ thuật và học máy.
    • Tích hợp API để lấy dữ liệu thời gian thực và thực hiện lệnh giao dịch.
  • Chiến lược giao dịch:

    • Quét thị trường để tìm các mã cổ phiếu tiềm năng.
    • Đặt lệnh mua/bán dựa trên các điều kiện đã được lập trình sẵn.
  • Xử lý độ trễ:

    • Độ trễ trong giao dịch tự động có thể ảnh hưởng đến hiệu suất.
    • Giải pháp: Sử dụng các kỹ thuật như Slip (đợi vài giây giữa các lệnh) để tránh bị chặn bởi sàn giao dịch.

4. Thách thức và giải pháp

  • Thách thức:

    • Dữ liệu thời gian thực không phải lúc nào cũng chính xác.
    • Rủi ro từ các yếu tố bên ngoài như biến động chính trị, kinh tế.
    • Độ trễ trong giao dịch tự động.
  • Giải pháp:

    • Sử dụng các thuật toán học máy để cải thiện độ chính xác của dự báo.
    • Tối ưu hóa chiến lược giao dịch để giảm thiểu rủi ro.
    • Sử dụng các nguồn dữ liệu đáng tin cậy và cập nhật thường xuyên.

Kết luận

  • Phân tích định lượnggiao dịch tự động là những công cụ mạnh mẽ giúp nhà đầu tư tối ưu hóa chiến lược và giảm thiểu rủi ro.
  • Backend và API đóng vai trò quan trọng trong việc kết nối và xử lý dữ liệu thời gian thực.
  • Bot giao dịch tự động giúp tăng hiệu suất và giảm thiểu sai sót trong quá trình giao dịch.

Tài liệu tham khảo

Webinar: Lập trình Flutter tích hợp Backend và API

· 3 min read

Webinar: Lập trình Flutter tích hợp Backend và API

Video


Giới thiệu

Buổi webinar với chủ đề "Lập trình Flutter tích hợp Backend và API" đã diễn ra với nhiều nội dung hấp dẫn và thực tế. Flutter là một framework phát triển ứng dụng di động đa nền tảng, được đánh giá cao về khả năng tạo giao diện đẹp và mượt mà. Backend và API là hai thành phần quan trọng trong việc xử lý dữ liệu và logic nghiệp vụ phía server.


Nội dung chính

1. Khái niệm Backend và API

  • Backend: Phần phía server của ứng dụng, bao gồm máy chủ, cơ sở dữ liệu và các ứng dụng xử lý logic nghiệp vụ.
    • Chức năng chính:
      • Quản lý dữ liệu.
      • Xử lý logic nghiệp vụ.
      • Xác thực và phân quyền.
      • Giao tiếp với frontend thông qua API.
  • API: Giao diện lập trình ứng dụng (Application Programming Interface), là tập hợp các quy tắc và giao thức cho phép các ứng dụng giao tiếp với nhau.
    • Vai trò:
      • Kết nối hệ thống.
      • Truy cập dịch vụ.
      • Trực quan hóa dữ liệu.

2. Tích hợp Backend và API với Flutter

  • Python làm Backend: Python được sử dụng để xây dựng backend, xử lý dữ liệu và cung cấp API.
  • Flutter làm Frontend: Flutter được sử dụng để xây dựng giao diện người dùng và kết nối với backend thông qua API.
  • Demo thực tế:
    • Tạo API đơn giản bằng Python.
    • Kết nối API với ứng dụng Flutter.
    • Hiển thị dữ liệu từ API lên giao diện Flutter.

3. Thực hành và Demo

  • Tạo API đơn giản:
    • Sử dụng Python và thư viện Flask để tạo API.
    • API trả về dữ liệu dạng JSON.
  • Kết nối API với Flutter:
    • Sử dụng package http trong Flutter để gọi API.
    • Hiển thị dữ liệu từ API lên giao diện Flutter.
  • Demo ứng dụng thực tế:
    • Ứng dụng hiển thị dữ liệu chứng khoán từ API.
    • Ứng dụng dự báo giá cổ phiếu sử dụng mô hình học máy.

4. Lợi ích của việc tích hợp Backend và API với Flutter

  • Hiệu suất cao: Flutter có khả năng hiển thị giao diện mượt mà và nhanh chóng.
  • Dễ dàng tích hợp: API giúp kết nối dễ dàng giữa frontend và backend.
  • Linh hoạt: Có thể sử dụng nhiều ngôn ngữ lập trình để xây dựng backend (Python, Node.js, Java, ...).

Kết luận

  • Flutter là một công cụ mạnh mẽ để phát triển ứng dụng di động đa nền tảng.
  • Backend và API đóng vai trò quan trọng trong việc xử lý dữ liệu và logic nghiệp vụ.
  • Python là một lựa chọn tốt để xây dựng backend và cung cấp API cho ứng dụng Flutter.

Tài liệu tham khảo