Zum Inhalt

Währungsumrechner

Beim algorithmischen Handel ist es unerlässlich, cBots und Indikatoren die Fähigkeit zu geben, Währungen unter Verwendung aktueller Marktkurse autonom umzurechnen. In diesem API-Leitfaden behandeln wir, wie diese Funktion in cTrader implementiert ist.

Währungsumrechnung in einer Minute!

  • Die Methoden Convert (double value, Asset from, Asset to und Convert(double value, string from, string to)) geben den exakten Umrechnungskurs zwischen den angegebenen Assets oder den Assets mit den angegebenen Namen zurück. Greifen Sie über die neue Eigenschaft AssetConverter der Klasse Algo darauf zu.
  • Die Klasse Asset enthält ihre eigenen Methoden Convert(Asset to, double value) und Convert(string to, double value), die einfach von jedem Asset-Objekt aufgerufen werden können.
  • Beim Backtesting verwendet cTrader automatisch historische Umrechnungskurse. Das bedeutet, dass Sie immer historisch genaue Ergebnisse erwarten und die Performance Ihrer cBots vollständig bewerten können.

Wie die Währungsumrechnung funktioniert

Die Schnittstelle IAssetConverter im Namespace cAlgo.API.Internals enthält die Methode Convert(), die die folgenden Überladungen aufweist:

  • double Convert(double value, Asset from, Asset to) - rechnet den angegebenen Wert vom Asset from in das Asset to um.
  • double Convert(double value, string from, string to) - rechnet den angegebenen Wert vom Asset, dessen Name mit der Zeichenfolge from übereinstimmt, in das Asset um, dessen Name mit der Zeichenfolge to übereinstimmt.

Die Klasse Algo enthält nun die Eigenschaft AssetConverter vom Typ IAssetConverter. Sie können auf die beiden oben genannten Methoden zugreifen, indem Sie Folgendes eingeben.

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

Die Klasse Asset verfügt auch über eigene Methoden Convert() mit den folgenden Überladungen:

  • double Convert(Asset to, double value) - rechnet den angegebenen Wert vom Asset, von dem aus diese Methode aufgerufen wird, in das Asset to um.
  • double Convert(string to, double value) - rechnet den angegebenen Wert vom Asset, von dem aus diese Methode aufgerufen wird, in das Asset um, dessen Name mit der Zeichenfolge to übereinstimmt.

Betrachten Sie das folgende Beispiel, in dem unser cBot GBP in JPY umrechnet und dann eine neue Market-Order ausführt, wobei der berechnete Wert als Ordervolumen verwendet wird.

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


    }
}

Wenn wir uns das Protokoll ansehen, können wir sehen, dass sich unser cBot wie erwartet verhält. Zum Zeitpunkt des Starts der Instanz betrug der Geldkurs für GBPJPY 159,619.

Währungsumrechnung beim Backtesting

cTrader unterstützt historische Umrechnungskurse beim Backtesting vollständig.

Das bedeutet, dass beim Backtesting eines cBots, der eine der oben beschriebenen Methoden verwendet, Umrechnungsberechnungen mit historisch genauen Daten und nicht mit den aktuellen Wechselkursen zwischen den angegebenen Assets durchgeführt werden. Diese Funktion stellt sicher, dass die Ergebnisse von Backtesting und Optimierung angesichts vergangener Marktbedingungen so präzise wie möglich sind.

Beachten Sie, dass cTrader genaue Umrechnungsketten unter Verwendung potenziell unbegrenzter Handelsinstrumente erstellen kann. Selbst wenn sich Ihre Kontoeinzahlungswährung von den Basis- oder Notierungsassets des Symbols unterscheidet, für das Sie ein Backtesting durchführen möchten, führt cTrader daher alle erforderlichen Berechnungen durch, um Ihnen präzise Backtesting-Ergebnisse zu liefern.

Zusammenfassend lässt sich sagen, dass Umrechnungskurse ein weiteres wertvolles Instrument darstellen, um sicherzustellen, dass Ihre cBots und Indikatoren genau wie erwartet funktionieren. Da cTrader die Verwendung historischer Daten beim Umrechnen von Assets im Backtesting unterstützt, können Sie sicher sein, dass alle Backtesting- und Optimierungsergebnisse historisch genau sind.