cAlgo API リファレンス

Algo【cAlgo API】

2020年10月19日

インジケーター、cBotすべてのベース

Algoクラス

cTrader内で作成するプログラム、つまりはCBotやインジケーターのおおもととなるベースクラスです。CBotのRobotクラスとインジケーターのIndicatorクラスはAlgoを継承しています。

プログラムに使用するための主要なデータにアクセスするためのプロパティを提供するインターフェースとなっています。

このクラス自体を意識することはありませんが、CBotやインジケーターから頻繁に利用するプロパティは実はこのクラスがもってるものです。

public class Algo : Object

関連するクラス:Robot, Indicator

 

プロパティ

このクラスに限ったことではないのですが、C#は型名とプロパティ名が同じ名前のものが多くわかりにくく感じるかもしれません。ここでは()内は型名、そのあとがプロパティ名を表してます。

比較的よくお世話になるものを上の方に並べてます。cAlgo特有の型名については別記事があるため詳細はそちらを参考にして下さい。

(double) Ask 

その通貨ペアの現在のAsk値です。

(double) Bid

その通貨ペアの現在のBid値です。

(Bars) Bars

これまでの4本値データ(Bar)の集まりを取得します。

(Symbol) Symbol

通貨ペアの各種情報を取得します。

(string) SymbolName

Symbol.Nameが直接参照できるようになってます。

(Chart) Chart

cBotやIndicatorが動いてるチャートそのものを取得します。チャートの表示やオブジェクトを操作するときによく使います。

(TimeFrame) TimeFrame

チャートのタイムフレームを取得します。5分足とか1時間足とか。Chart.TimeFrameが直接参照できるようになってるだけです。

(Positions) Positions

保有中Positionの集まりを取得します。Positionクラスからはポジションの情報得たり、ロスカット、テイクプロフィットを変更したり、クローズしたりできます。よく使います。

(History) History

これまでのトレード履歴を取得します。HistoryはHistoricalTradeの集まりです。

(IIndicatorsAccessor) Indicators

組み込みインジケータを取得するためのアクセッサを取得します。ややこしいんですが、表示されてるインジケーターの集まりではありません。

(bool) IsBacktesting

バックテスト中かどうかを取得します。バックテスト時と実稼働時に動きを変えたいときに使います。

(RunningMode) RunningMode

実稼働中(.RealTime)か最適化中(.Optimization)かバックテスト中(.SilentBacktesting)かビジュアルモードでバックテスト中(.VisualBacktesting)かの状態情報を取得します。

(MarketData) MarketData

他のシンボルの4本値データ、板情報、Tick情報を得たいときに使うオブジェクトを取得します。

(INotifications) Notifications

音鳴らしたり、メール送ったりするのに使うオブジェクトを取得します。

(PendingOrders) PendingOrders

待機注文の集まりを取得します。待機注文の情報が必要な時はここから。

(IServer) Server

Server関連情報を見るためのインターフェースを取得します。

(DateTime) Time

Server.Timeが直接参照できるようになってます。

(DateTime) TimeInUTC

Server.TimeInUTCが直接参照できるようになってます。

(Symbols) Symbols

通貨ペアの存在確認などに使うオブジェクトを取得します。

(Application) Application

cTrader本体オブジェクトを取得します。cTraderのバージョン情報、カラーテーマ、ユーザータイムオフセットを保持します。カラーテーマ変更やタイムオフセット変更のイベントを検知するのもこれ。

(TimeZoneInfo) TimeZone

このcBot、インジケーターのタイムゾーンを取得します。東京時間とかニューヨーク時間とか。なおTimeZoneInfoはcAlgo特有の型ではなくC#(.NetのSystem名前空間)のクラスです。

(WatchLists) WatchLists

ウォッチリストを取得します。追加したり削除したりできます。cBotからウォッチリスト編集するという発想はなかった。

(Assets) Assets

 cTraderが持ってる資産情報一覧を取得します。Assets参照。(cTrader4.5以降)

(String) InstanceId

インスタンスごとに割り振られるIDを取得します。このIDはcTraderを再起動したり、時間足を切り替えたりしてインジケーター自体が初期化されても変更されることはありません。このIDに紐づけてローカルストレージにデータを保存しておくことで、再起動後もインスタンスごとに異なるデータを保持しておくことが可能となります。(cTrader4.6以降)

(IAssetConverter) AssetConverter

