Hướng dẫn how to automate trading with python - cách tự động hóa giao dịch với python

Sử dụng Python tăng tốc quá trình giao dịch và do đó nó còn được gọi là giao dịch/ giao dịch định lượng tự động. Việc sử dụng Python được ghi có vào các thư viện có chức năng cao 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. & nbsp; bắt đầu với Python. Trước tiên chúng tôi sẽ học cách trích xuất dữ liệu bằng API QuandL. & nbsp;

Sử dụng dữ liệu trước đây sẽ là chìa khóa của chúng tôi để chiến lược backtesting. Cách một chiến lược hoạt động trong một trường hợp nhất định chỉ có thể được hiểu bằng cách sử dụng dữ liệu lịch sử. Chúng tôi sử dụng dữ liệu lịch sử vì trong các xu hướng trong thị trường chứng khoán có xu hướng lặp lại theo thời gian.

Thiết lập môi trường làm việc

Cách dễ nhất để bắt đầu là cài đặt Anaconda. Anaconda là một bản phân phối của Python và nó cung cấp các IDE khác nhau như Spyder, Jupyter, __, ___, v.v.

Cài đặt Quandl

Quandl sẽ giúp chúng tôi lấy dữ liệu lịch sử của cổ phiếu. Để cài đặt Quandl gõ lệnh bên dưới trong thiết bị đầu cuối - & nbsp;

pip install quandl

Lưu ý: Mô -đun Quandl Python miễn phí nhưng bạn phải có khóa API Quandl để tải xuống dữ liệu. Để có được khóa API của riêng bạn, bạn sẽ cần tạo một tài khoản Quandl miễn phí và đặt khóa API của bạn. The Quandl Python module is free but you must have a Quandl API key in order to download data. To get your own API key, you will need to create a free Quandl account and set your API key.

Nhập gói

Khi Quandl được cài đặt, bước tiếp theo là nhập các gói. Chúng tôi sẽ sử dụng gấu trúc một cách nghiêm ngặt trong hướng dẫn này vì việc quay lại đòi hỏi rất nhiều thao tác dữ liệu.

import pandas as pd import quandl as qd

Sau khi các gói đã được nhập, chúng tôi sẽ trích xuất dữ liệu từ Quandl, sử dụng khóa API.

qd.ApiConfig.api_key = "<API key>”

Trích xuất dữ liệu bằng cách sử dụng Quandl

Python3

import pandas as pd

import quandl as qd

qd.ApiConfig.api_key ____10 import pandas as pd import quandl as qd1

import pandas as pd import quandl as qd2import pandas as pd import quandl as qd0 import pandas as pd import quandl as qd4import pandas as pd import quandl as qd5import pandas as pd import quandl as qd6

import pandas as pd import quandl as qd7import pandas as pd import quandl as qd8import pandas as pd import quandl as qd0qd.ApiConfig.api_key = "<API key>”0import pandas as pd import quandl as qd6

import pandas as pd import quandl as qd7qd.ApiConfig.api_key = "<API key>”3import pandas as pd import quandl as qd0qd.ApiConfig.api_key = "<API key>”5qd.ApiConfig.api_key = "<API key>”6

qd.ApiConfig.api_key = "<API key>”7

Output:

Mã trên sẽ trích xuất dữ liệu của các cổ phiếu MSFT từ ngày 1 tháng 1 năm 2010 đến ngày 1 tháng 1 năm 2020. & nbsp; data.head () sẽ hiển thị 5 hàng đầu tiên của dữ liệu.

Thuật ngữ quan trọng: Người ta nên hiểu những gì dữ liệu đại diện và mô tả.One should understand what the data represents and depicts.

  • Mở/ Đóng - Giá mở và đóng cửa của cổ phiếu. The opening and closing price of the stock.
  • Cao/ thấp - Giá cao nhất và thấp nhất mà cổ phiếu đã đạt được trong ngày cụ thể. The highest and the lowest price the stock has reached during the particular day.
  • ADJ_HIGH/ ADD_CLOSE - Tác động của phân phối cổ tức hiện tại, chia tách cổ phiếu hoặc hành động khác của công ty đối với dữ liệu lịch sử. The impact of present dividend distribution, stock splits, or other corporate action on the historical data.

Tính toán lợi nhuận

Lợi nhuận chỉ đơn giản là lợi nhuận thu được hoặc lỗ do cổ phiếu phát sinh sau khi thương nhân/ nhà đầu tư đã sử dụng các vị trí dài hoặc ngắn. Chúng tôi chỉ cần sử dụng hàm pct_change ()

Python3

