Bot giao dịch Python

Freqtrade là một bot giao dịch tiền điện tử mã nguồn mở và miễn phí được viết bằng Python. Nó được thiết kế để hỗ trợ tất cả các sàn giao dịch lớn và được kiểm soát thông qua Telegram hoặc webUI. Nó chứa các công cụ kiểm tra lại, lập kế hoạch và quản lý tiền cũng như tối ưu hóa chiến lược bằng máy học

TUYÊN BỐ MIỄN TRỪ TRÁCH NHIỆM

Phần mềm này chỉ dành cho mục đích giáo dục. Đừng mạo hiểm tiền mà bạn sợ mất. BẠN TỰ CHỊU RỦI RO KHI SỬ DỤNG PHẦN MỀM. CÁC TÁC GIẢ VÀ TẤT CẢ CÁC LIÊN KẾT KHÔNG CHỊU TRÁCH NHIỆM VỀ KẾT QUẢ GIAO DỊCH CỦA BẠN

Luôn bắt đầu bằng cách chạy một bot giao dịch trong Dry-run và không tham gia kiếm tiền trước khi bạn hiểu cách thức hoạt động của nó và mức lãi/lỗ mà bạn mong đợi

Chúng tôi thực sự khuyên bạn nên có kỹ năng viết mã cơ bản và kiến ​​thức về Python. Đừng ngần ngại đọc mã nguồn và hiểu cơ chế của bot này, các thuật toán và kỹ thuật được triển khai trong đó

Đặc trưng¶

  • Phát triển chiến lược của bạn. Viết chiến lược của bạn bằng python, sử dụng gấu trúc. Các chiến lược ví dụ để truyền cảm hứng cho bạn có sẵn trong kho chiến lược
  • Tải xuống dữ liệu thị trường. Tải xuống dữ liệu lịch sử của sàn giao dịch và các thị trường mà bạn có thể muốn giao dịch
  • kiểm tra lại. Kiểm tra chiến lược của bạn trên dữ liệu lịch sử đã tải xuống
  • Tối ưu hóa. Tìm các tham số tốt nhất cho chiến lược của bạn bằng siêu tối ưu hóa sử dụng các phương pháp học gia công. Bạn có thể tối ưu hóa các tham số mua, bán, chốt lãi [ROI], cắt lỗ và cắt lỗ theo dõi cho chiến lược của mình
  • Chọn thị trường. Tạo danh sách tĩnh của bạn hoặc sử dụng danh sách tự động dựa trên khối lượng và/hoặc giá được giao dịch hàng đầu [không khả dụng trong quá trình kiểm tra lại]. Bạn cũng có thể đưa vào danh sách đen một cách rõ ràng các thị trường mà bạn không muốn giao dịch
  • Chạy. Kiểm tra chiến lược của bạn bằng tiền mô phỏng [chế độ Chạy khô] hoặc triển khai nó bằng tiền thật [chế độ Giao dịch trực tiếp]
  • Chạy bằng Edge [mô-đun tùy chọn]. Khái niệm này là tìm kỳ vọng giao dịch lịch sử tốt nhất của thị trường dựa trên sự thay đổi của mức cắt lỗ và sau đó cho phép/từ chối thị trường giao dịch. Quy mô giao dịch dựa trên rủi ro tỷ lệ phần trăm vốn của bạn
  • Kiểm soát/Giám sát. Sử dụng Telegram hoặc WebUI [bắt đầu/dừng bot, hiển thị lãi/lỗ, tóm tắt hàng ngày, kết quả giao dịch mở hiện tại, v.v. ]
  • phân tích. Phân tích sâu hơn có thể được thực hiện trên dữ liệu Backtesting hoặc lịch sử giao dịch Freqtrade [cơ sở dữ liệu SQL], bao gồm các biểu đồ tiêu chuẩn tự động và phương pháp tải dữ liệu vào môi trường tương tác

Thị trường trao đổi được hỗ trợ¶

Vui lòng đọc các ghi chú cụ thể về trao đổi để tìm hiểu về các cấu hình đặc biệt cuối cùng cần thiết cho mỗi trao đổi

  • sàn giao dịch
  • bittrex
  • Cổng. io
  • sàn giao dịch
  • Kraken
  • OKX [OKEX cũ]
  • có thể là nhiều người khác thông qua
    . [Chúng tôi không thể đảm bảo chúng sẽ hoạt động]

Sàn giao dịch hợp đồng tương lai được hỗ trợ [thử nghiệm]¶

  • sàn giao dịch
  • Cổng. io
  • OKX

