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からウォッチリスト編集するという発想はなかった。

 

メソッド
(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参照。

 

 

RunningMode列挙型

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

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

 

 

TimeFrameクラス

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

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

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();
}

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

© 2021 cTrader's Life Powered by AFFINGER5