Skip to main content

Học Lập Trình Python: Trích Xuất Văn Bản Từ PDF và Xử Lý Ngôn Ngữ Tự Nhiên

· 3 min read

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 mạnh mẽ trong xử lý dữ liệu và trí tuệ nhân tạo. Trong bài viết này, chúng ta sẽ khám phá cách trích xuất văn bản từ tệp PDF và phân tích ngôn ngữ tự nhiên bằng Python, sử dụng pdfplumberspaCy.

1. Trích Xuất Văn Bản Từ PDF Bằng Python

Khi làm việc với dữ liệu văn bản, đôi khi bạn cần trích xuất nội dung từ các tệp PDF để phân tích hoặc xử lý tiếp. Thư viện pdfplumber giúp chúng ta đọc và lấy văn bản từ từng trang của tệp PDF một cách dễ dàng.

Cài đặt thư viện:

Trước tiên, bạn cần cài đặt các thư viện cần thiết bằng lệnh sau:

pip install pdfplumber spacy
python -m spacy download en_core_web_sm

Mã nguồn trích xuất văn bản từ PDF:

import pdfplumber

def extract_text_from_pdf(pdf_path):
text = ""
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text += page.extract_text() + "\n"
return text

# Đường dẫn đến tệp PDF
pdf_path = "sample.pdf"

# Trích xuất văn bản
text = extract_text_from_pdf(pdf_path)
print("Văn bản trích xuất từ PDF:")
print(text)

🔹 Giải thích:

  • pdfplumber.open(pdf_path): Mở tệp PDF.
  • page.extract_text(): Lấy văn bản từ từng trang.
  • Vòng lặp giúp duyệt qua tất cả các trang và nối văn bản lại.

2. Phân Tích Văn Bản Với SpaCy

Sau khi trích xuất văn bản, chúng ta có thể xử lý ngôn ngữ tự nhiên (NLP) để tìm các thực thể quan trọng như tên, địa điểm, tổ chức,… bằng thư viện spaCy.

Mã nguồn phân tích văn bản:

import spacy

def analyze_text(text):
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)

# Trích xuất thực thể được đặt tên (Named Entities)
entities = [(ent.text, ent.label_) for ent in doc.ents]

# Tách câu trong văn bản
sentences = [sent.text for sent in doc.sents]

return entities, sentences

# Phân tích văn bản trích xuất
entities, sentences = analyze_text(text)

print("\nThực thể được đặt tên (Named Entities):")
for entity in entities:
print(entity)

print("\nCác câu trong văn bản:")
for sentence in sentences:
print(sentence)

🔹 Giải thích:

  • spacy.load("en_core_web_sm"): Tải mô hình NLP tiếng Anh.
  • doc.ents: Trích xuất thực thể được đặt tên (tên người, tổ chức, địa điểm,…).
  • doc.sents: Tách văn bản thành các câu riêng biệt.

3. Ứng Dụng Thực Tế

✅ Trích xuất dữ liệu từ báo cáo PDF để xử lý dữ liệu. ✅ Tìm kiếm thông tin quan trọng trong tài liệu như số điện thoại, địa chỉ, tên tổ chức. ✅ Hỗ trợ chatbot AI trong phân tích và hiểu văn bản.


Kết Luận

Python cung cấp nhiều công cụ mạnh mẽ như pdfplumberspaCy để làm việc với văn bản. Việc kết hợp cả hai thư viện này giúp bạn tự động hóa việc trích xuất và xử lý dữ liệu từ PDF, tiết kiệm thời gian và nâng cao hiệu quả làm việc.

Hãy thực hành mỗi ngày để phát triển kỹ năng lập trình Python, đặc biệt là trong xử lý dữ liệu và trí tuệ nhân tạo! 🚀


  • Học lập trình Python
  • Trích xuất văn bản từ PDF bằng Python
  • Xử lý ngôn ngữ tự nhiên với Python
  • Phân tích dữ liệu PDF bằng Python
  • Tự động hóa với Python

Tạo Báo Cáo Tự Động và Viết Bài Markdown Dễ Dàng

· 2 min read

Giới Thiệu

Tạo báo cáo tự động là một bước quan trọng trong việc phân tích dữ liệu và trình bày kết quả. Trong bài viết này, chúng ta sẽ tạo dữ liệu giả lập bằng Python và xuất báo cáo để dễ dàng viết bài dưới dạng Markdown.

