Python có tốt cho giao dịch thuật toán không?

So với S&P 500, hiệu quả hoạt động của các quỹ phòng hộ nhìn chung khá thấp trong năm 2017. Trong khi chỉ số S&P 500 trở lại 21. 8%, các quỹ phòng hộ chỉ trả lại 8. 5% cho các nhà đầu tư [xem bài viết này trong Investopedia]. Điều này cho thấy khó khăn như thế nào, ngay cả với ngân sách hàng triệu đô la cho nghiên cứu và công nghệ, để tạo ra alpha

trong blog này. Sử dụng Python để trực quan hóa lượng cổ phiếu bạn nắm giữ, sau đó xây dựng bot giao dịch để mua/bán cổ phiếu của bạn với thời gian chạy Bot giao dịch dựng sẵn của chúng tôi

Các xu hướng gần đây trên thị trường chứng khoán toàn cầu do đại dịch COVID-19 hiện tại không ổn định…và không chắc chắn. Lần trước thị trường náo động thế này, nhiều người trong và ngoài nước đã mất rất nhiều tiền. Nhưng một số ít đã đủ may mắn để đặt mình vào một vị trí để kiếm lợi nhuận. Tình hình hiện tại sẽ không khác

Cho dù bạn là một lập trình viên dày dạn kinh nghiệm mới bắt đầu giao dịch tài chính hay một nhà đầu tư có kinh nghiệm quan tâm đến việc khám phá sức mạnh của Python, thì bài viết này đều dành cho bạn. Trong đó, tôi sẽ trình bày cách Python có thể được sử dụng để trực quan hóa các khoản nắm giữ trong danh mục đầu tư tài chính hiện tại của bạn, cũng như cách xây dựng một bot giao dịch được điều hành bởi một thuật toán dựa trên điều kiện đơn giản

Cài đặt Python cho Bot giao dịch

Để làm theo mã trong bài viết này, bạn sẽ cần cài đặt phiên bản Python mới nhất. Tôi sẽ sử dụng bản dựng tùy chỉnh của ActivePython bao gồm một phiên bản Python và chỉ các gói mà dự án yêu cầu. Bạn có thể lấy một bản sao cho mình bằng cách làm như sau

  • Tải xuống và cài đặt thời gian chạy “Trading Bot” bằng cách thực hiện như sau
    1. Cài đặt State Tool trên Windows bằng Powershell.
      ______28Hoặc cài đặt State Tool trên Linux hoặc Mac.
      ______00
    2. Chạy lệnh sau để tải xuống bản dựng và tự động cài đặt nó vào môi trường ảo.
      ______01

Bạn có thể tìm thấy tất cả mã được sử dụng trong bài viết này trong kho lưu trữ GitLab của tôi

Tất cả các thiết lập?

Dữ liệu tài chính cho Bot giao dịch

Có rất nhiều nền tảng giao dịch chứng khoán khác nhau, một số có API riêng. Robinhood cung cấp một nền tảng đầu tư miễn phí hoa hồng giúp giao dịch trở nên đơn giản và dễ dàng. Ngoài ra, gói robin–stocks mở rộng tính đơn giản này sang Python, hỗ trợ các tính năng như giao dịch chứng khoán, quyền chọn mua/bán và mua tiền điện tử, cũng như cấp quyền truy cập vào danh mục đầu tư thời gian thực và hiệu suất thị trường

Để theo dõi bài đăng này, bạn sẽ cần tạo một tài khoản Robinhood. Lưu ý rằng nếu bạn ở bên ngoài Hoa Kỳ, bạn sẽ cần sử dụng một nền tảng giao dịch khác. Trong trường hợp này, cấu trúc của bot giao dịch sẽ giống nhau, nhưng cách bạn thực hiện giao dịch sẽ khác

Để bắt đầu, trước tiên chúng tôi sẽ nhập các gói chúng tôi cần, sau đó đăng nhập vào nền tảng Robinhood. Thay thế các chuỗi

r.build_holdings[]
2 và
r.build_holdings[]
3 bằng thông tin tài khoản của riêng bạn

import robin_stocks as r
import pandas as pd
import time

username = 'user@mail.com'
password = 'password'

login = r.login[username,password]

Tùy thuộc vào cài đặt bảo mật của bạn, bạn có thể yêu cầu xác thực hai yếu tố. Sau khi đăng nhập, bạn có thể dễ dàng truy cập tài sản của mình bằng cách chạy

r.build_holdings[]

Đầu ra là một từ điển trông giống như thế này

   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}

