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;

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 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 qd
1

import pandas as pd
import quandl as qd
2
import pandas as pd
import quandl as qd
0
import pandas as pd
import quandl as qd
4
import pandas as pd
import quandl as qd
5
import pandas as pd
import quandl as qd
6

import pandas as pd
import quandl as qd
7
import pandas as pd
import quandl as qd
8
import pandas as pd
import quandl as qd
0
qd.ApiConfig.api_key = "<API key>”
0
import pandas as pd
import quandl as qd
6

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

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

Output:

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

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]
5
import pandas as pd
import quandl as qd
0
            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]
9
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
0
import pandas as pd
import quandl as qd
0
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
2
qd.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: float64
4
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
5

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: float64
6
import pandas as pd
import quandl as qd
0
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
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]
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: float64
4import8import9pandas 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:

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

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

Python3

Output:

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

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

Python3

import pandas as pd3

pandas as pd4

pandas as pd8

Output:

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


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.