Cài Đặt Thư Viện

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt các thư viện cần thiết:

pip install pandas numpy faker

Tạo Dữ Liệu Giả Lập

Chúng ta sẽ tạo một bộ dữ liệu bán hàng giả lập gồm thông tin về sản phẩm, doanh số, khu vực, danh mục, khách hàng, v.v.

import pandas as pd
import numpy as np
from faker import Faker

# Khởi tạo Faker
tao_gia = Faker()

# Đặt seed để đảm bảo tính ngẫu nhiên có thể tái lập
np.random.seed(42)

# Danh sách sản phẩm và danh mục
san_pham = ['Sản Phẩm A', 'Sản Phẩm B', 'Sản Phẩm C']
danh_muc = ['Danh Mục 1', 'Danh Mục 2', 'Danh Mục 3']

# Tạo dữ liệu
data = {
'Ngay': [tao_gia.date_this_year() for _ in range(1000)],
'SanPham': np.random.choice(san_pham, 1000),
'DoanhSo': np.random.randint(50, 500, 1000),
'KhuVuc': [tao_gia.city() for _ in range(1000)],
'DanhMuc': np.random.choice(danh_muc, 1000),
'KhachHangID': [tao_gia.uuid4() for _ in range(1000)],
'SoLuong': np.random.randint(1, 20, 1000),
'GiamGia': np.random.uniform(0, 0.3, 1000),
'LoiNhuan': np.random.uniform(10, 200, 1000),
}

# Tạo DataFrame
df = pd.DataFrame(data)

# Lưu dữ liệu vào tệp CSV
df.to_csv('du_lieu_ban_hang.csv', index=False)

print("Dữ liệu đã được tạo và lưu vào 'du_lieu_ban_hang.csv'")

Kết Luận

Với cách sử dụng Python và các thư viện như Pandas, Numpy và Faker, bạn có thể nhanh chóng tạo dữ liệu giả lập, phân tích và tự động hóa báo cáo. Việc viết bài Markdown dựa trên dữ liệu đã tạo giúp quá trình chia sẻ và trình bày dễ dàng hơn.

Tạo Hình Ảnh Văn Bản Tự Động với Python và PIL

· 3 min read

Giới Thiệu

Trong thế giới tự động hóa, việc tạo hình ảnh văn bản tự động có thể giúp bạn tạo báo cáo, slide trình chiếu hoặc hình minh họa nhanh chóng. Bài viết này sẽ hướng dẫn bạn cách sử dụng Python và thư viện PIL (Pillow) để tạo hình ảnh chứa văn bản một cách tự động.

Vì Sao Nên Sử Dụng Python để Tạo Hình Ảnh Văn Bản?

  • Tự động hóa: Giúp tiết kiệm thời gian thay vì phải thiết kế thủ công.
  • Dễ dàng tùy chỉnh: Có thể thay đổi font chữ, màu sắc, kích thước tùy ý.
  • Ứng dụng rộng rãi: Tạo hình ảnh cho báo cáo, trình chiếu hoặc tài liệu học tập.

Hướng Dẫn Tạo Hình Ảnh Văn Bản Bằng Python

Cài Đặt Thư Viện PIL (Pillow)

Trước tiên, bạn cần cài đặt thư viện Pillow nếu chưa có:

pip install pillow

Mã Nguồn Python

Dưới đây là đoạn mã Python sử dụng PIL để tạo hình ảnh chứa văn bản:

from PIL import Image, ImageDraw, ImageFont

def create_sample_image(text, filename):
# Tạo hình ảnh nền trắng kích thước 800x600
img = Image.new('RGB', (800, 600), color=(255, 255, 255))
d = ImageDraw.Draw(img)

# Sử dụng font mặc định
fnt = ImageFont.load_default()

# Tính toán vị trí văn bản để căn giữa
bbox = d.textbbox((0, 0), text, font=fnt)
textwidth = bbox[2] - bbox[0]
textheight = bbox[3] - bbox[1]
width, height = img.size
x = (width - textwidth) / 2
y = (height - textheight) / 2

# Vẽ văn bản lên hình ảnh
d.text((x, y), text, font=fnt, fill=(0, 0, 0))

# Lưu hình ảnh
img.save(filename)

# Tạo hình ảnh mẫu
create_sample_image('Slide 3: Automation Tools', 'image1.jpg')
create_sample_image('Slide 4: Python Libraries', 'image2.png')