Vui lòng đảm bảo đọc các ghi chú cụ thể về trao đổi, cũng như giao dịch với tài liệu đòn bẩy trước khi đi sâu vào

Cộng đồng đã thử nghiệm¶

Trao đổi xác nhận làm việc bởi cộng đồng

  • bitvavo
  • Kucoin

Yêu cầu¶

Yêu cầu phần cứng¶

Để chạy bot này, chúng tôi khuyên bạn nên sử dụng phiên bản đám mây linux với tối thiểu

  • RAM 2GB
  • Dung lượng đĩa 1GB
  • 2vCPU

Yêu cầu phần mềm¶

  • Docker [Được khuyến nghị]

Ngoài ra

  • Trăn 3. 8+
  • con sốp [con số 3]
  • git
  • TA-Lib
  • virtualenv [Được khuyến nghị]

Ủng hộ¶

Trợ giúp / Discord¶

Đối với bất kỳ câu hỏi nào không có trong tài liệu hoặc để biết thêm thông tin về bot hoặc chỉ để tương tác với những cá nhân có cùng chí hướng, chúng tôi khuyến khích bạn tham gia máy chủ bất hòa Freqtrade

Sẵn sàng để thử?¶

Bắt đầu bằng cách đọc hướng dẫn cài đặt cho docker [được khuyến nghị] hoặc cài đặt không có docker

Giao dịch trực tuyến đã trở thành một trong những hình thức đầu tư phổ biến nhất trên thế giới hiện nay. Thích tiền điện tử và ngoại hối là những lĩnh vực hàng đầu. Do sự phổ biến này, các lập trình viên đã cố gắng tìm ra cách thức mà quy trình giao dịch có thể được tự động hóa để thu được nhiều lợi nhuận hơn.

Trong hướng dẫn này, chúng ta sẽ xem xét cách một người có thể bắt đầu hành trình lập trình bot giao dịch của mình

Mục lục

  • Bot giao dịch là gì
  • điều kiện tiên quyết
  • Mã hóa và phát triển
  • Tại sao Bot giao dịch thuật toán
  • Tại sao mọi người vẫn chống lại giao dịch thuật toán?
  • Sự kết luận

Bot giao dịch là gì?

Bot giao dịch đơn giản là một phần mềm tự động hóa quy trình giao dịch. Nó sử dụng dữ liệu trong quá khứ để đưa ra kết quả mong đợi

điều kiện tiên quyết

Điều kiện tiên quyết chính cho hướng dẫn này là kiến ​​thức cơ bản về python và các thuật toán của nó. Để thử nghiệm, chúng tôi sẽ sử dụng QUANTCONNECT sử dụng công cụ tinh gọn để tích hợp mã của bạn với trang web giao dịch. Điều đó có nghĩa là bạn không yêu cầu trình chỉnh sửa ngoại tuyến vì trang web cung cấp môi trường phát triển của riêng mình

Mã hóa và phát triển

Với các yêu cầu của bạn đã sẵn sàng, giờ đây bạn có thể viết mã để hiểu thực tế

Truy cập trang web. lượng tử. com và đăng ký để thiết lập môi trường mã hóa của bạn. Bạn cũng có thể sử dụng trình chỉnh sửa ngoại tuyến và tải mã lên sau để kiểm tra

Bắt đầu nào

Chúng tôi sẽ phát triển bot bằng cách làm theo các bước dưới đây

Bước 1. Tạo một thuật toán mới

Từ các tùy chọn ở phía bên trái của trang, nhấp vào

import NumPy as np
1. Bạn sẽ được chuyển đến trình chỉnh sửa với một lớp được tạo tự động

Dưới đây là lớp được tạo

class GeekyBlueSeahorse[QCAlgorithm]:
    def Initialize[self]:
    def OnData[self, data]:

Bước 2. Nhập thư viện cần thiết

Trong trường hợp này, chúng tôi sẽ chỉ yêu cầu một thư viện i. e. NumPy

Nhập ở trên cùng như sau

import NumPy as np

Bước 3. Khởi tạo các biến cần thiết

Trong phương thức khởi tạo, chúng tôi sẽ khởi tạo một số tham số

  • Khởi tạo tiền mặt cho mục đích kiểm tra lại [chúng tôi gọi đó là tiền mặt chiến lược] sẽ được sử dụng trên tài khoản thực
  • Đặt ngày bắt đầu và ngày kết thúc cho backtest

Mã này như sau

        self.SetStartDate[2015, 3, 26]  # Set Start Date
        self.SetEndDate[2021, 9, 25] # Set End Date
        self.SetCash[100000]  # Set Strategy Cash

