今回は、エキスパート1号「何もしない」に、簡単な機能を追加するのを目標とします。
前回省略した「ソースコードの記述」、つまり「プログラミング」を体験していただくのが目的となります。
C言語ライクな文法の開発言語「MQL5」を使って、プログラミングします。
今回のステップ
・MT5を使おう<基礎編>
□.MT5をインストールする。
↓
□.何もしないEAを作り、動作させる。
↓
□.何か適当なメッセージをログ出力してみる。
↓
□.過去一定期の四本値を取得してみる。
↓
□.単純な売買ルール「山越えで売り・谷越えで買い」を実装する。
↓
□.オーダーを実装する。
↓
□.バックテスト。
実習の前に
予備知識としして2点だけ説明させていただきます。
作成したEA(test01.mq5)の構成
以下の3つの関数から構成されています。
関数 | 用途 | 稼働イベント |
---|---|---|
OnInit | 初期処理 | EA稼働開始時に一度だけ呼ばれる。 |
OnDeinit | 終了処理 | EA稼働終了時に一度だけ呼ばれる。 |
OnTick | メイン処理 | チャートの内容が更新されるたびに呼ばれる。 |
MQL5は、上方向か下方向へ一定方向に処理されるのではなく、イベント発生時に指定された関数呼び出されるしくみです。
Print関数
引数で渡された任意のデータを、ログ出力します。
【書式】
Print(任意のデータ [,任意のデータ…]); |
【使用例】
Print("こんにちは"); int Cnt = 3; Print("結果=",Cnt); |
【結果】
こんにちは 結果=3 |
EAの稼働開始時に「Start」とログ出力する
OnInit関数にPrint関数を記述します。
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Print("Start");
//---
return(INIT_SUCCEEDED);
}
|
EAの終了時に「Finish」とログ出力する
OnDeinit関数にPrint関数を記述します。
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
Print("Finish");
Print(AccountInfoDouble(ACCOUNT_BALANCE)); //口座残高の取得
}
|
別名保存
コンパイルする前に前回のソースコードを上書きされないよう、別名「test02.mq5」で保存します。
① 画面上部メニューバー<ファイル>→<名前を付けて保存>を選択します。
②ファイルウィザードが手前に表示されますので、ファイル名を「test02」と入力して[保存]をクリックします。
コンパイルと動作確認
前回手順でコンパイルと動作確認をします。(エキスパートをtest01からtesst02に変更するのを忘れないように!)
ターミナルの操作ログにメッセージが表示されていれば成功です。
今回は以上となります。オツカレサマでした。