Giải Thích Đoạn Mã

  1. Tạo hình ảnh nền trắng kích thước 800x600.
  2. Chọn font mặc định và tính toán kích thước chữ.
  3. Căn chỉnh văn bản vào giữa hình ảnh.
  4. Lưu hình ảnh dưới định dạng .jpg hoặc .png.

Ứng Dụng Thực Tế

  • Tạo hình ảnh cho slide trình chiếu tự động.
  • Tạo hình ảnh chứa tiêu đề hoặc nội dung quan trọng.
  • Ứng dụng trong AI và Machine Learning để xử lý văn bản trên hình ảnh.

Kết Luận

Với Python và thư viện PIL, bạn có thể dễ dàng tạo hình ảnh chứa văn bản một cách tự động. Điều này giúp tăng tốc độ làm việc và tạo ra các hình ảnh chất lượng cao mà không cần thiết kế thủ công.


Từ Khóa SEO:

  • Tạo hình ảnh bằng Python
  • Python PIL tạo ảnh
  • Python vẽ văn bản lên hình ảnh
  • Tự động hóa hình ảnh với Python
  • Học lập trình Python xử lý hình ảnh

Tự Động Hóa Báo Cáo Kinh Doanh Bằng Python

· 2 min read

Giới Thiệu

Trong thời đại dữ liệu lớn, việc tự động hóa báo cáo kinh doanh trở nên quan trọng hơn bao giờ hết. Bài viết này sẽ hướng dẫn bạn cách tạo báo cáo tự động từ dữ liệu CSV bằng Python, sử dụng các thư viện pandas, matplotlib, seaborn, và openpyxl.

Bước 1: Đọc Dữ Liệu Từ Tệp CSV

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from openpyxl import Workbook
from openpyxl.drawing.image import Image

df = pd.read_csv('demo_data.csv')

Bước 2: Xử Lý Dữ Liệu

sales_by_product = df.groupby('Product')['Sales'].sum().reset_index()
sales_by_date = df.groupby('Date')['Sales'].sum().reset_index()
profit_by_product = df.groupby('Product')['Profit'].sum().reset_index()

Bước 3: Trực Quan Hóa Dữ Liệu

plt.figure(figsize=(10, 6))
sns.barplot(x='Product', y='Sales', data=sales_by_product)
plt.title('Tổng Doanh Số Bán Hàng Theo Sản Phẩm')
plt.savefig('sales_by_product.png')
plt.close()
plt.figure(figsize=(14, 8))
sns.lineplot(x='Date', y='Sales', data=sales_by_date)
plt.title('Tổng Doanh Số Bán Hàng Theo Ngày')
plt.xticks(rotation=45, ha='right')
plt.gca().xaxis.set_major_locator(plt.MaxNLocator(10))
plt.savefig('sales_by_date.png')
plt.close()
plt.figure(figsize=(10, 6))
sns.barplot(x='Product', y='Profit', data=profit_by_product)
plt.title('Tổng Lợi Nhuận Theo Sản Phẩm')
plt.savefig('profit_by_product.png')
plt.close()

Bước 4: Xuất Báo Cáo Tự Động Ra Excel

with pd.ExcelWriter('automated_report.xlsx', engine='openpyxl') as writer:
sales_by_product.to_excel(writer, sheet_name='Sales by Product', index=False)
sales_by_date.to_excel(writer, sheet_name='Sales by Date', index=False)
profit_by_product.to_excel(writer, sheet_name='Profit by Product', index=False)

workbook = writer.book
sales_product_sheet = workbook['Sales by Product']
sales_date_sheet = workbook['Sales by Date']
profit_product_sheet = workbook['Profit by Product']

img1 = Image('sales_by_product.png')
img2 = Image('sales_by_date.png')
img3 = Image('profit_by_product.png')

sales_product_sheet.add_image(img1, 'E2')
sales_date_sheet.add_image(img2, 'E2')
profit_product_sheet.add_image(img3, 'E2')

Kết Luận

Tự động hóa báo cáo bằng Python giúp doanh nghiệp tiết kiệm thời gian, tăng hiệu suất và giảm thiểu sai sót trong quá trình xử lý dữ liệu. Hy vọng bài viết này giúp bạn nắm bắt quy trình tự động hóa báo cáo và áp dụng vào thực tế! 🚀

Tự động hóa báo cáo với Python: Tạo báo cáo Markdown nhanh chóng

· 3 min read

1. Giới thiệu

