cTraderでカスタムインジケーターを作成する方法

cBots (自動売買)

この記事および対応するビデオでは、cTraderで新しいカスタムインジケーターを迅速に作成する方法について説明します。シンプルな移動平均インジケーターを作成し、インジケーターのパラメーターを迅速にカスタマイズする方法を紹介します。

指示に従う前に、公式ウェブサイトからcTrader Desktopアプリケーションをダウンロードしてインストールしておいてください。それを起動し、cTrader Algoセクションに移動します。左側のパネルにある「Algo」タブを見つけてクリックします。これで、cTrader Algoインターフェースが表示されます。

新しいカスタムインジケーターを追加する

新しいカスタムインジケーターを作成するには、「New」ボタンをクリックして「Blank」を選択します。インジケーターリストの下部に新しいインジケーターが表示され、右側のパネルにコードテンプレートが表示されます。

次のステップは、デフォルトの名前からインジケーターの名前を変更することです。それを右クリックして「Rename」を押すか、選択してF2を押します。新しい名前として「Simple Moving Average」と入力します。完了したらEnterを押します。これで、カスタムインジケーターのロジックと数式のコーディングを開始する準備が整いました。

インジケーターの構造を見る

始める前に、コードエディターウィンドウに表示されているインジケーターのコード構造を簡単に見てみましょう。この構造には、デフォルトのパラメーター設定と、チャートにインジケーターを計算および表示するためのメソッドが含まれています。

まず、すべてのインジケーターにはクラス属性を含むセクションがあります。ここでは、インジケーターのアクセス権、チャート上の表示位置、インジケーターが使用するタイムゾーン、スケーリング、およびその他の高度な設定を構成できます。

また、新しいインジケーターのコードテンプレートには、すべてのインジケーターイベントとカスタムメソッドを含むNewIndicatorというクラスが定義されていることに気付くでしょう。クラス名の宣言は: Indicatorに続きます。これは、NewIndicatorクラスがIndicatorベースクラスを継承していることを意味し、これによりカスタムインジケーターを作成する際にアクセスするすべての事前定義オブジェクトが含まれます。

インジケーターのコード構造とオブジェクト指向プログラミングにおける継承の原則の詳細なレビューは、技術文書に記載されています。

下のセクションには、すべてのデフォルトインジケーター設定を含むコードブロックが表示されます。最初は、このセクションには次のコードのみが含まれます。

1
2
3
4
5
[Parameter(DefaultValue = "Hello world!")]
public string Message { get; set; }
[Output("Main")]
public IndicatorDataSeries Result { get; set; }

パラメーター宣言の直下にインジケーターのメソッドが表示されるはずです。メソッドとは、インジケーターが開始されたとき、または新しい価格データがインジケーターに提供されたときに実行される特定のイベントと考えてください。次の表では、3つの主要なインジケーターメソッドを定義しています。

メソッド名定義
Initialize()このイベントメソッドは、インジケーターがチャートにアタッチされたときに呼び出されます。インジケーターで使用する予定の変数を初期化するために使用されます。他のインジケーターの数式を使用して単一のインジケーターを作成するために、追加のインジケーターを定義および参照することもできます。
OnCalculate()このメソッドは、データの各新規ティックで呼び出されます。このメソッド内で、次のプロットされるインジケーターラインを計算するために、入力データを処理するロジックをコーディングできます。
OnExcepion()このメソッドは、インジケーターが例外に遭遇した場合に呼び出されます。エラーが発生したときにインジケーターがどのように動作するかを定義するために使用できます。このメソッドは、デフォルトのインジケーターコードテンプレートには含まれていません。

インジケーターコードの記述

次に、シンプルな移動平均インジケーターにカスタムコードを追加します。私たちのインジケーターは、現在のチャートタイプにオーバーレイとして表示されます。

まず、前述のようにインジケーターのクラス属性を宣言する必要があります。インジケーターに次の属性設定を追加します。

1
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AutoRescale = false, AccessRights = AccessRights.None)] 

上記のコードは次のように解釈できます。

  • IsOverlay = true. インジケーターは、キャンドル、レンジバー、レンコーブリック、または選択されたチャートタイプに応じて他の要素の上にプロットされます。
  • TimeZone = TimeZones.UTC. インジケーターは、すべてのインジケーターのデフォルト値である協定世界時を使用します。この属性の値を変更することは、インジケーターが計算に日付や時刻の機能を使用する場合にのみ推奨されます。
  • AutoRescale = false. この属性は、インジケーターがアタッチされたチャートを自動的にリスケールするかどうかを定義します。この属性の値がfalseであるため、インジケーターはチャートをリスケールしません。
  • Access Rights = AccessRights.None. インジケーターはインターネットにアクセスしたり、ユーザーのローカルマシン上のファイルを操作したりすることはできません。

