パラメーターを持つプラグイン

プラグインは常に一つのインスタンスしか持つことができませんが、それでもカスタマイズ可能なパラメータを持つプラグインを作成することは可能です。このガイドでは、ユーザー入力に応じて動作が変わるプラグインのインスタンスを簡単に作成する方法を説明します。

パラメータ付きプラグインを一分で!

  • ユーザー入力をサポートするカスタム UI 要素を追加することで、プラグインの設定を動的に変更できます!
  • パラメータの追加は簡単で、イベントハンドラーを宣言し、それを選択したカスタム UI 要素に割り当てることで実現できます。
  • プラグインのパラメータはトレーディングパネルの開発者には不可欠ですが、他のタイプのプラグインでも価値があります。

プラグインにパラメータを追加する

プラグインが起動すると、そのシングルトンインスタンスはすぐに実行を開始し、一般設定からのみ停止することができます。

パラメータ宣言(例えば、[Parameter(DefaultValue = 10000, MinValue = 1, Step = 1000)])を追加すると、プラグインはデフォルト値のみで動作し、cTrader UI からパラメータを変更することはできません。

それでも、以下の手順に従うことでカスタマイズ可能なパラメータを追加することができます。

  • ユーザー入力を受け付ける複数のフィールドやその他の要素を作成する(例:TextField
  • これらのフィールドの現在の内容を参照する
  • 参照をプラグインコード内の適切なメソッドに渡す

例プラグインの作成

この例プラグインは以下のように動作します。

  • ASP ディスプレイにカスタムの「Buy」ボタンを持つブロックを追加する
  • オーダー量入力フィールドを持つカスタムウィンドウを表示する
  • 「Buy」ボタンをクリックすると、量入力フィールドからのボリュームでマーケットオーダーを出すことができる
 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
57
58
59
60
61
62
63
64
65
66
67
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 ParametersPlugin : Plugin
    {

        private Button _buttonTrade;
        private Window _window;
        private AspBlock _aspBlock;
        private TextBox _textBox;
        private double _orderVolume;


        protected override void OnStart()
        {
            _aspBlock = Asp.SymbolTab.AddBlock("Trader Plugin");
            _aspBlock.IsExpanded = true;
            _aspBlock.Height = 200;

            _buttonTrade = new Button
            {
                BackgroundColor = Color.SeaGreen,
                Height = 50,
                Text = "Buy"
            };
            _buttonTrade.Click += OnButtonClick;
            _window = new Window
            {
                Height = 150,
                Width = 400,
                Padding = new Thickness(5, 10, 10, 5),
            };
            _textBox = new TextBox
            {
                Text = "Enter order volume here...",
                Margin = 5,
                ForegroundColor = Color.White,
                HorizontalAlignment = HorizontalAlignment.Center,
            };


            _textBox.TextChanged += OnTextChanged;
            _aspBlock.Child = _buttonTrade;
            _window.Child = _textBox;
            _window.Show();
        }

        private void OnButtonClick(ButtonClickEventArgs args)
        {
            ExecuteMarketOrder(TradeType.Buy, "EURUSD", _orderVolume);
        }

        private void OnTextChanged(TextChangedEventArgs args) 
        {
            double.TryParse(args.TextBox.Text, out _orderVolume);
        }
    }
}

このプラグインは、Button.Click イベントと TextBox.TextChanged イベントにカスタムイベントハンドラーを二つ追加することで、これを実現しています。テキストボックスのテキストが変更されるたびに、その値は _orderVolume 変数に保存されます。この変数の値は、OnButtonClick ハンドラー内の ExecuteMarketOrder メソッドに渡されます。

まとめ

プラグインにパラメータを追加することは、カスタムトレーディングパネルやcTrader UI を大幅に拡張する他のタイプのプラグインの開発者にとって素晴らしい解決策です。また、他のタイプのプラグインの機能を洗練させるためにもこの機能を使用することができます。

目次

このページについて