早速作ってみよう
さて、環境設定も終わったことですし、とりあえずひとつ簡単なcBotでも作ってみましょう。
ちなみにここではくどいほど丁寧に説明しますのでプログラムがさっぱりわからなくても作れます。ご安心ください。
cBotを新規作成
(環境設定の際にHello cBotを新規作成してる場合はそのまま使いますのでHello Worldまで進んでください。)
cTraderを開いて、左のカラムのAutomateを選んでください。
cBotやIndicatorを開発するメイン画面が開きますので、とりあえず1つ新しく作ってみましょう。
「cBots」タブを選んでその下の「New」ボタンを押します。
一番下に「New cBot」という名前が追加されますので、好きな名前に変えてください。Hello cBotとでもしましょうか。
名前を変えたら、名前を右クリックしてEdit in VisualStudioを選んでください。Visual Studio(以下VS)でコードが開きます。
組み込みの開発環境を使う方はHello cBotを選択すれば、そのまま右側の窓でコードが編集できます。
HelloWorld
プログラミングを始める前に動作確認できる環境を作っておきましょう。
基本画面の見方
先に画面の説明から。Automate画面の左カラム内、cBot名の横には右にボタンが3つ並んでます。左からビルド、インスタンス作成、メニュー(右クリックと同じ)です。
cBot名とビルドボタンに*印がついてるのは「コードが変更されてまだビルドされてませんよ」の印です。
ビルドしてみましょう。ビルドボタンを押すか、VSでビルドメニュー→ソリューションのビルドを選んでください。
VSではCtrl+Shift+Bのショートカットでもビルドできます。頻繁に使うので覚えましょう。
VS画面の左下あたりをご覧下さい。エラー一覧タブがあれば選択してください、なければメニューの表示→エラー一覧で表示させておきましょう。
VSのバージョンによって若干違いますが、ビルドをすると結果が一番下のバーに表示されます。
「Build succeeded」や「ビルド成功」とビルド結果が表示されます。ビルドが失敗した場合や、成功しても警告がある場合は「エラー一覧」画面に表示されます。
また、VSではコード編集中にもエラーが赤波線で表示されますので、どこを直せばいいかわかりやすいです。
インスタンス作成
最初にテスト用に1行だけコードを追記してあげましょう。OnStart()内にthis.Print("HelloWorld");と入力してください。
protected override void OnStart()
{
this.Print("Hello World!");
}
自分(this)が持つPrintという指定内容をログに出力するメソッドを呼び出してます。(ここでは説明のためthis.を書きましたが、普通は省略します。)
Automate画面でHellocBotと書いてあるcBot名横のインスタンス作成の「+」ボタンを押してください。通貨ペア名選択画面が出ますので適当にEURUSDでも選択してみましょう。
ここでいうインスタンスとは「現在作成中cBotと通貨ペアをセットにしたcTrader上のオブジェクト」と思ってください。このインスタンスを使って様々なテストをします。
右側がソースコード編集画面からこんな表示に変わったと思います。記事内では上記のように呼びます。表示が異なるようなら右上の方の「Layout」をクリックして全部にチェック入れてみてください。
メイン画面は「EURSUD,h1」「Backtesting」「Optimization」と3つのタブからなります。
「EURUSD,h1」は直接チャート上で稼働させてみたいときに使う画面です。チャートの上の再生ボタンを押すと「HellocBot」か動き出すのですが、これはログインしてる口座で実際に稼働させることになるので、特にリアル口座でログインしてる場合は注意してください。
「Backtesting」はバックテスト用の画面、「Optimization」は最適化用画面です。
トレードウォッチも様々な情報を表示するいくつかのタブからなりますが、ここはメイン画面でどれが選ばれてるかによってタブの項目が変わります。とりあえず共通のLogはよく使うと覚えといてください。Printメソッドはここに出力しますのでLogタブを表示させておいてください。
パラメータはその名の通り、cBotの外部パラメータをこの画面から設定できるようになってます。
実行!
今回はログ出力だけの機能しかないのでチャート上で稼働させて問題ありません。「EURSUD,h1」のチャート上の再生ボタンを押してみましょう。Logに”Hello World!”と出力されたことが確認できると思います。
OnStart()が実行されてPrint()が呼び出されたことが確認できました。まだOnBar()もOnTick()もないので、これ以上は何も起こりません。停止ボタンを押して止めてください。
では次は実際に自動売買ロジックをプログラムしていきましょう。
-
はじめてのcBot その2
プログラミング開始 前回はcBotを新規作成し、ログに出力させるプログラムをためしに動かしてみました。今回はこのcBotに実際の売買ロジックを組み込んでいきたいと思います。 売買ロジックを決める プロ ...
続きを見る