Bỏ qua

Chuyển đổi tiền tệ

Trong giao dịch thuật toán, việc cho phép cBot và chỉ báo tự động chuyển đổi tiền tệ bằng tỷ giá thị trường hiện tại là rất cần thiết. Trong hướng dẫn API này, chúng tôi sẽ đề cập đến cách tính năng này được triển khai trong cTrader.

Chuyển đổi tiền tệ trong một phút!

  • Các phương thức Convert (double value, Asset from, Asset toConvert(double value, string from, string to)) trả về tỷ giá chuyển đổi chính xác giữa các tài sản được chỉ định hoặc các tài sản có tên được chỉ định. Truy cập chúng thông qua thuộc tính AssetConverter mới của lớp Algo.
  • Lớp Asset bao gồm các phương thức Convert(Asset to, double value)Convert(string to, double value) riêng có thể được gọi dễ dàng từ bất kỳ đối tượng Asset nào.
  • Khi backtest, cTrader sẽ tự động sử dụng tỷ giá chuyển đổi lịch sử. Điều này có nghĩa là bạn luôn có thể mong đợi kết quả chính xác về mặt lịch sử và đánh giá đầy đủ hiệu suất của cBot của bạn.

Cách chuyển đổi tiền tệ hoạt động

Giao diện IAssetConverter trong không gian tên cAlgo.API.Internals chứa phương thức Convert() có các phiên bản sau:

  • double Convert(double value, Asset from, Asset to) - chuyển đổi giá trị được chỉ định từ tài sản from sang tài sản to.
  • double Convert(double value, string from, string to) - chuyển đổi giá trị được chỉ định từ tài sản có tên khớp với chuỗi from sang tài sản có tên khớp với chuỗi to.

Lớp Algo hiện bao gồm thuộc tính AssetConverter thuộc loại IAssetConverter. Bạn có thể truy cập hai phương thức trên bằng cách gõ như sau.

1
AssetConverter.Convert(double value, Asset from, Asset to)

Lớp Asset cũng có các phương thức Convert() riêng với các phiên bản sau:

  • double Convert(Asset to, double value) - chuyển đổi giá trị được chỉ định từ tài sản mà phương thức này được gọi sang tài sản to.
  • double Convert(string to, double value) - chuyển đổi giá trị được chỉ định từ tài sản mà phương thức này được gọi sang tài sản có tên khớp với chuỗi to.

Hãy xem xét ví dụ dưới đây, trong đó cBot của chúng ta chuyển đổi GBP thành JPY và sau đó thực hiện một lệnh thị trường mới sử dụng giá trị đã tính toán làm khối lượng lệnh.

 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
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 SampleConversionTestBot : Robot
    {
        [Parameter(DefaultValue = "Hello world!")]
        public string Message { get; set; }

        protected override void OnStart()
        {

            Asset baseAssetForNewOrder = Assets.GetAsset("GBP");

            Asset quoteAssetForNewOrder = Assets.GetAsset("JPY");

            double newOrderVolume = baseAssetForNewOrder.Convert(quoteAssetForNewOrder, 1000.00);

            ExecuteMarketOrder(TradeType.Buy, SymbolName, newOrderVolume);

            Print($"New order has been executed with {newOrderVolume} as its volume");
        }


    }
}

Nếu chúng ta xem nhật ký, chúng ta có thể thấy rằng cBot của chúng ta hoạt động như mong đợi. Tại thời điểm phiên bản được khởi động, giá chào mua cho GBPJPY bằng 159.619.

Chuyển đổi tiền tệ trong backtesting

cTrader hỗ trợ đầy đủ tỷ giá chuyển đổi lịch sử trong backtesting.

Điều này có nghĩa là, khi bạn backtest một cBot sử dụng bất kỳ phương thức nào được mô tả ở trên, các tính toán chuyển đổi sẽ được thực hiện bằng cách sử dụng dữ liệu chính xác về mặt lịch sử thay vì tỷ giá hối đoái hiện tại giữa các tài sản được chỉ định. Tính năng này đảm bảo rằng kết quả của backtesting và tối ưu hóa là chính xác nhất có thể dựa trên điều kiện thị trường trong quá khứ.

Lưu ý rằng cTrader có thể xây dựng chuỗi chuyển đổi chính xác bằng cách sử dụng các công cụ giao dịch có khả năng không giới hạn. Kết quả là, ngay cả khi tiền tệ ký quỹ tài khoản của bạn khác với tài sản cơ sở hoặc báo giá của biểu tượng mà bạn muốn thực hiện backtest, cTrader sẽ xử lý tất cả các tính toán cần thiết để cung cấp cho bạn kết quả backtesting chính xác.

Tóm lại, tỷ giá chuyển đổi là một công cụ quý giá khác để đảm bảo rằng cBot và chỉ báo của bạn hoạt động chính xác như mong đợi. Vì cTrader hỗ trợ việc sử dụng dữ liệu lịch sử khi chuyển đổi tài sản trong backtesting, bạn có thể chắc chắn rằng tất cả các kết quả backtesting và tối ưu hóa đều chính xác về mặt lịch sử.