Tất nhiên, đối với danh mục đầu tư lớn hơn, đầu ra sẽ dài hơn nhiều. Bạn cũng có thể truy cập bất kỳ thông tin hồ sơ nào của mình thông qua mô-đun

r.build_holdings[]
4

________số 8

Có một vài chức năng thông tin khác có thể được sử dụng để trích xuất thông tin về hồ sơ của bạn. Chúng có thể được tìm thấy trong tài liệu ở đây

Trước khi chúng ta bắt đầu mua và bán, sẽ rất hữu ích nếu xây dựng một công cụ trực quan để quan sát những thay đổi lịch sử trong một cổ phiếu nhất định. Điều đầu tiên tôi làm là xây dựng một hàm

r.build_holdings[]
5 thực hiện chính xác điều đó

Đầu vào là danh sách các mã để vẽ, khoảng thời gian để vẽ chúng [có thể là

r.build_holdings[]
6,
r.build_holdings[]
7,
r.build_holdings[]
8,
r.build_holdings[]
9,
   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
0 hoặc
   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
1] và liệu có bao gồm giờ giao dịch kéo dài hay chỉ giờ giao dịch thông thường [có thể

r.build_holdings[]
8

Bạn có thể tùy chỉnh danh sách mã cổ phiếu đầu vào hoặc sử dụng chức năng bên dưới để trích xuất chúng từ cổ phần của bạn

r.build_holdings[]
9

Để chạy các chức năng

r.build_holdings[]
0

Vì tôi chỉ có một cổ phiếu trong cổ phần của mình, nên chỉ có một mảnh đất được đưa ra. Cốt truyện trông như thế này

Ngoài việc vẽ biểu đồ giá mở cửa ở mỗi khoảng thời gian [đường màu xanh đậm], tôi đã bao gồm giá cao và thấp trong cùng khoảng thời gian [màu xanh nhạt]

Mã Mua/Bán Bot Giao dịch

Lý tưởng nhất là bot giao dịch nên xem xét một bộ mã được xác định trước trong danh mục đầu tư và quyết định mua, bán hay giữ. Thông tin mà bot sử dụng để đưa ra quyết định này có thể là bất kỳ thứ gì từ giá thay đổi như thế nào trong một khoảng thời gian nhất định đến phân tích tâm lý của một tweet từ Giám đốc điều hành của công ty

Mặc dù có nhiều yếu tố có thể được tính đến, dẫn đến các mô hình phức tạp hơn để xác định các điều kiện của bot, nhưng chức năng cơ bản của bot không thay đổi. Trong trường hợp của chúng tôi, tôi chỉ đơn giản sử dụng thuộc tính

   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
4 cho mỗi lần nắm giữ để xác định nên mua hay bán. Nếu giá cổ phiếu giảm trên một tỷ lệ phần trăm nhất định, bot sẽ thực hiện mua. Ngược lại, nếu giá cổ phiếu tăng trên một tỷ lệ phần trăm nhất định, bot sẽ thực hiện bán. Để thực hiện hành vi này, tôi đã xác định hàm
   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
5

r.build_holdings[]
3

Đầu tiên, bot lấy tài sản nắm giữ từ nền tảng Robinhood và thực hiện một số tái cấu trúc dữ liệu để tạo khung dữ liệu gấu trúc. Sau đó, nó lặp qua từng mã có trong

   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
6 và so sánh giá trị
   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
4 với giới hạn mua và bán có điều kiện. Ví dụ: tôi có thể đặt cả hai giới hạn thành 0. 5%

r.build_holdings[]
6

Sau đó, bot sẽ thực hiện mua hoặc bán nếu giá trị

   {‘KMI’ : {‘price’ : ‘13.990000’,
      ‘quantity’ : ‘1.00000000’,
      ‘average_buy_price’ : ‘0.000’,
      ‘equity’ : ‘13.99’,
      ‘percent_change’ :  ‘0.00’,
      ‘equity_change’ : ‘13.990000’,
      ‘type’ : ‘stock’,
      ‘name’ : ‘Kinder Morgan’,
      ‘id’ : ‘346c3dc3-2ef4-470f-aa67-0471cffeb299’,
      ‘pe_ratio’ : ‘13.939700’,
      ‘percentage’ : ‘100.00’}}
4 nhỏ hơn hoặc lớn hơn nửa phần trăm và in ra giao dịch cho mỗi lần nắm giữ. Khá mát mẻ phải không?

Đó là nó. Bây giờ bạn có thể xây dựng bot giao dịch của riêng mình bằng Python

Trong bài viết này, tôi đã trình bày cách sử dụng Python để xây dựng một bot giao dịch đơn giản bằng cách sử dụng các gói như pandas và robin-stocks. Bằng cách tận dụng nền tảng giao dịch Robinhood, bạn có thể dễ dàng hình dung hiệu suất của các khoản nắm giữ riêng lẻ trong danh mục đầu tư của mình

Các điều kiện mua và bán mà chúng tôi đặt cho bot tương đối đơn giản, nhưng đoạn mã này cung cấp nền tảng để tạo ra một thuật toán phức tạp hơn. Tính linh hoạt của Python cung cấp sân chơi hoàn hảo để tăng độ phức tạp, chẳng hạn như giới thiệu các kỹ thuật học máy và các số liệu tài chính khác. Tôi để lại các bước tiếp theo này cho những độc giả quan tâm đến việc tạo một bot nâng cao hơn

  • Tất cả mã được sử dụng trong bài viết này có thể được tìm thấy trong kho lưu trữ GitLab của tôi
  • Đăng ký tài khoản Nền tảng ActiveState miễn phí để bạn có thể tải xuống môi trường thời gian chạy Bot giao dịch và xây dựng bot giao dịch của riêng bạn

Bài đọc được đề xuất

Nền tảng ActiveState. Làm cách nào để xây dựng Thời gian chạy tùy chỉnh trong 5 phút?

Cách xây dựng chuỗi khối bằng Python [Nhận thời gian chạy dựng sẵn]

10 gói Python hàng đầu cho tài chính và lập mô hình tài chính

Các câu hỏi thường gặp

Cách dễ nhất là tạo bot giao dịch Python. Python rất dễ làm việc và cung cấp nhiều gói mà bạn có thể sử dụng để đơn giản hóa việc tạo bot giao dịch theo thuật toán của mình

Bắt đầu nhanh. Tải xuống môi trường Trading Bot Python được xây dựng sẵn của chúng tôi

Python là lý tưởng để tạo các bot giao dịch, vì chúng có thể sử dụng các thuật toán được cung cấp bởi các gói học máy mở rộng của Python như scikit-learning. Python cũng có các gói mạnh mẽ để phân tích và trực quan hóa tài chính. Ngoài ra, Python là một lựa chọn tốt cho tất cả mọi người, từ người mới bắt đầu đến chuyên gia do tính dễ sử dụng của nó

Xem các gói Python hàng đầu về tài chính và lập mô hình tài chính

Bot giao dịch Python có thể được sử dụng để tự động mua và bán cổ phiếu khi được lập trình với các ngưỡng mua và bán. Các bot giao dịch nâng cao có thể được lập trình bằng thuật toán để xác định thời điểm nên mua hoặc bán cổ phiếu

Bắt đầu với môi trường thời gian chạy Python Trading Bot

Không, giao dịch tự động là tiêu chuẩn. Tuy nhiên, chỉ một số công ty môi giới cung cấp cho công chúng quyền truy cập có lập trình mà bạn cần để tạo bot giao dịch tự động

Python có đủ nhanh để giao dịch thuật toán không?

Các ngôn ngữ được nhập tĩnh [xem bên dưới] chẳng hạn như C++/Java thường tối ưu để thực thi nhưng có sự đánh đổi về thời gian phát triển, thử nghiệm và dễ bảo trì. Các ngôn ngữ được nhập động, chẳng hạn như Python và Perl hiện nay thường "đủ nhanh" .

Ngôn ngữ tốt nhất cho giao dịch thuật toán là gì?

Java là một trong những ngôn ngữ lập trình được các nhà giao dịch tìm kiếm nhiều nhất. Mô hình hóa dữ liệu, mô phỏng và thực thi độ trễ thấp là một số trong nhiều lĩnh vực mà Java phục vụ không kém phần may mắn.

Cần bao nhiêu Python để giao dịch thuật toán?

Phí khóa học. Chiến lược kỹ thuật sử dụng Python. 15.000 INR/- Các chiến lược tùy chọn sử dụng Python. 15.000 INR/-

Bạn có thể sử dụng Python để tự động hóa giao dịch không?

Việc sử dụng Python giúp tăng tốc quá trình giao dịch và do đó, nó còn được gọi là giao dịch tự động/giao dịch định lượng . Việc sử dụng Python được ghi có vào các thư viện chức năng cao của nó như TA-Lib, Zipline, Scipy, Pyplot, Matplotlib, NumPy, Pandas, v.v. Khám phá dữ liệu trong tay được gọi là phân tích dữ liệu.

Chủ Đề