Bỏ qua

Cách tạo một bot giao dịch forex bằng Python sử dụng AI

Bài viết và video này sẽ hướng dẫn cách tạo một bot giao dịch Python miễn phí cho cTrader với AI.

Ghi chú

cTrader là nền tảng lớn duy nhất hỗ trợ Python gốc, cho phép bất kỳ ai tạo các robot Python mạnh mẽ để tự động hóa các chiến lược giao dịch. Không cần adapter hoặc giải pháp phức tạp nào.

Trong khi ChatGPT được sử dụng để minh họa, các bước tương tự để tạo bot giao dịch với AI cũng áp dụng cho Gemini, Claude, DeepSeek và các công cụ khác.

Chọn một mẫu Python

Mở cTrader Algo trong cTrader Windows hoặc Mac, sau đó nhấp vào Mới để bắt đầu tạo một bot giao dịch mới.

Trong trình hướng dẫn tạo thuật toán, xây dựng một thuật toán mới và đặt tên cho nó.

Chọn Python làm ngôn ngữ lập trình, sau đó chọn tùy chọn Sử dụng mẫu.

cTrader cung cấp nhiều mẫu Python đa dạng, bao gồm mọi loại chiến lược, phong cách phân tích hoặc hoạt động giao dịch tự động. Các thuật toán được xây dựng sẵn này đã chứa logic giao dịch đầy đủ và các tham số có thể điều chỉnh, vì vậy chúng đã sẵn sàng để sử dụng ngay sau khi bạn lưu và xây dựng chúng.

Ghi chú

Toàn bộ bộ sưu tập mẫu thuật toán có sẵn trong trình hướng dẫn tạo thuật toán trong cTrader Windows hoặc Mac, và bạn cũng có thể truy cập chúng trong kho lưu trữ công khai của chúng tôi.

Giả sử chúng tôi chuyên về giao dịch phá vỡ giá (breakout). Do đó, chúng tôi chọn Sample Breakout cBot.

Ghi chú

Mô tả chi tiết về các mẫu thuật toán phổ biến, bao gồm Breakout cBot, có sẵn trong Cơ sở kiến thức của chúng tôi.

Breakout cBot tận dụng sự di chuyển giá vượt qua mức hỗ trợ hoặc kháng cự được xác định trước, và chỉ báo Bollinger Bands điều khiển các quyết định của nó. Hãy xây dựng bot giao dịch và backtest nó.

Nhấn Ctrl+B hoặc nhấp vào Xây dựng ở đầu trình chỉnh sửa mã.

Khi quá trình xây dựng thành công, nhấp vào bất kỳ phiên bản nào có sẵn dưới tên cBot.

Trong lưới chính, điều hướng đến tab Backtesting. Thực hiện một bài kiểm tra backtest một năm bằng cách sử dụng các tham số mặc định để đánh giá kết quả của robot. cBot tạo ra lợi nhuận 22% trong khoảng thời gian này, thực hiện 74 giao dịch thắng từ tổng số 194 giao dịch như được ghi lại trong tab Thống kê giao dịch.

Nâng cấp cBot với AI

Với sự hỗ trợ của AI, bạn có thể nâng cấp mã của bot giao dịch để đạt kết quả tốt hơn và xác định các kết hợp tham số tạo ra lợi nhuận cao hơn.

RSI là một chỉ báo động lượng giúp loại bỏ các tín hiệu phá vỡ yếu hoặc sai. Chỉ báo này nên kết hợp hoàn hảo và bổ sung cho Bollinger Bands được sử dụng trong Sample Breakout cBot. Để tham khảo, bạn có thể lấy tích hợp RSI cho Super cBot được cung cấp trong một bài viết Trung tâm trợ giúp.

Lấy đoạn mã tích hợp RSI, đính kèm nó vào một lời nhắc chứa tất cả thông tin cần thiết, sau đó đưa mọi thứ vào công cụ AI:

Câu lệnh

Nghiên cứu việc tích hợp RSI trong Super cBot, sau đó triển khai các bộ lọc RSI tương tự trong Special cBot.

[Mã Special cBot]

[Mã Super cBot đã tích hợp RSI]