Vẫn theo phương thức khởi tạo, chúng ta sẽ

  • Sử dụng chức năng
    import NumPy as np
    
    2 để theo dõi độ phân giải của dữ liệu dự định
  • Khởi tạo số ngày chúng tôi sẽ nhìn lại để xác định điểm dừng của chúng tôi
  • Đặt giới hạn cho lần xem lại tôi. e. giới hạn dưới và giới hạn trên

Trong trường hợp này, chúng tôi sẽ sử dụng độ phân giải hàng ngày

    self.symbol = self.AddEquity["SPY", Resolution.Daily].Symbol
    self.lookback = 20
    self.ceiling, self.floor = 30, 10

Điều cuối cùng để khởi tạo là phạm vi cắt lỗ

    self.initialStopRisk = 0.98
    self.trailingStopRisk = 0.9

Biến đầu tiên xác định mức dừng lỗ của chúng ta sẽ gần với giá chứng khoán. Có nghĩa là nó sẽ cho phép mất 2% trước khi bị tấn công

Biến thứ hai cho biết mức độ đóng điểm dừng giao dịch của chúng tôi sẽ theo giá của tài sản. Điều này có nghĩa là nó sẽ giảm giá 10%, khá lớn nhưng mang lại nhiều cơ hội hơn cho sự linh hoạt về giá

Bước 4. Xác định một phương pháp để vẽ đồ thị dữ liệu

Chúng tôi sẽ xác định phương pháp

import NumPy as np
3 để tạo một biểu đồ giá của chứng khoán. Điều này đưa ra một điểm chuẩn để so sánh hiệu suất thuật toán của chúng tôi

________số 8

Điều này cũng sẽ xác định giá đóng cửa

Bước 5. Tạo phương thức giao dịch

Bước tiếp theo sẽ là tạo phương thức sẽ thực hiện tất cả giao dịch cho chúng tôi. Nó sẽ được gọi sau khi thị trường mở cửa. Chúng ta sẽ gọi nó là

import NumPy as np
4 cho đơn giản

class GeekyBlueSeahorse[QCAlgorithm]:
    def Initialize[self]:
    def OnData[self, data]:
0

Sau này, chúng ta sẽ phải khởi tạo thêm một chức năng trong phương thức khởi tạo. Đây là hàm

import NumPy as np
5 có ba tham số

  • Cái đầu tiên chỉ định ngày mà phương thức được gọi
  • Cái thứ hai chỉ định thời điểm phương thức được gọi
  • Cái cuối cùng chỉ định phương thức nào được gọi, trong trường hợp này là phương thức
    import NumPy as np
    
    6

Thêm đoạn mã sau vào phương thức khởi tạo

class GeekyBlueSeahorse[QCAlgorithm]:
    def Initialize[self]:
    def OnData[self, data]:
3

Bước 6. Triển khai phương thức EveryMarketOpen

Đầu tiên, chúng tôi sẽ xác định thời lượng xem lại cho đột phá của chúng tôi. Trong thời hạn 60 ngày, chúng tôi sẽ so sánh giá trị hiện tại hôm nay với cùng giá trị ngày hôm qua. Điều này sẽ giúp xác định độ dài của cửa sổ xem lại

Gọi chức năng Lịch sử để lấy dữ liệu trong 61 ngày qua hoặc số ngày bạn muốn. Đây là nơi chúng tôi sử dụng thư viện NumPy để tính độ lệch chuẩn trong hai ngày. Chúng tôi sẽ liệt kê tất cả các mức giá cao nhất và thấp nhất trong một phạm vi cụ thể, trong trường hợp này là 60 ngày

Đoạn mã sau thuộc phương pháp

import NumPy as np
6 này để thực hiện tất cả các phép so sánh cần thiết để đưa ra kết quả

class GeekyBlueSeahorse[QCAlgorithm]:
    def Initialize[self]:
    def OnData[self, data]:
5

Bước 7. Vẽ giá dừng

Cuối cùng, in giá cổ phiếu mới vào bảng điều khiển, để kiểm tra giá đặt hàng mới mỗi khi chúng được cập nhật. Chúng ta không thể sử dụng hàm

import NumPy as np
8 bình thường, thay vào đó, hãy sử dụng hàm
import NumPy as np
9 tương đương với in

Hoàn thiện bằng cách vẽ giá dừng của vị trí của chúng tôi trên biểu đồ dữ liệu mà chúng tôi đã tạo trước đó. Điều này cho phép chúng tôi xem mức giá dừng của chúng tôi so với giá giao dịch chứng khoán

