## はじめに
この記事は以下リンクのYoutubeビデオを翻訳したものになります。よければそちらもご覧ください。
https://www.youtube.com/watch?v=zYdt_HnGaFY&list=PLV8YK-9p3TcOmgAFIjntw-GxOJoHp9xwc&index=3
前回記事 は以下です。
https://qiita.com/James_KW/items/575eb6cfc6d64180f003
本記事の内容はこの記事の続きになります。
## 追加された関数の説明
前回記事にてテンプレートで追加された関数について説明する。関数って何というプログラミング初心者は、「文字を表示する」とか「買い注文を入れる」とか何かするための物と思ってください。
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
ちなみに//とするとコメントになり、//以降は読み込まれない。好きにメモを残しましょう。
さてこのOnInitはこのエキスパートアドバイザをチャートに適用した時に一度だけ実行される。
一行目の冒頭部分にある
int OnInit()
のintの部分は変数としてint型(整数型)を返すという意味である。
次の関数にうつる。
void OnDeinit(const int reason)
{
//---
}
この関数はこのエキスパートアドバイザが閉じられるときに一度だけ実行される。ここはエキスパートアドバイザをとじてクリーンアップするのに便利である。
一行目頭の"void"はどの値も返さないという意味である。
void OnTick()
{
//---
}
この関数は、チャート上で値段が変わったときに実行される。上記の2つと違って複数回実行される。
Hello, world! 今何時?
ではここから実際にコーディングを進めていく。今回は以下のような内容のコードを書く。
・チャート上に"Hello, world"と出力する。
・Hello, worldの隣に現在の時刻を出力する。
まず、OnTick関数だけを残して、それより上の関数をすべて消してしまう。今回は使わないので問題はない。チャート上に文字を出力するために今回はcomment関数を使う
Comment("内容")
この関数はチャートの左上にユーザー指定の内容を出力するというものである。ではHello,worldと出力するために、OnTick関数の中に以下のように書く。
void OnTick()
{
Comment("Hello, world");
}
この状態まで行ったら、コンパイルしてストラテジーテスターで実際に実行してみる。
コンパイルは上図の[コンパイル]のボタン。ストラテジーテスターでの実行は、上図の緑色の再生ボタンのようなもの。実はそのすぐ隣の青色再生ボタンもストラテジーテスターによる実行になるのだが、細かい違いはそのうち。。。
もし、この二つの再生ボタンがグレーアウトしていて押せない場合は、一番最初のテンプレートを作成する際に、名前を変更するときに、"Expart¥"を消してしまっていないか確認しよう。
ここまでうまくいっていると、チャートが新しく表示されて、エキスパートアドバイザの適用するかどうか問われて[OK]を押すと、チャート左上にComment関数で表示させた内容、ここでは"Hello,world"と表示されるはずである。さてこの次に、このHello,worldの隣に現在時刻を表示させる。以下のようにOnTick関数の中身を変更しよう。
void OnTick()
{
Comment("Hello, world",TimeLocal());
}
変更したら、ここからさらに同様にコンパイルして実行しよう。
うまくいけば、上図のように現在時刻も表示されるはずである。