cTraderでのファイル操作

cBots (自動売買)

このビデオおよび対応する記事では、cTraderでファイルを操作する方法について説明します。平均して、ユーザーはフルアクセス権を要求するcBotやインディケーターの起動について懸念しています。特にソースコードが利用できない場合、アルゴリズムがこれらの権限で何をしているのかを知ることは困難です。幸いなことに、cTraderはアルゴが管理者権限を必要とせずにローカルマシンのファイルにアクセスできるいくつかの方法を提供しています。

アルゴディレクトリへの書き込み

cTraderは、すべてのアルゴが以下のアドレスのフォルダーにアクセスすることを許可しています。

C:/Users/{username}/Documents/cAlgo/Data/{algoType}

ここで、algoTypecBotsまたはIndicatorsです。

例としてcBotを作成し、このディレクトリにプログラムでアクセスする方法を示します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
using System.IO;
namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None)]
    public class FileBot : Robot
    {

        protected override void OnStart()
        {
            File.WriteAllText("Hello World.txt", "Hello World!");
        }
    }
}

いつものように、cBotを保存してビルドし、その後インスタンスを作成します。

インスタンスが起動した後、上記のフォルダに移動します。そこには、コードで指定したテキストが含まれているHello World.txtファイルがあるはずです。

アルゴディレクトリからの読み取り

次の論理的なステップは、アルゴディレクトリにあるファイルの内容を読み取ることです。そのためには、OnStart()メソッドを次のように書き換えます。

1
2
3
4
protected override void OnStart()
{
        Print(File.ReadAllText("Hello Word.txt"));
}

cBotをビルドして起動すると、アルゴがファイルから文字列をcTraderのログに出力するのがわかります。

他のディレクトリへのアクセス

以前に実行したcBotの操作は、どれも管理者権限を提供する必要がなかったことに注意してください。実際、クラスレベルでアクセス権は明示的にNoneに設定されていました。

異なるディレクトリにファイルを書き込もうとしてみましょう。コードを変更して、ルートのDocumentsディレクトリにファイルを書き込むようにします。

1
2
3
4
protected override void OnStart()
{
    File.WriteAllText("C://OneDrive//Documents//Hello World.txt", "Hello World!");
}

再びcBotをビルドして実行すると、この特定のディレクトリに書き込む権限がないという例外がログに表示されます。

これを解決するために、cBotのコードに戻り、アクセス権を次のように変更します。

1
[Robot(AccessRights = AccessRights.FullAccess)]

cBotをビルドして実行すると、例外をスローする代わりに、指定されたディレクトリにアクセスし、正しいファイルに書き込みます。

アクセス権がどのように機能するかをさらに示すために、OnStart()メソッドを次のように変更します。

1
2
3
4
protected override void OnStart()
{
        Print(File.ReadAllText("C://OneDrive//Documents//Hello World.txt"));
}

アクセス権もNoneに戻します。

1
[Robot(AccessRights = AccessRights.None)]

cBotが実行を開始した後、ファイルから読み取ることができないことがわかります。

この記事とビデオが役に立ったことを願っています。cTraderのアルゴリズム取引について詳しく知りたい場合は、以下のボタンをクリックしてYouTubeチャンネルに登録してください。

目次

このページについて