プラグインの作成

アクションマップ

以下の図は、新しいプラグインを作成するためのアクションフローを示しています。

  • 新しいプラグインを追加
  • 配置を決定
  • サンプルコードを編集
  • プラグインを保存してビルド

新しいプラグインを追加

新しいプラグインを作成するには、’プラグイン‘ タブに切り替えて、’新規‘ をクリックします。以下のウィンドウが開くはずです。

インジケーターの名前を入力し、2つのオプションから選択します。

  • 空白‘。このオプションを選択すると、新しいプラグインには基本的なテンプレートのみが含まれます。
  • リストから‘。このオプションを選択し、以下のリストからプラグインを選択すると、新しいプラグインには選択したアルゴの完全なコードが含まれます。リスト内の既製プラグインは、広範な配置オプションと統合をカバーしています。

サンプルリポジトリ

リストから‘ オプションのコードサンプルは、git@github.com:spotware/ctrader-automate-samples.git リポジトリから取得されています。アクセスするには、こちらをクリックしてください。

作成‘ をクリックして、プラグインの設定を完了します。

注意

異なる名前で似たようなアルゴを作成したい場合は、常に複製機能を使用できます。

配置を決定

プラグインの紹介で述べたように、プラグインはcTrader UIのさまざまな場所に新しい要素を追加できます。具体的には、’アクティブシンボルパネル‘ (ASP)、’トレードウォッチ‘ 表示、または別のチャートです。プラグインを通じてカスタム要素を表示する方法については、こちらをクリックして詳細を確認してください。

プラグインをコーディングする前に、カスタム情報やコントロールを表示したい正確な場所を定義してみてください。

配置オプション

プラグインが要素を表示する場所を決定する際は、プラグインの機能に基づいて判断してください。金融ニュースの大規模なWebViewを表示したい場合は、チャートフレームにインスタンスを表示するのが理にかなっています。逆に、ASPには小さなカスタムトレーディングパネルがより適しているかもしれません。もう一つの例は、定期的にメッセージを表示するプラグインです。この場合、’トレードウォッチ‘ 表示を使用することを検討してください。

サンプルコードを編集

新しいプラグインをクリックしてコードエディタウィンドウを開きます。プラグイン作成ウィンドウで ‘空白‘ を選択した場合、以下のコードが含まれます。

 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
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.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class NewPlugin : Plugin
    {
        protected override void OnStart()
        {
            // cTrader Algo について詳しくは、ヘルプセンターをご覧ください:
            // https://help.ctrader.com/ctrader-automate
        }

        protected override void OnStop()
        {
            // プラグイン停止時の処理
        }
    }        
}

注意

前のステップで ‘リストから‘ を選択した場合、プラグインはすぐにアクティブになります。プラグインにはすべての配置ロジックといくつかのカスタム機能が含まれます。

私たちのチュートリアルの1つに示されているように、プラグイン属性 Plugin とそのオプションのパラメーター(例えば AccessRights)は、クラス宣言 (NewPlugin) の前に記述されます。

すべての新しいプラグインは基本の Plugin クラスを継承し、その結果、取引を行ったり、カスタムコントロールを表示したり、インターネットにアクセスしたりするなど、いくつかの機能を利用できます。

cBots と同様に、各プラグインは OnStart()OnStop() メソッドを呼び出すことができます。 OnStart() ハンドラーは、新しいプラグインが初期化されたときに一度呼び出され、 OnStop() ハンドラーは、プラグインインスタンスが ‘設定‘ ウィンドウで停止されるとき、アンインストールされるとき、または cTrader がユーザーによって閉じられるときに呼び出されます。

例外処理

他のアルゴと同様に、プラグインも OnException メソッドにアクセスでき、プラグインがエラーに対応する方法を調整できます。

さらに、各プラグインには Timer オブジェクトへのアクセスもあります。 Timer クラスの組み込みタイマーを開始すると、初期化し、 OnTimer() ハンドラーを指定することで、指定したタイマー間隔が経過するたびに実行されます。

デモンストレーションの目的で、現在オープンしている利益のあるポジションの総数を表示するシンプルなプラグインを作成します。プラグインは ASP に添付され、組み込みタイマーを使用して毎秒表示を更新します。

プラグインの動作を見るには、以下のコードをコードエディタウィンドウにコピー&ペーストするだけです。

 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class ProfitablePositions : Plugin
    {       
        private TextBlock _textBlock = new TextBlock 
        {
            Text = "Starting...",
            FontSize = 30,
            FontWeight = FontWeight.ExtraBold,
            TextAlignment = TextAlignment.Center,
            Padding = new Thickness(5, 5, 5, 5),
        };

        protected override void OnStart()
        {
            var aspBlock = Asp.SymbolTab.AddBlock("Profitable Positions");
            aspBlock.IsExpanded = true;
            aspBlock.Height = 50;

            aspBlock.Child = _textBlock;
            _textBlock.Text = GetProfitablePositions();

            Timer.Start(TimeSpan.FromSeconds(1));

        }

        protected override void OnTimer() 
        {
            _textBlock.Text = GetProfitablePositionsCount().toString();
        }


        protected int GetProfitablePositionsCount() 
        {
            int count = 0;
            foreach (var position in Positions) 
            {
                if (position.GrossProfit > 0) 
                {
                    count++;
                }
            }
            return count;
        }
    }        
}

プラグインを保存してビルドする

サンプルコードを編集して要件に合わせたら、保存してビルドするだけです。アルゴを保存するには、Ctrl+S を押すか、コードエディタウィンドウの上部にある ‘保存‘ ボタンをクリックします。

コードを保存した後は、Ctrl+B を押すか、コードエディタの上部にある ‘ビルド‘ ボタンをクリックします。ビルドが成功すると、 ‘ビルド結果‘ セクションに確認メッセージが表示されます。ビルドが失敗した場合、このセクションにはビルドアクションが実行されたときに発生したすべてのエラーの概要が表示されます。エラーの説明をクリックすると、エラーが発生したコードの正確な位置が表示されます。

ビルドが成功すると、プラグインはコードに指定されたすべての適切なcTrader UIエリアにカスタム要素を即座に追加します。

目次

このページについて