アルゴリズム取引において、cBotsやインジケーターに対して、現在の市場レートを使用して通貨を自動的に変換する機能を持たせることは非常に重要です。このAPIガイドでは、この機能がcTraderでどのように実装されているかを説明します。
1分でわかる通貨変換!
Convert (double value, Asset from, Asset to
およびConvert(double value, string from, string to))
メソッドは、指定された資産間または指定された名前の資産間の正確な換算レートを返します。これらのメソッドには、Algo
クラスの新しいAssetConverter
プロパティを介してアクセスできます!Asset
クラスには、任意のAsset
オブジェクトから簡単に呼び出せるConvert(Asset to, double value)
およびConvert(string to, double value)
メソッドがあります。- バックテスト時には、cTraderは自動的に過去の換算レートを使用します!つまり、過去のレートに基づいた正確な結果を常に期待でき、cBotsのパフォーマンスを完全に評価することができます。
通貨変換の仕組み
IAssetConverter
インターフェースは、cAlgo.API.Internals
名前空間にあり、Convert()
メソッドは以下のオーバーロードを持っています。
double Convert(double value, Asset from, Asset to)
。指定された値をfrom
資産からto
資産に変換します。double Convert(double value, string from, string to)
。指定された値をfrom
文字列に一致する資産からto
文字列に一致する資産に変換します。
Algo
クラスには、新たに IAssetConverter
タイプの AssetConverter
プロパティが追加されました。その結果、以下のように単に入力するだけで、上記の2つのメソッドにアクセスできます。
1 |
|
Asset
クラスには、以下のオーバーロードを持つ独自の Convert()
メソッドもあります。
double Convert(Asset to, double value)
。このメソッドが呼び出された資産から、指定された値をto
資産に変換します。double Convert(string to, double value)
。このメソッドが呼び出された資産から、指定された値をto
文字列に一致する資産に変換します。
以下の例では、cBotがGBPをJPYに変換し、その後、計算された値を注文数量として使用して新しいマーケットオーダーを実行します。
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 |
|
ログを確認すると、cBotが期待通りに動作していることがわかります。インスタンスが起動された時点で、GBPJPYの入札価格は159.619でした。
バックテストにおける通貨変換
cTraderはバックテストにおいて、過去の換算レートを完全にサポートしています。
これにより、上記のいずれかのメソッドを使用するcBotをバックテストする際、換算計算は指定された資産間の現在の為替レートではなく、過去の正確なデータを使用して行われます。この機能により、バックテストおよび最適化の結果が、過去の市場状況を考慮した上で可能な限り正確になります。
cTraderは、取引インストルメントの無限の数の可能性を含む正確な換算チェーンを構築することができます。そのため、バックテストを実行したいシンボルの基軸および/またはクオート資産が、アカウントの預金通貨と異なる場合でも、cTraderはすべての必要な計算を処理して、正確なバックテスト結果を提供します。
まとめると、換算レートは、cBots/インジケーターが期待通りに動作することを確認するためのもう一つの貴重なツールです。cTraderはバックテストで資産を換算する際に過去のデータの使用をサポートしているため、バックテスト/最適化の結果が過去の状況に基づいて正確であることが保証されます。