class GeekyBlueSeahorse[QCAlgorithm]:
    def Initialize[self]:
    def OnData[self, data]:
8

Dưới đây là mã hoàn chỉnh trông như thế nào

import NumPy as np
0

Tham khảo video này để biết thêm thông tin

Bước 8. Thực hiện backtest

Một backtest được thực hiện để đánh giá hiệu suất của thuật toán. Nó tích hợp mã với trang web môi giới của bạn để nhận được kết quả như thể đó là một hoạt động giao dịch thực tế

Bạn có thể xem hình ảnh bên dưới

Theo các giá trị bạn đã nhập, bạn sẽ nhận được kết quả của mình trong một giao diện tương tự như giao diện hiển thị trong hình bên dưới

Tại sao bot giao dịch thuật toán

Dưới đây là một số ưu điểm chính của giao dịch thuật toán này

  1. Tiết kiệm thời gian vì nhà giao dịch không cần phải ngồi đó cả ngày để thực hiện giao dịch. Điều này cho phép một người vừa làm việc khác vừa kiếm được
  2. Dự kiến ​​độ chính xác cao hơn do bot so sánh và xem xét một khối lượng lớn dữ liệu trước khi đưa ra dự đoán. Đây là phần thưởng vì nhà giao dịch không thể xem qua dữ liệu lên đến hoặc có thể hơn một năm
  3. Tăng thời gian giao dịch - Rất có thể, bot có thể giao dịch 24 giờ một ngày mà không mệt mỏi. Điều này có nghĩa là nếu độ chính xác của nó đủ cao thì lợi nhuận kiếm được sẽ cao hơn so với giao dịch do con người hướng dẫn.

Tại sao mọi người vẫn chống lại giao dịch thuật toán?

Bên cạnh việc mang lại kết quả tốt hơn, một số người vẫn chống lại loại giao dịch này. Đây là một trong những lý do chính

Rủi ro hệ thống

Đôi khi, các mối liên kết giữa các thị trường tài chính có thể xảy ra. Kết quả là, các thuật toán hoạt động theo các thị trường đó truyền các cú sốc nhanh chóng từ thị trường này sang thị trường khác, do đó gây ra rủi ro hệ thống. Những rủi ro mang tính hệ thống này mang lại những tổn thất lớn, được coi là rủi ro lớn

Do rủi ro như vậy, mọi người thích tự giao dịch hơn là phụ thuộc vào phần mềm

Sự kết luận

Với nền kinh tế điện tử đang phát triển, giao dịch điện tử đã trở thành một trong những đóng góp lớn nhất. Đưa ra phán quyết về việc có nên sử dụng phần mềm tự động [Trading bot] hay không luôn là quyết định cá nhân

Bài viết này đặt ra một hành trình cho những ai quan tâm đến việc phát triển thuật toán của họ để giao dịch thay vì sử dụng thuật toán làm sẵn

Python có tốt cho bot giao dịch không?

Có, bot giao dịch cổ phiếu python thường sinh lãi . Vì các bot này xử lý các sản phẩm dựa trên thị trường như cổ phiếu và tiền điện tử, đôi khi bạn cũng có thể bị thua lỗ. Tuy nhiên, mẹo của giao dịch là thực hiện các giao dịch có lợi nhuận cao hơn các giao dịch thua lỗ.

Bot giao dịch có thể sinh lãi không?

Tuy nhiên, nhìn chung, có thể kiếm lợi nhuận từ việc sử dụng bot giao dịch tiền điện tử . Tuy nhiên, điều quan trọng cần nhớ là luôn có rủi ro thua lỗ và bạn không bao giờ nên đầu tư nhiều tiền hơn số tiền bạn có thể để mất.

Bot giao dịch có phải là một ý tưởng hay không?

Trả lời. Các bot giao dịch có lợi nhuận miễn là bạn có thể định cấu hình chúng đúng cách . Các bot giao dịch tiền điện tử tốt nhất rõ ràng sẽ tạo ra lợi nhuận và điều cần thiết là phải thiết lập để kiểm tra chúng hoặc có một số loại bảo đảm trước khi mua. Sau đó, điều cần thiết là học cách làm việc của họ. Nếu không, họ cũng có thể thua lỗ.

Bot giao dịch có miễn phí không?

Pionex cung cấp 16 bot giao dịch miễn phí cho các nhà đầu tư nhỏ lẻ . Phí giao dịch thấp nhất so với hầu hết các sàn giao dịch lớn. Phí giao dịch là 0. 05% cho maker và taker. Grid Trading Bot cho phép người dùng mua thấp và bán cao trong một phạm vi giá cụ thể.

Chủ Đề