コンテンツにスキップ

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

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

手順に従う前に、公式ウェブサイトからcTrader WindowsまたはcTrader Macアプリケーションをダウンロードしてインストールしてください。 起動し、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() このメソッドは、インジケーターが例外に遭遇した場合に呼び出されます。 エラーをキャプチャしたときにインジケーターが何をすべきかを定義するために使用できます。 このメソッドは、デフォルトのインジケーターコードテンプレートには含まれていないことに注意してください。

インジケーターコードを記述する

これから、Simple Moving Averageインジケーターにカスタムコードを追加していきます。 このインジケーターは、現在のチャートタイプの上にオーバーレイとして表示されます。

まず、先ほど説明した通り、インジケータークラスの属性を宣言する必要があります。 以下の属性設定をインジケーターに追加します。

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

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

  • IsOverlay = true - インジケーターは、選択したチャートタイプに応じて、ローソク足、レンジバー、練行足、またはその他の要素の上にプロットされます。
  • TimeZone = TimeZones.UTC - インジケーターは協定世界時(UTC)を使用します。これはすべてのインジケーターのデフォルト値です。 この属性の値を変更するのは、インジケーターが計算に日付や時刻の機能を使用する場合にのみ推奨されます。
  • AutoRescale = false - この属性は、インジケーターがアタッチされたチャートを自動的にリスケールするかどうかを定義します。 この属性の値がfalseであるため、インジケーターはチャートをリスケールしません。
  • AccessRights = 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; }

Periodsパラメーターのデフォルト値を14に、ラインの色をturquoiseに設定します。 ただし、これらのパラメーターは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の最上部にあるビルドボタンをクリックできます。 または、インジケーターを右クリックして、新しく開いたメニューでビルドを選択するか、Ctrl + Bを押します。

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

Image title

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

Image title

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

Image title

これにより、EURUSDh1チャートに対して新しいインジケーターインスタンスが作成されます。 ただし、インスタンスをクリックして関連メニューを開くことで、チャートタイプ、時間枠、および通貨ペアを変更できます。

新しく表示されたパラメータータブには、先ほどコーディングした3つのカスタマイズ可能なパラメーターが表示されます。 これらをそのままにするか、cTrader UIで直接値を変更できます。

これで、トレーディングチャートにインジケーターの出力が表示されるはずです。 この場合、Simple Moving Averageを示すターコイズ色のラインが表示されます。

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

注意

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

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

次に、cTraderのトレードタブに切り替えて、カスタムインジケーターをライブチャートにアタッチします。 分析したい通貨ペアのチャートを開きます。

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

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

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

インジケーター設定ウィンドウに戻るには、インジケーターの出力を右クリックします。 この場合、ターコイズ色のラインを右クリックします。 または、チャート上のインジケーター名にカーソルを合わせると表示されるプロパティアイコンをクリックします。

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

Image title