Tự động hóa báo cáo giúp doanh nghiệp tiết kiệm thời gian, giảm thiểu sai sót, và nâng cao hiệu suất làm việc. Trong bài viết này, chúng ta sẽ sử dụng Python, Pandas, và Faker để tạo báo cáo dữ liệu tự động và xuất tệp Markdown.

2. Cài đặt các thư viện cần thiết

Cài đặt các thư viện cần thiết trước khi bắt đầu:

pip install pandas numpy faker

3. Tạo dữ liệu giả lập

Dưới đây là mã Python tạo dữ liệu giả lập với FakerNumPy:

import pandas as pd
import numpy as np
from faker import Faker

# Khởi tạo Faker
fake = Faker()
np.random.seed(42)

# Danh sách sản phẩm và danh mục
products = ['Product A', 'Product B', 'Product C', 'Product D', 'Product E']
categories = ['Category 1', 'Category 2', 'Category 3']

# Tạo dữ liệu giả
data = {
'Date': [fake.date_this_year() for _ in range(1000)],
'Product': np.random.choice(products, 1000),
'Sales': np.random.randint(50, 500, 1000),
'Region': [fake.city() for _ in range(1000)],
'Category': np.random.choice(categories, 1000),
'CustomerID': [fake.uuid4() for _ in range(1000)],
'Quantity': np.random.randint(1, 20, 1000),
'Discount': np.random.uniform(0, 0.3, 1000),
'Profit': np.random.uniform(10, 200, 1000),
'Cost': np.random.uniform(5, 100, 1000),
}

# Tạo DataFrame
df = pd.DataFrame(data)

# Lưu DataFrame vào tệp CSV
df.to_csv('demo_data.csv', index=False)
print("Bộ dữ liệu demo đã được tạo và lưu vào 'demo_data.csv'")

4. Xuất báo cáo tự động dưới dạng Markdown

Sau khi tạo dữ liệu, ta xuất báo cáo dưới dạng tệp Markdown:

def generate_markdown_report(df, filename="report.md"):
with open(filename, "w") as f:
f.write("# Báo cáo Kinh Doanh\n\n")
f.write("## Tổng Quan\n")
f.write(f"- Tổng doanh thu: {df['Sales'].sum()}\n")
f.write(f"- Tổng lợi nhuận: {df['Profit'].sum()}\n")
f.write(f"- Tổng số giao dịch: {len(df)}\n\n")

f.write("## Doanh thu theo sản phẩm\n")
sales_by_product = df.groupby("Product")["Sales"].sum()
for product, sales in sales_by_product.items():
f.write(f"- {product}: {sales}\n")

print(f"Báo cáo đã được lưu tại {filename}")

generate_markdown_report(df)

Sau khi chạy, tệp report.md sẽ được tạo chứa thông tin báo cáo doanh thu.

5. Lập lịch tự động chạy báo cáo

Chúng ta có thể tự động chạy script Python hàng ngày bằng Cron Job (Linux) hoặc Task Scheduler (Windows):

🔹 Với Cron Job (Linux): Thêm vào crontab -e

0 8 * * * /usr/bin/python3 /path/to/script.py

🔹 Với Task Scheduler (Windows):

  • Tạo "Basic Task" > "Start a Program"
  • Chọn file python.exe và tham số /path/to/script.py

6. Kết luận

Bằng cách sử dụng Python và Markdown, ta có thể tự động hóa báo cáo kinh doanh nhanh chóng. Việc lập lịch tự động giúp duy trì tính nhất quán và hiệu suất cao hơn.

Bạn có muốn tích hợp thêm báo cáo dạng HTML hoặc Excel không? Hãy để lại bình luận nhé! 🚀

tu-ong-hoa-tao-pdf-voi-van-ban-va-hinh-anh-bang-python

· 3 min read

Tự Động Hóa Tạo PDF với Văn Bản và Hình Ảnh bằng Python

Giới thiệu

Việc tạo tài liệu PDF từ nhiều nguồn khác nhau, bao gồm văn bản và hình ảnh, là một nhiệm vụ phổ biến trong nhiều lĩnh vực như báo cáo kinh doanh, tài liệu hướng dẫn và trình chiếu. Trong bài viết này, chúng ta sẽ sử dụng Python và thư viện reportlab để tự động tạo một tệp PDF chứa cả nội dung văn bản và hình ảnh.

Công cụ và Thư viện Cần Thiết

