Bỏ qua

Quản lý chỉ báo kỹ thuật theo chương trình

Các nhà giao dịch thường dựa vào sự kết hợp giữa giao dịch thủ công và các công cụ hỗ trợ giao dịch tự động, đặc biệt là các chỉ báo tùy chỉnh. Tuy nhiên, trong nhiều trường hợp, các công cụ hỗ trợ này hoàn toàn không nhận biết được nhau và không thể phản ứng với hành động và kết quả của nhau.

May mắn thay, cTrader cung cấp một phương tiện thuận tiện để quản lý các chỉ báo biểu đồ theo chương trình. Sử dụng tính năng này, bạn có thể xây dựng các trợ lý động có thể đọc dữ liệu từ các chỉ báo mà người dùng thêm vào biểu đồ.

Bạn cũng có thể làm cho một thuật toán thêm, xóa hoặc thay đổi cài đặt chỉ báo dựa trên một số điều kiện, cho phép bạn mang lại nhiều giá trị hơn cho người dùng và mở ra những cơ hội mới để kiếm tiền.

Hướng dẫn API này giải thích cách bạn có thể quản lý các chỉ báo biểu đồ theo chương trình trong các điều kiện khác nhau.

Quản lý chỉ báo biểu đồ trong một phút!

  • Bằng cách quản lý các chỉ báo biểu đồ theo chương trình, bạn có thể điều chỉnh cài đặt chỉ báo (ví dụ: độ dày đường) tùy thuộc vào các điều kiện nhất định.
  • cBot có thể truy cập bất kỳ chỉ báo nào bạn gắn thủ công vào biểu đồ, đọc dữ liệu của chúng và giao dịch theo đó.
  • Các thuật toán của bạn có thể tự động thêm chỉ báo vào hoặc xóa chúng khỏi biểu đồ, giúp bạn tiết kiệm thời gian.
  • Quản lý các chỉ báo biểu đồ theo chương trình có thể thực hiện được với tất cả các chỉ báo tùy chỉnh.

Thêm và xóa chỉ báo theo chương trình

Bạn có thể dễ dàng thêm bất kỳ chỉ báo nào mà bạn có quyền truy cập bằng cách gọi phương thức sau.

1
ChartIndicator ChartIndicators.Add(string name, params object[] parameterValues)

Phương thức này lấy tên chỉ báo làm tham số đầu tiên và sau đó lấy tất cả các tham số của chỉ báo đó theo thứ tự (ví dụ: "Simple Moving Average", "High", 25).

Ghi chú

Phương thức sẽ chấp nhận tên của bất kỳ chỉ báo nào mà bạn có quyền truy cập.

Ghi chú

Bất kỳ tham số DataSeries nào cũng phải được chỉ định dưới dạng chuỗi trong các đối số của phương thức.

Ghi chú

Nếu một số tham số không được chỉ định, phương thức sẽ sử dụng các giá trị mặc định. Nếu một số tham số không hợp lệ, phương thức sẽ gọi trình xử lý OnException cho thuật toán của bạn.

Sau khi phương thức được thực thi, chỉ báo được yêu cầu sẽ ngay lập tức được thêm vào biểu đồ và bạn sẽ có thể quản lý nó bằng cách sử dụng giá trị được trả về bởi phương thức. Ví dụ, bạn có thể xóa nó bằng cách gọi phương thức ChartIndicators.Remove().

1
2
3
var newIndicator = ChartIndicators.Add("Simple Moving Average", "High", 25);
...
ChartIndicators.Remove(newIndicator);

Đây là một cBot đơn giản sử dụng cả hai phương thức để thêm chỉ báo Bollinger Bands tùy chỉnh vào biểu đồ bất cứ khi nào giá trị Average True Range (ATR) vượt qua một ngưỡng cụ thể. Nếu giá trị ATR giảm xuống dưới ngưỡng, chỉ báo sẽ bị xóa.

 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class ChartIndicatorsTest : Robot
    {

        private AverageTrueRange _aTR;
        private ChartIndicator _customBollingerBands;

        protected override void OnStart()
        {
            _aTR = Indicators.AverageTrueRange(14, MovingAverageType.Exponential);
            ChartIndicators.Add("Average True Range");
        }

        protected override void OnBar()
        {
            if (_aTR.Result[Bars.Count - 1] >= 0.0002) 
            {
                _bollingerBands = ChartIndicators.Add("Custom BB");
            } else if (_bollingerBands != null)
            {
                ChartIndicators.Remove(_bollingerBands);
            }
        }

    }
}

