cTraderでのファイル操作
この記事と対応する動画では、cTraderでファイルを操作する方法を説明します。 平均的に、ユーザーはcBotやインジケーターがデバイスへのフルアクセス権を要求することに懸念を持っています。 特にソースコードが利用できない場合、アルゴリズムがこれらの権限で何をしているのかを知るのは困難です。 幸い、cTraderはアルゴリズムがローカルマシン上のファイルにアクセスするためのいくつかの方法を提供しており、昇格された権限を必要としません。
アルゴディレクトリへの書き込み
cTraderはすべてのアルゴリズムが次のアドレスのフォルダにアクセスすることを許可します:
C:/Users/{username}/Documents/cAlgo/Data/{algoType}
, ここでalgoTypeはcBotsまたはIndicatorsです。
例としてcBotを作成し、プログラム的にこのディレクトリにアクセスする方法をデモンストレーションします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
通常通り、cBotを保存してビルドし、そのインスタンスを作成します。
インスタンスが開始した後、上記のフォルダに移動できます。 その中に、コードで指定したテキストを含むHello World.txtファイルが表示されるはずです。
アルゴディレクトリからの読み取り
次のステップは、アルゴディレクトリにあるファイルの内容を読み取ることです。 これを行うために、OnStart()メソッドを次のように書き換えます。
1 2 3 4 | |
cBotをビルドして起動した後、アルゴリズムがファイルから文字列を読み取り、cTraderログに出力するのを確認できます。
他のディレクトリへのアクセス
これまでにcBotが実行した操作のいずれも、昇格されたアクセス権を提供する必要はありませんでした。 実際、クラスレベルでアクセス権はNoneに明示的に設定されていました。
別のディレクトリにあるファイルに書き込もうとするとどうなるかを試してみます。 ルートのDocumentsディレクトリにあるファイルに書き込むようにコードを変更します。
1 2 3 4 | |
cBotを再度ビルドして実行すると、この特定のディレクトリに書き込む権限がないことを示す例外がログにスローされます。
これを解決するために、cBotのコードに戻り、アクセス権を次のように変更します。
1 | |
cBotをビルドして実行します。 例外をスローする代わりに、ボットは指定されたディレクトリにアクセスし、正しいファイルに書き込みます。
アクセス権がどのように機能するかをさらにデモンストレーションするために、OnStart()メソッドを次のように変更します。
1 2 3 4 | |
また、アクセス権をNoneに戻します。
1 | |
cBotが実行を開始した後、ファイルから読み取ることができないことがわかります。