インジケーター、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();
}