AI suy nghĩ và sau đó cung cấp mã cho Special cBot tích hợp với RSI.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleBreakoutcBot():
    Label = "Sample Breakout cBot"

    def on_start(self):
        # Bollinger Bands for breakout consolidation logic
        self.bollingerBands = api.Indicators.BollingerBands(api.Source, api.Periods, api.Deviations, api.MAType)

        # Track consolidation bars
        self.consolidation = 0

        # --- RSI filter (same style as grid cBot) ---
        self.rsi_period = getattr(api, "RsiPeriod", 14)
        self.rsi_overbought = getattr(api, "RsiOverbought", 70)
        self.rsi_oversold = getattr(api, "RsiOversold", 30)
        self.rsi = api.Indicators.RelativeStrengthIndex(api.Bars.ClosePrices, self.rsi_period)

    def on_bar(self):
        top = self.bollingerBands.Top.Last(1)
        bottom = self.bollingerBands.Bottom.Last(1)

        # Detect consolidation via band height
        if top - bottom <= api.BandHeightPips * api.Symbol.PipSize:
            self.consolidation += 1
        else:
            self.consolidation = 0

        if self.consolidation >= api.ConsolidationPeriods:
            volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)

            # Breakout up
            if api.Ask > top:
                if self.passes_rsi_filter():
                    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                    self.consolidation = 0
                else:
                    api.Print("RSI filter blocked BUY breakout (RSI={:.2f}, range {}-{})"
                              .format(self.get_rsi_value(), self.rsi_oversold, self.rsi_overbought))

            # Breakout down
            elif api.Bid < bottom:
                if self.passes_rsi_filter():
                    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                    self.consolidation = 0
                else:
                    api.Print("RSI filter blocked SELL breakout (RSI={:.2f}, range {}-{})"
                              .format(self.get_rsi_value(), self.rsi_oversold, self.rsi_overbought))

    # --- Helpers copied in spirit from the grid cBot ---
    def get_rsi_value(self):
        # Use the last CLOSED bar for stability
        return self.rsi.Result.Last(1)

    def passes_rsi_filter(self):
        r = self.get_rsi_value()
        return (r > self.rsi_oversold) and (r < self.rsi_overbought)

Tiếp theo, yêu cầu AI đề xuất các thiết lập tham số tối ưu cho bot giao dịch dựa trên chiến lược của chúng tôi.

Câu lệnh

Tôi muốn cBot tạo ra các tín hiệu mượt mà và chậm hơn, kết hợp một cách tự nhiên với bộ lọc RSI.
Tôi ưu tiên ít giao dịch hơn nhưng các điểm breakout phải rõ ràng hơn.
Tôi đặt chu kỳ tích lũy là 1 vì tôi muốn cBot phản ứng ngay khi
độ biến động bị nén lại.

Loại đường trung bình động nào là phù hợp nhất cho mục tiêu này?

AI suy nghĩ và sau đó cung cấp một số thông tin hữu ích. Nó đề xuất Wilders Smoothing là loại đường trung bình động tốt nhất cho chiến lược của chúng tôi.

Áp dụng các đề xuất của AI

Quay lại trình chỉnh sửa mã trong cTrader và áp dụng các thay đổi được đề xuất. Dán mã đã cập nhật, sau đó xây dựng cBot đã nâng cấp.

Mở lại tab Backtesting. Đặt đường trung bình động thành Wilders Smoothing, như được AI đề xuất, sau đó chạy một bài kiểm tra backtest cho cùng khoảng thời gian một năm.

Lần này, báo cáo backtest trong cùng khoảng thời gian cho thấy lợi nhuận 97%, một sự cải thiện đáng kể so với 22% mà logic cBot ban đầu mang lại.

Kết quả mới này cho thấy sự hiệu quả của hướng dẫn AI trong việc tinh chỉnh hiệu suất của bot giao dịch và tối ưu hóa các tham số của chúng để đạt được kết quả xuất sắc. Tỷ lệ thắng của robot cũng được cải thiện đáng kể, thực hiện 51 giao dịch thắng từ tổng số 93 giao dịch.

Khởi chạy cBot trên Đám mây

Nhờ vào tính năng đồng bộ hóa đám mây, cBot mới sẽ tự động có sẵn từ tất cả các ứng dụng cTrader nơi cTrader ID của bạn đang hoạt động. Bạn thậm chí có thể khởi chạy bot giao dịch trong cTrader Mobile hoặc Web.

Chỉ cần nhấn vào biểu tượng Bắt đầu.

Vì cBot chạy trên Đám mây, nó tiếp tục giao dịch 24 giờ không ngừng, ngay cả khi ứng dụng cTrader của bạn đã đóng hoặc thiết bị của bạn đã tắt. Không cần VPS.

Kiếm tiền từ cBot

Tùy chọn, bạn có thể kiếm tiền từ cBot của mình trên cTrader Store, một thị trường an toàn và năng động kết nối người mua và người bán các sản phẩm giao dịch.

Để xuất bản một sản phẩm, chọn cBot bạn muốn bán trực tiếp từ Đám mây hoặc tải lên một tệp, sau đó cung cấp các chi tiết cần thiết. Khi được xuất bản, thuật toán sẽ xuất hiện trên cTrader Store, trở nên có sẵn để hàng triệu người dùng cTrader mua.

Ghi chú

Phân phối thuật toán qua cTrader Store là hoàn toàn an toàn, vì mã nguồn của bạn không bao giờ bị tiết lộ hoặc tải lên bất kỳ đâu. Quyền sở hữu trí tuệ của bạn cũng được tôn trọng, vì mỗi lần mua sản phẩm là dành cho một người dùng duy nhất và không thể chuyển nhượng.

Image title