Vai al contenuto

Convertitore di valute

Nel trading algoritmico, dare ai cBot e agli indicatori la capacità di convertire autonomamente le valute utilizzando i tassi di mercato correnti è essenziale. In questa guida API, illustriamo come questa funzionalità è implementata in cTrader.

Conversione di valute in un minuto!

  • I metodi Convert (double value, Asset from, Asset to e Convert(double value, string from, string to)) restituiscono il tasso di conversione esatto tra gli asset specificati o gli asset con i nomi specificati. Accedi ad essi tramite la nuova proprietà AssetConverter della classe Algo.
  • La classe Asset include i propri metodi Convert(Asset to, double value) e Convert(string to, double value) che possono essere facilmente richiamati da qualsiasi oggetto Asset.
  • Durante il backtesting, cTrader utilizzerà automaticamente i tassi di conversione storici. Ciò significa che puoi sempre aspettarti risultati storicamente accurati e valutare completamente le prestazioni dei tuoi cBot.

Come funziona la conversione di valute

L'interfaccia IAssetConverter nello spazio dei nomi cAlgo.API.Internals contiene il metodo Convert() che ha i seguenti overload:

  • double Convert(double value, Asset from, Asset to) - converte il valore specificato dall'asset from all'asset to.
  • double Convert(double value, string from, string to) - converte il valore specificato dall'asset il cui nome corrisponde alla stringa from all'asset il cui nome corrisponde alla stringa to.

La classe Algo ora include la proprietà AssetConverter di tipo IAssetConverter. Puoi accedere ai due metodi sopra digitando quanto segue.

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

La classe Asset ha anche i propri metodi Convert() con i seguenti overload:

  • double Convert(Asset to, double value) - converte il valore specificato dall'asset da cui viene chiamato questo metodo all'asset to.
  • double Convert(string to, double value) - converte il valore specificato dall'asset da cui viene chiamato questo metodo all'asset il cui nome corrisponde alla stringa to.

Considera l'esempio seguente in cui il nostro cBot converte GBP in JPY e quindi esegue un nuovo ordine di mercato utilizzando il valore calcolato come volume dell'ordine.

 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");
        }


    }
}

Se diamo un'occhiata al registro, possiamo vedere che il nostro cBot si comporta come previsto. Al momento dell'avvio dell'istanza, il prezzo bid per GBPJPY era pari a 159.619.

Conversione di valute nel backtesting

cTrader supporta completamente i tassi di conversione storici nel backtesting.

Ciò significa che, quando esegui il backtest di un cBot che utilizza uno qualsiasi dei metodi descritti sopra, i calcoli di conversione verranno eseguiti utilizzando dati storicamente accurati anziché i tassi di cambio correnti tra gli asset specificati. Questa funzionalità garantisce che i risultati del backtesting e dell'ottimizzazione siano il più precisi possibile date le condizioni di mercato passate.

Nota che cTrader può costruire catene di conversione accurate utilizzando strumenti di trading potenzialmente illimitati. Di conseguenza, anche se la valuta di deposito del tuo conto differisce dagli asset di base o di quotazione del simbolo su cui desideri eseguire un backtest, cTrader gestirà tutti i calcoli necessari per fornirti risultati di backtesting precisi.

In sintesi, i tassi di conversione costituiscono un altro strumento prezioso per assicurarsi che i tuoi cBot e indicatori funzionino esattamente come previsto. Poiché cTrader supporta l'uso di dati storici durante la conversione di asset nel backtesting, puoi essere sicuro che tutti i risultati di backtesting e ottimizzazione siano storicamente accurati.