為替レート変換をするためのオブジェクトを取得します。(cTrader4.6以降) 

 

メソッド
(void) Print( string str)

cBotウィンドウにログを出力します。よく使います。引数には直接stringを指定するほか、C#のstring.Formatの記法が使えます。

(void) RefreshDate()

データを最新の状態に更新します。処理途中に注文状態を更新したいときなどに使用します。

(void) BeginInvokeOnMainThread(Action action)

メインスレッド上で非同期で指定したアクションを実行します。

(IndicatorDataSeries) CreateDateSeries()

IndicatorDataSeriesを初期化します。注意点としてOutput属性のついた表示用データはこれで初期化してはいけません。非表示で使うためのIndicatorDataSeriesを初期化するためのメソッドです。

(void) OnTimer()

オーバーライド用です。一定間隔で繰り返したい処理があるときにオーバーライドします。Timer.Start(n)が呼ばれると、n秒間隔でOnTimerメソッドが繰り返し実行されます。Timer参照。

(void) OnException(Exception exception)

オーバーライド用です。cBotやインジケーターの例外発生時に共通して行いたい処理があるときにオーバーライドします。 (cTrader 4.6以降)

 

RunningMode列挙型

稼働してる環境を表します。Algo (cBotやIndicator本体) のプロパティRunningModeで取得します。

RealTime Trade画面のチャート上で稼働中
SilentBacktesting VisualModeじゃないバックテストで稼働中
VisualBacktesting VisualModeのバックテストで稼働中
Optimization 最適化中

 

 

TimeFrameクラス

一応クラスなんですが、列挙型と考えていいです。解説が必要なプロパティもメソッドもないので一覧にしておきます。TimeFrame同士を不等号で比較できるようになってます。

cTraderはとにかく足の種類がたくさんあります。9分足とか使う人いるんだろうか。一応表にしておきます。

(updateにより追記) 下記に加えRenko(練行足)やcTrader4.4からはHeikin~(平均足)といったものも使えるようになっていますが、これらの特殊足は一般的なHourなどの足と不等号で比較することができません。比較しても常にfalseが返るため注意が必要です。

Minute 1分足
Minute2 2分足
Minute3 3分足
Minute4 4分足
Minute5 5分足
Minute6 6分足
Minute7 7分足
Minute8 8分足
Minute9 9分足
Minute10 10分足
Minute15 15分足
Minute20 20分足
Minute30 30分足
Minute45 45分足
Hour 1時間足
Hour2 2時間足
Hour3 3時間足
Hour4 4時間足
Hour6 6時間足
Hour8 8時間足
Hour12 12時間足
Daily 日足
Day2 2日足
Day3 3日足
Monthly 月足
Weekly 週足

 

サンプルコード
// 非対応の時間足だった時はcBotを止める
if(this.TimeFrame < TimeFrame.Hour) {
    Print("1時間足より短い時間足には対応してません。時間足を変更してください。");
    Stop();
}

(追記)このコードだと練行足など特殊足のときには止まりませんのでご注意ください。

 

 

Assetsインターフェイス

cTraderが情報をもってるAssetの一覧を管理するインターフェイスです。

public interface Assets : IEnumerable<string>

IEnumerableを継承してるのでCountでの要素数取得や[]によるアクセスも可能です。ただし、[]によるアクセスで返ってくるのはAsset型ではなくただの文字列です。

 

メソッド
(bool) Exists( string assetName)

指定した名前の資産情報をAssets内に持っているかどうかを返します。

(Asset) GetAsset(string assetName)

指定した名前の資産情報を取得します。

(Asset[]) GetAsset(string[] assetName)

複数の指定した名前の資産情報を取得します。

 

 

IAssetConverterインターフェイス

Assetを変換するためだけのインターフェイスです。

public interface IAssetConverter

 

メソッド
(double) Convert(double value, Asset from, Asset to)
(double) Convert(double value, string from, string to)
(double) Convert(double value, string from, Asset to)
(double) Convert(double value, Asset from, string to)

アセット(通貨など)を変換します。(下2つのオーバーロードはcTrader4.7で追加)

 

サンプルコード
        var volume = 10;
        var yen = AssetConverter.Convert(volume,"USD", "JPY");
        Print($"現在の為替レートでは{volume}ドルは{yen}円です。");

 

-cAlgo API リファレンス
-, ,

© 2024 cTrader's Life Powered by AFFINGER5