Chúng ta sẽ sử dụng các thư viện sau:

  • reportlab để tạo và chỉnh sửa tệp PDF
  • PIL (Pillow) để xử lý hình ảnh

Mã Nguồn

from reportlab.lib.pagesizes import letter, landscape
from reportlab.pdfgen import canvas
from PIL import Image

def create_pdf_from_text_images(text_files, image_files, output_pdf):
# Tạo canvas PDF
c = canvas.Canvas(output_pdf, pagesize=landscape(letter))
width, height = landscape(letter)

for i, text_file in enumerate(text_files):
if i != 0:
c.showPage() # Tạo trang mới cho mỗi tệp văn bản
with open(text_file, 'r', encoding='utf-8') as f:
text = f.read()

# Thêm văn bản vào PDF
c.setFont("Helvetica", 14)
lines = text.split('\n')
y = height - 40
for line in lines:
if y < 40:
c.showPage()
c.setFont("Helvetica", 14)
y = height - 40
c.drawString(40, y, line)
y -= 20

for image_file in image_files:
c.showPage()
img = Image.open(image_file)
img_width, img_height = img.size
aspect_ratio = img_width / img_height

if img_width > width or img_height > height:
if aspect_ratio > 1:
img_width = width
img_height = width / aspect_ratio
else:
img_height = height
img_width = height * aspect_ratio

c.drawImage(image_file, 0, 0, img_width, img_height)

c.save()

# Danh sách các file văn bản và hình ảnh
text_files = ['text1.txt', 'text2.txt']
image_files = ['image1.jpg', 'image2.png']

# Tạo file PDF đầu ra
output_pdf = 'output_presentation.pdf'
create_pdf_from_text_images(text_files, image_files, output_pdf)

Giải Thích Mã

  • Đọc nội dung văn bản từ các tệp .txt và thêm vào PDF.
  • Đảm bảo bố cục trang hợp lý bằng cách xuống dòng khi cần.
  • Thêm hình ảnh vào PDF và điều chỉnh kích thước để phù hợp với khổ giấy.
  • Tạo trang mới khi cần để giữ bố cục rõ ràng.

Ứng Dụng Thực Tế

  • Tạo báo cáo tự động
  • Xuất tài liệu từ hệ thống CMS
  • Tạo bài thuyết trình PDF

Kết Luận

Việc tự động hóa quá trình tạo PDF giúp tiết kiệm thời gian và đảm bảo tính chuyên nghiệp của tài liệu. Bằng cách sử dụng Python, bạn có thể tạo báo cáo, tài liệu hướng dẫn và trình chiếu một cách nhanh chóng và hiệu quả.

Nếu bạn muốn tìm hiểu thêm về Python và xử lý tài liệu, hãy theo dõi blog của chúng tôi để cập nhật các

Phân Tích Phân Phối Giá Cổ Phiếu

· 2 min read

1. Giới Thiệu

Dữ liệu giao dịch dưới đây phản ánh sự biến động của giá cổ phiếu trong một khoảng thời gian cụ thể. Chúng ta sẽ phân tích xu hướng giá dựa trên các thông số như Open, High, Low, Close và Volume.

2. Dữ Liệu Giao Dịch

datetimeopenhighlowclosevolume
06/14/2024 19:55169.15169.16169.15169.160217
06/14/2024 19:50169.19169.19169.16169.16012
06/14/2024 19:45169.06169.06169.06169.0601
06/14/2024 19:40169.07169.07169.06169.06050
06/14/2024 19:35169.06169.07169.06169.07015
..................
06/14/2024 11:00168.04168.04167.81167.96045115
06/14/2024 10:55167.98168.06167.86168.06019597
06/14/2024 10:50167.80168.03167.73167.98213482
06/14/2024 10:45167.61167.80167.61167.77047085
06/14/2024 10:40167.38167.66167.23167.61037891

3. Nhận Định Xu Hướng

  • Biến động giá: Trong khoảng thời gian từ 10:40 đến 19:55, giá cổ phiếu dao động từ 167.38 đến 169.19.
  • Khối lượng giao dịch: Một số thời điểm có khối lượng giao dịch lớn, như 10:45 (47,085) và 11:00 (45,115), cho thấy sự quan tâm mạnh mẽ từ thị trường.
  • Mức giá cao nhất/thấp nhất: Giá cao nhất ghi nhận là 169.19, trong khi giá thấp nhất xuống đến 167.23.