次に、インジケーターのパラメーターを定義できます。これらは、インジケーターをチャートに追加した後、ユーザーが設定パネルで調整できる設定です。次のパラメーターをコード化します。

  • インジケーターの数式のデータソース。
  • 数式に使用される期間。
  • プロットされるインジケーター出力結果のライン。

次のスニペットをインジケーターに追加します。

1
2
3
4
5
6
7
8
[Parameter("Source")]
public DataSeries Source { get; set; }
[Parameter("Periods", DefaultValue = 14)]
public int Periods { get; set; }
[Output("Main", LineColor = "Turquoise")]
public IndicatorDataSeries Result { get; set; }

デフォルトの値として14Periodsパラメーターに設定し、デフォルトのラインカラーとしてターコイズを設定します。ただし、cTraderがサポートするほぼすべてのデフォルト値にこれらのパラメーターを設定できます。

次に、Calculate()イベントメソッドを使用して、チャート上にインジケーター出力をプロットするコードを追加します。

1
2
3
4
5
6
7
8
9
public override void Calculate(int index)
{
    var sum = 0.0;

    for (var i = index - Periods + 1; i <= index; i++)
    sum += Source[i];

    Result[index] = sum / Periods;
}

このコードは、前に定義したResultパラメーターにインジケーター計算の結果を割り当てます。

インジケーターのビルドとテスト

インジケーターコードの記述が完了したら、cTrader UIの最上部にある「Build」ボタンをクリックします。あるいは、インジケーターを右クリックして、新しく開いたメニューで「Build」を選択するか、単にCtrl + Bを押します。

ビルドが成功すると、コードエディターの下部にある「Build Result」エリアに緑色のメッセージが表示されます。

Image title

ただし、コードに問題がある場合は、赤色のメッセージとすべてのビルドエラーの詳細な要約が表示されます。

Image title

インジケーターのビルドが成功したら、次にインスタンスを作成します。最も簡単な方法は、インジケーターを右クリックして「Add an Instance」オプションを選択することです。

Image title

これにより、「EURUSD」「h1」チャートに新しいインジケーターインスタンスが作成されます。ただし、インスタンスをクリックして関連するメニューを開くことで、チャートタイプ、時間枠、およびシンボルを変更できます。

新しく表示された「Parameter」タブには、前述の3つのカスタマイズ可能なパラメーターが表示されるはずです。これらをそのままにするか、cTrader UIで直接値を変更できます。

トレーディングチャートにはインジケーターの出力が表示されるはずです。私たちの場合、これはシンプルな移動平均を表示するターコイズのラインになります。

ラインを右クリックすると、インジケーターのパラメーターをカスタマイズするための新しいウィンドウが表示されます。たとえば、出力ラインの色をターコイズから青に変更できます。また、ラインの太さを調整することもできます。変更を保存するには「OK」をクリックします。

cTraderでは、インジケーターのインスタンス出力とカスタムインジケーターのコードエディターウィンドウとの間を迅速に切り替えることができます。これにより、特定のインジケーターパラメーターやカスタム計算ロジックを迅速にテストするための理想的なツールとなります。

インジケーターをライブチャートに追加する

次に、cTraderの「Trade」タブに切り替えて、カスタムインジケーターをライブチャートにアタッチします。分析したいシンボルのチャートを開きます。

上部のメニューで「Indicators」アイコンをクリックして、新しいセクションを開きます。

その後、「Custom」を選択し、新しく表示されたメニューで作成したカスタムインジケーター(「Simple Moving Average」)を選択します。

カスタムインジケーターのパラメーターをカスタマイズできる新しいウィンドウが表示されます。希望する値を選択した後、「OK」をクリックして、選択したシンボルのチャートにインジケーターを追加します。

インジケーター設定ウィンドウに戻るには、インジケーター出力を右クリックします。私たちの場合、ターコイズのラインを右クリックできます。または、チャート上のインジケーター名にカーソルを合わせると表示される「Properties」アイコンをクリックします。

インジケーター設定ウィンドウが表示され、出力ラインの色や太さを変更できます。

まとめ

この記事が、cTraderを使用してカスタムインジケーターを作成する方法のデモンストレーションに役立ったことを願っています。詳細については、広範なドキュメントを参照するか、フォーラムで質問を投稿してください。

新しいビデオを投稿した際に通知を受けるには、YouTubeチャンネルに登録することもできます。

Subscribe to our YouTube channel