Sửa đổi cài đặt của chỉ báo

Giao diện ChartIndicator cung cấp quyền truy cập trực tiếp vào tất cả các cài đặt chính của chỉ báo thông qua các thuộc tính sau:

  • ChartIndicator.Type, lấy loại chỉ báo.
  • ChartIndicator.Parameters, lấy danh sách tất cả các tham số của chỉ báo.
  • Lines, lấy danh sách tất cả các đường được xuất ra bởi chỉ báo.

Vì chỉ báo là công cụ hỗ trợ trực quan, bạn có thể cải thiện chúng bằng cách sửa đổi cài đặt của chúng tùy thuộc vào điều kiện thị trường. Chỉ báo sau đây cố gắng thực hiện chính xác điều đó.

 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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Indicator(AccessRights = AccessRights.None, IsOverlay = true)]
    public class ColourMovingAverage : Indicator
    {

        private MovingAverage _fastMA;
        private ChartIndicator _chartMA;
        private const int __lineThickness = 4;


        protected override void Initialize()
        {
            _fastMA = Indicators.MovingAverage(Bars.OpenPrices, 10, MovingAverageType.Exponential);
            _chartMA = ChartIndicators.Add("Exponential Moving Average", "Open", 10);
        }

        public override void Calculate(int index)
        {
            var line = _chartMA.Lines[0];

            if (Symbol.Bid > _fastMA.Result[index]) 
            {
                line.Color = Color.Green;
                line.Thickness = __lineThickness;
            } else 
            {
                line.Color = Color.Red;
                line.Thickness = __lineThickness;
            }
        }
    }
}

Tùy thuộc vào việc giá hiện tại của một ký hiệu cao hơn hay thấp hơn đường trung bình động theo cấp số nhân, màu sắc và độ dày của đường chỉ báo sẽ thay đổi. Trong một số trường hợp (ví dụ: phản ứng nhanh với xu hướng thay đổi), sự hỗ trợ trực quan bổ sung có thể tạo nên sự khác biệt.

Xử lý các sự kiện bổ sung

Giao diện ChartsIndicators cũng hiển thị một số sự kiện mà bạn có thể xử lý để quản lý các chỉ báo biểu đồ theo chương trình:

  • IndicatorAdded, được kích hoạt mỗi khi một chỉ báo mới được thêm vào biểu đồ.
  • IndicatorRemoved, được kích hoạt mỗi khi một chỉ báo bị xóa khỏi biểu đồ.
  • IndicatorModified, được kích hoạt mỗi khi cài đặt của một chỉ báo được điều chỉnh.

Những sự kiện này rất có giá trị đối với các nhà phát triển plugin. Thông qua plugin, bạn có thể tạo các phần tử mới cho giao diện người dùng cTrader, thay đổi nội dung của chúng tùy thuộc vào việc người dùng thêm, xóa hoặc sửa đổi chỉ báo.

Quản lý chỉ báo trong các chế độ khác nhau

Dưới đây là cách quản lý chỉ báo hoạt động trong các chế độ và công cụ cTrader khác nhau.

Chế độ/công cụ Cách thức hoạt động
Backtest không trực quan Tất cả các chỉ báo được thêm vào thông qua ChartIndicators sẽ được hiển thị trên biểu đồ khi quá trình backtest kết thúc.
Backtest trực quan và Market Replay Mọi thứ hoạt động theo thời gian thực như dự định.
Tối ưu hóa Tất cả các hoạt động sẽ hoạt động nhưng không có thay đổi nào được thực hiện trên biểu đồ khi quá trình backtest kết thúc.
cTrader CLI Tất cả các hoạt động hoạt động như dự định nhưng không có thay đổi nào được thực hiện trên bất kỳ biểu đồ nào.

Quản lý các chỉ báo biểu đồ theo chương trình là lý tưởng cho bất kỳ nhà phát triển nào muốn cung cấp các thuật toán nâng cao hoặc đơn giản hóa việc làm việc với chỉ báo. Bằng cách tận dụng tính năng này, bạn có thể cung cấp các sản phẩm chất lượng cao và có giá trị cho người dùng của mình.

Image title