4. Kết Luận

Dữ liệu trên cho thấy giá cổ phiếu có xu hướng dao động nhẹ trong ngày, với mức biến động trong khoảng 2 điểm. Việc quan sát kỹ các phiên giao dịch có khối lượng lớn có thể giúp dự đoán xu hướng tiếp theo của thị trường.

5. Chart

Đặt Lệnh Mua trên 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 để đặt lệnh mua (BUY) trên MetaTrader 5 (MT5) bằng thư viện MetaTrader5.

Mã nguồn

# Hàm để đặt một lệnh mua
import MetaTrader5 as mt5
import math

# Kết nối tới MetaTrader 5
if not mt5.initialize(login=login, password=password, server=server):
print("Initialize() failed, error code =", mt5.last_error())
quit()
else:
symbol = 'EURUSD.sml'
lot = 0.01 # Số lượng lô mua

if not mt5.symbol_select(symbol, True):
print(f"Failed to select {symbol}, error code =", mt5.last_error())
quit()

symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
print(f"{symbol} not found")

point = symbol_info.point
price = mt5.symbol_info_tick(symbol).ask
deviation = 20 # Độ lệch giá cho phép

request = {
"action": mt5.TRADE_ACTION_DEAL,
"symbol": symbol,
"volume": lot,
"type": mt5.ORDER_TYPE_BUY,
"price": price,
"sl": price - 0.01, # Dừng lỗ (Stop Loss)
"tp": price + 0.02, # Chốt lời (Take Profit)
"deviation": deviation,
"magic": 234000,
"comment": "Autotrading K10",
"type_time": mt5.ORDER_TIME_GTC,
"type_filling": mt5.ORDER_FILLING_FOK,
}

result = mt5.order_send(request)
if result.retcode != mt5.TRADE_RETCODE_DONE:
print("Failed to send order :", result.retcode, result._asdict())
else:
print("Order placed BUY successfully!")
print(result)

# Đóng kết nối với MT5
mt5.shutdown()

Giải thích

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

    • mt5.initialize(login, password, server): Kết nối với tài khoản giao dịch.
    • Nếu kết nối thất bại, chương trình thoát.
  2. Xác định tham số giao dịch

    • symbol: Cặp tiền tệ (EURUSD.sml).
    • lot: Khối lượng lệnh mua (0.01).
    • price: Giá mua theo giá ask.
    • sl, tp: Thiết lập dừng lỗ (Stop Loss) và chốt lời (Take Profit).
    • deviation: Độ lệch giá cho phép.
  3. Gửi lệnh mua

    • mt5.order_send(request): Gửi lệnh đến MT5.
    • Kiểm tra kết quả trả về.
    • Nếu lệnh được thực hiện thành công, in thông tin giao dịch.

Cải tiến

Xử lý lỗi khi không có dữ liệu giá

if price is None:
print("Không thể lấy giá hiện tại của", symbol)
mt5.shutdown()
quit()

Thêm tính năng kiểm tra số dư trước khi đặt lệnh

account_info = mt5.account_info()
if account_info is not None and account_info.balance < lot * price:
print("Số dư không đủ để đặt lệnh")
mt5.shutdown()
quit()

Ghi log giao dịch vào file CSV để theo dõi

import csv

with open("trade_log.csv", "a", newline="") as file:
writer = csv.writer(file)
writer.writerow([symbol, lot, price, "BUY", result.retcode])

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

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

Hướng dẫn đăng nhập API Entrade bằng Python

· One min read

Bài viết này hướng dẫn cách sử dụng thư viện requests trong Python để đăng nhập vào API của Entrade và lấy access token.

Đăng nhập API

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

import requests

# URL cho endpoint đăng nhập
login_url = 'https://services.entrade.com.vn/dnse-auth-service/login'

# Thông tin đăng nhập (thay thế bằng thông tin thực tế của bạn)
username = 'your_email@example.com'
password = 'your_secure_password'

# Dữ liệu gửi kèm yêu cầu POST
login_data = {
'username': username,
'password': password
}

# Gửi yêu cầu POST đến API đăng nhập
response = requests.post(login_url, json=login_data)
token = ''

# Kiểm tra phản hồi
if response.status_code == 200:
# Lấy token từ phản hồi
token = response.json().get('token')
print('Đăng nhập thành công. Access token của bạn:', token)
else:
print('Đăng nhập thất bại. Mã lỗi:', response.status_code, response.text)