cAlgo API リファレンス

リファレンス記事の見方【cAlgo API】

2020年11月6日

リファレンス記事について

cAlgo(cTrader Automate)について日本語情報が少なかったため、リファレンス代わりとなるような記事を一通り作成しました。記事一覧はこちら

この記事はリファレンス記事の見方的なものです。

 

C#についての前提知識

C#ではすべてのクラスはobjectという型を継承してます。そのため個別に記述はありませんが、すべてのオブジェクトでobjectの持つメソッドが使えます。

特にToString()はcAlgo内でもちゃんとオーバーロードされてることが多いため、ToString()メソッドはほとんどのオブジェクトで使えると思っていいです。(その名の通り、オブジェクト情報を文字列にして返すメソッドです。)

 

リファレンス内で使われてるC#の型は、int(整数)、long(大きい整数)、double(小数)、string(文字列)、bool(真偽値)、DateTime(日時)、TimeSpan(日時差)くらいです。(たまーに他のありますが稀です。)

どれも基本的な型なのでこれらの型は知っておいた方がいいです。これら以外の型はほとんどcAlgo特有の型なので、記事内に説明記事へのリンクがあります。

なお (double?) などの?つき型はnull許容型というものです。返り値だったらnullにもなり得る、引数だったらnullを渡してもいい、という意味です。

 

cTraderの前提知識

cTraderでは発注数量は基本的にLotではなく通貨量です。「1lot」ではなく「10万通貨」で数えます。なんの断りもなく、「発注量」とか「ボリューム」とか単語が出てきたら通貨量のことと思ってください。

cAlgoでの開発ではもちろんC#の言語機能が使えるのですが、ターゲットフレームワークの関係か、C#4.0までの機能しか使えません。新しい機能使おうとするとコンパイルエラーになります。

だいぶ古いバージョンですので「C#」でググってでてきた機能が使えないことも多々あります。注意してください。

どうしても新しい機能使いたい場合は、最新のターゲットフレームワークでDLLを別に作って、cBotやインジケーターから呼び出すという手はあります。

この辺りについてはこちらの記事参照。

 

上記打消し線は以前の話です。

cTrader4.2から採用しているフレームワークが変わりました。.Net Framework 4.8から.NET 6.0と変更になり、一気に新しいC#が使えるようになりました。

C#10.0までは使えるはずなので、これまでに比べてだいぶ制限は少なくなりました。

 

型と各メンバの説明記事について

cAlgoの型(クラス、インターフェース、構造体、列挙型)ごとに項目を作って説明してます。一つの型につき1記事ではなく、関連性が高い型はいくつか同じ記事内にまとめてます。

当ブログ内ではSymbolのことをFXを前提として「通貨ペア」と記載していますが、もちろんメタルや仮想通貨もSymbolとして扱われます。またBarのことはわかりやすくローソク足と記載してます。ご了承ください。

プロパティは基本読み取り (get) 専用です。値の変更 (set) ができるプロパティには、名前の後ろに {get; set;}を記述してます。

プロパティのところにthis[int index]という項目があったら、「この型は配列のように[ ]で要素にアクセスできる」という意味です。

メソッドは発注メソッドなど説明が必要なものは別ページを用意してますが、それ以外は簡単な説明しかしてません。そもそもほとんどが簡単なメソッドなので名前と引数と返り値だけわかればなんとかなると思います。わからんってものがあればコメントください。

メソッドの引数内で 角括弧[ ] 表記されてるものは省略可能な引数です。(内部ではオーバーロードにより別定義されてるのですが、使う場合は省略可能と考えていいです。)

コードが書いてあるはずのとこに突然日本語がでてきたら、そこに入るべきものは空気読んで判断してください。多分見ればなんとなくわかります。

引数が長くなるメソッドは(...)で記載を省略してます。別ページに解説があるか、メソッド説明の冒頭に引数情報があるので見てみてください。

プロパティ、メソッドともに (  ) で返り値の型情報を記載してます。列挙型は型情報なしの一覧表形式ですが、列挙型のメンバの型は当然その列挙型です。(例えば、TradeResult.BuyもTradeResult.SellもTradeResult型)

イベントは何が起きたことを検知するかだけの説明です。それさえわかれば十分なので。イベントの使い方はこちらを参考に。各イベント引数も別ページで解説してます。

 

サンプルコードについて

特に記述がなければ、cBotのOnStart()内にコピペでそのまま動くように書いてるつもりです。コメントで //using ~が必要 とか書いてあったら、ファイルの冒頭に書き加えてください。

サンプルコード内にOnStart(){ など、メソッド名の行から記述がある場合は同名メソッドをまるっとそのまま置き換えるか、同名がなければ新たなメソッドとして本体クラスに追加してください。

サンプルコードの実行はデモ口座かバックテスト環境で行ってください。サンプル内で発注メソッドとか普通に使ってるので間違ってもリアル口座で試さないようご注意ください。

 

 

ありそうな質問

サンプルコードにある〇〇〇ってのがこのブログ内にも公式リファレンス内にも見つからないんだけど?

おそらくそれはcAlgo APIのものではなくて、C#(.Net)のクラスとかだと思います。「C# 〇〇〇」でググってみてください。

特にサンプルコード内ではLINQという機能を多用してます。実際よく使うので知っておくと便利です。

 

〇〇〇ってクラス、公式リファレンスにはあるけどブログ内にはみつからないよ?

cTraderのバージョンアップでしれっと追加されたものを私ajinoriが見落としてる可能性があります。そういうのみつけたら教えてください。

 

ボタンとかチェックボックスとか使いたいんだけど、説明ないの?

すみません、まだ作ってません。公式リファレンスを参考に・・・といいたいのですが、公式も説明が薄いです。

.Netの型と似てるので「C# button」とかで検索したほうが使い方の想像はつくかもしれません。わからない場合はコメントください。説明記事書きます。

すべてリファレンス記事作りました。

 

え?間違ってるように見えるけど??もしかして何か意図があるとか???

ごめんなさい、多分シンプルにミスってるだけだと思います。該当記事のコメント欄からご指摘ください。

-cAlgo API リファレンス

© 2024 cTrader's Life Powered by AFFINGER5