Bỏ qua

Cách sử dụng chỉ báo trong cBot

Trong bài viết này và video tương ứng, chúng tôi sẽ trình bày cách bạn có thể tham chiếu và sử dụng các chỉ báo tùy chỉnh trong cBot của mình. Để làm điều này, chúng ta sẽ phát triển một thuật toán giao dịch sử dụng đầu ra của một chỉ báo tùy chỉnh mẫu để thực hiện các hoạt động giao dịch.

Tạo một cBot mới

Để xem tất cả các chỉ báo tùy chỉnh hiện đang được cài đặt trên máy của bạn, hãy chuyển sang ứng dụng Algo và tiến tới tab Indicators.

Nếu bạn thấy một hoặc nhiều chỉ báo tùy chỉnh ở đây, điều đó có nghĩa là bạn có thể tự do sử dụng chúng trong bất kỳ thuật toán nào khác của mình. Trong hướng dẫn này, chúng ta sẽ sử dụng chỉ báo Sample SMA và phát triển một cBot giao dịch dựa trên hướng của đường trung bình động đơn giản.

Đầu tiên, chúng ta sẽ tạo một cBot mới và đổi tên nó thành một cái gì đó thông tin như "SMA Robot". cBot của chúng ta sẽ vào lệnh mua khi SMA trở nên tăng và vào lệnh bán khi SMA trở nên giảm. cBot của chúng ta sẽ không phòng ngừa rủi ro cho các vị thế của nó, nghĩa là các vị thế ngược chiều sẽ bị đóng trên mỗi tín hiệu mới.

Khởi tạo một chỉ báo

Khi nói đến các chỉ báo tùy chỉnh, bước đầu tiên của chúng ta là thêm một tham chiếu đến chỉ báo tùy chỉnh. Để tham chiếu một chỉ báo tùy chỉnh, chúng ta cần thực hiện các bước sau:

  1. Nhấp vào nút Manage references.
  2. Tìm chỉ báo mà chúng ta muốn tham chiếu trong cửa sổ mới mở.
  3. Đánh dấu vào ô bên cạnh chỉ báo mà chúng ta muốn tham chiếu.
  4. Nhấp vào Áp dụng.

Sau khi chỉ báo đã được tham chiếu, chúng ta có thể tạo một biến thể hiện của loại đó.

1
SampleSMA _sma;

Ghi chú

Loại chỉ báo phải giống với tên lớp chỉ báo. Điều này có thể khác với tên tệp của chỉ báo.

Bước tiếp theo là khởi tạo chỉ báo trong phương thức OnStart() của chúng ta. Tuy nhiên, trước khi làm điều đó, chúng ta sẽ thêm một tham số vào cBot để cho phép chúng ta cấu hình các giai đoạn được sử dụng bởi chỉ báo SMA tùy chỉnh.

1
2
[Parameter(DefaultValue = 14)]
public int Periods { get; set; }

Chúng ta có thể sử dụng phương thức Indicators.GetIndicator<>() để khởi tạo bất kỳ chỉ báo tùy chỉnh nào mà chúng ta đang tham chiếu. Chúng ta cần xác định loại chỉ báo và truyền các tham số của chỉ báo được phân tách bằng dấu phẩy.

Ghi chú

Các tham số cần được truyền theo thứ tự được khai báo trong lớp chỉ báo.

Trong trường hợp của chúng ta, loại là SampleSMA và chúng ta sẽ truyền các giá trị nguồn của chỉ báo này, trong trường hợp này là giá đóng cửa của các nến và tham số Period.

1
_sma = Indicators.GetIndicator<SampleSMA>(Bars.ClosePrices, Periods);

Thực hiện logic giao dịch

Với chỉ báo của chúng ta đã được khởi tạo, chúng ta có thể thực hiện logic giao dịch. Chỉ báo SMA tùy chỉnh của chúng ta lưu các giá trị trung bình di động trong bộ sưu tập Results. Bộ sưu tập Results có hai phương thức hữu ích là IsRising()IsFalling(). Những phương thức này cho phép chúng ta biết được liệu kết quả chỉ báo đang tăng hay giảm.

Chúng ta sẽ sử dụng các phương thức này để thực hiện các điều kiện giao dịch của mình.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {        

    }
    else if(_sma.Result.IsFalling())
    {

    }
}

Bây giờ chúng ta sẽ điền vào các câu lệnh if của mình. Khi trung bình di động đang tăng, chúng ta sẽ đóng tất cả các vị thế bán và mở một vị thế mua. Ngược lại, khi trung bình di động đang giảm, chúng ta sẽ đóng tất cả các vị thế mua và mở một vị thế bán.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {
        Close(TradeType.Sell);
        Open(TradeType.Buy);
    }
    else if(_sma.Result.IsFalling())
    {
        Close(TradeType.Buy);
        Open(TradeType.Sell);            
    }
}

Trong mã của chúng ta, chúng ta đã sử dụng hai phương thức mới mà API không cung cấp theo mặc định. Phương thức Open() mở các vị thế mới dựa trên hướng và số lượng đã định. Phương thức Close() đóng tất cả các vị thế theo hướng đã định.

Đây là cách phương thức Open() được định nghĩa.

1
2
3
4
5
private void Open(TradeType tradeType)
{
    if(Positions.Count == 0)
        ExecuteMarketOrder(tradeType, SymbolName, Volume, InstanceId);
}

Để thực thi một lệnh bên trong phương thức Open(), chúng ta cũng cần thêm tham số Volume.

1
2
[Parameter(DefaultValue = 10000)]
public int Volume { get; set; }

Tất cả những gì còn lại là định nghĩa phương thức Close().

1
2
3
4
5
private void Close(TradeType tradeType)
{
    foreach (var position in Positions.Where(p => p.TradeType == tradeType))
        position.Close();
}

Tiến hành backtest

Như thường lệ, trước khi chúng ta để cBot giao dịch thay mặt chúng ta, chúng ta sẽ backtest nó một cách kỹ lưỡng. Để làm điều tương tự, hãy thêm một phiên bản và sau đó chuyển sang tab Backtesting.

Để kiểm tra cBot của chúng ta kỹ hơn nữa, chúng ta thêm chỉ báo tùy chỉnh mà chúng ta đã tham chiếu vào biểu đồ nơi một phiên bản được gắn và kiểm tra xem các điểm vào vị thế có khớp với đầu ra của chỉ báo hay không.

Để tìm hiểu thêm về việc sử dụng và phát triển cBot, hãy thoải mái duyệt qua các phần khác của tài liệu và đăng ký kênh YouTube của chúng tôi để được thông báo khi chúng tôi xuất bản video mới.

Trong bài viết này và video đi kèm, chúng tôi sẽ hướng dẫn cách bạn có thể tham chiếu và sử dụng các chỉ báo tùy chỉnh trong cBot của mình. Để làm điều đó, chúng ta sẽ phát triển một thuật toán giao dịch sử dụng đầu ra của một chỉ báo tùy chỉnh có sẵn để thực hiện các hoạt động giao dịch.

Tạo một cBot mới

Để xem tất cả các chỉ báo tùy chỉnh hiện được cài đặt trên máy của bạn, hãy chuyển sang ứng dụng Algo và chuyển đến 'Indicators'