import qd.ApiConfig.api_key = "<API key>”9

Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]0____10 Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]2 Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]3 Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]4

Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]5import pandas as pd import quandl as qd0 Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]7

Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]8 Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]9Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float640import pandas as pd import quandl as qd0Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float642qd.ApiConfig.api_key = "<API key>”6

Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float644Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float645

Output:

Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]

Công thức được sử dụng trong return hàng ngày = (giá ở ‘t, giá ở mức 1)/ giá ở mức 1 (giá tại bất kỳ thời điểm nào = (Price at ‘t’ – Price at 1)/Price at 1 (Price at any given time ‘t’ – opening price)/ opening price

Di chuyển trung bình

Khái niệm trung bình di chuyển sẽ đặt nền tảng cho chiến lược thương mại dựa trên động lực của chúng tôi. Đối với tài chính, các nhà phân tích cũng cần liên tục kiểm tra các biện pháp thống kê trong khoảng thời gian trượt được gọi là tính toán thời gian di chuyển. Hãy để xem cách có thể tính toán trung bình như thế nào trong cửa sổ 50 ngày và trượt cửa sổ trước 1 ngày.

Python3

Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float646import pandas as pd import quandl as qd0 Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float648 Adj_Close Date 2013-09-03 0.000000 2013-09-04 -0.021487 2013-09-05 0.001282 2013-09-06 -0.002657 2013-09-09 0.016147 ... ... 2017-12-21 -0.000234 2017-12-22 0.000117 2017-12-26 -0.001286 2017-12-27 0.003630 2017-12-28 0.000117 [1090 rows x 1 columns]3import0

Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float644import8import9pandas as pd0pandas as pd1

Date 2017-12-14 78.769754 2017-12-15 78.987478 2017-12-18 79.195540 2017-12-19 79.387391 2017-12-20 79.573250 2017-12-21 79.756221 2017-12-22 79.925922 2017-12-26 80.086379 2017-12-27 80.249752 2017-12-28 80.414472 Name: Adj_Close, dtype: float64

Di chuyển trung bình giúp làm mịn bất kỳ sự bất thường hoặc gai dữ liệu nào và cung cấp cho bạn một đường cong mượt mà hơn cho kết quả của công ty.

Cốt truyện và xem sự khác biệt:

Python3

import pandas as pd3

pandas as pd4

Output:

Quan sát sự khác biệt:

Python3

Output:

Âm mưu chúng cùng nhau:

Python3

import pandas as pd3

pandas as pd4

pandas as pd8

Output:


Bạn có thể tự động hóa giao dịch chứng khoán với Python không?

Sử dụng Python tăng tốc quá trình giao dịch và do đó nó còn được gọi là giao dịch/ giao dịch định lượng tự động. Việc sử dụng Python được ghi có vào các thư viện có chức năng cao như TA-Lib, Zipline, Scipy, Pyplot, Matplotlib, Numpy, Pandas, v.v.. The use of Python is credited to its highly functional libraries like TA-Lib, Zipline, Scipy, Pyplot, Matplotlib, NumPy, Pandas etc.

Python có thể được sử dụng để giao dịch không?

Python đã trở thành một lựa chọn ưa thích để giao dịch gần đây vì Python là nguồn mở và tất cả các gói đều miễn phí cho sử dụng thương mại.Python đã đạt được lực kéo trong cộng đồng tài chính số lượng.Python giúp dễ dàng xây dựng các mô hình thống kê phức tạp một cách dễ dàng do sự sẵn có của các thư viện khoa học đủ. as Python is open-source and all the packages are free for commercial use. Python has gained traction in the quant finance community. Python makes it easy to build intricate statistical models with ease due to the availability of sufficient scientific libraries.

Tôi có thể tự động hóa giao dịch của mình không?

Các nhà giao dịch có tùy chọn chạy hệ thống giao dịch tự động của họ thông qua nền tảng giao dịch dựa trên máy chủ.Các nền tảng này thường cung cấp các chiến lược thương mại để bán để các nhà giao dịch có thể thiết kế hệ thống của riêng họ hoặc khả năng lưu trữ các hệ thống hiện có trên nền tảng dựa trên máy chủ.. These platforms frequently offer commercial strategies for sale so traders can design their own systems or the ability to host existing systems on the server-based platform.

Python có đủ nhanh để giao dịch algo không?

Bạn không nên sử dụng Python trong giao dịch thuật toán vì tìm kiếm các chiến lược giao dịch không phải là về mức độ phức tạp của những thứ bạn xây dựng, mà là bao nhiêu ý tưởng bạn có thời gian để kiểm tra.Có những lựa chọn thay thế cho Python trên thị trường sẽ cho phép bạn xây dựng các chiến lược nhanh hơn nhiều. because finding trading strategies isn't about how complex things you build, but rather how many ideas you have time to test. There are alternatives to python on the market that will let you build strategies far quicker.

Chủ đề