50歳手前の糖尿病メタボおっちゃんの色々悪あがき日記

老後の健康とお金のため・仕事をサボるため、あくせく悪あがきして生きています♪

とりあえず使えるようになる!メタトレーダー5でバックテスト~(3)何か適当なメッセージをログ出力してみる。

f:id:edger_arkw:20200502043634p:plain

MQL5ロゴ


 今回は、エキスパート1号「何もしない」に、簡単な機能を追加するのを目標とします。

 前回省略した「ソースコードの記述」、つまり「プログラミング」を体験していただくのが目的となります。

 C言語ライクな文法の開発言語「MQL5」を使って、プログラミングします。

 

 

今回のステップ

・MT5を使おう<基礎編>
 □.MT5をインストールする。
    ↓
 □.何もしないEAを作り、動作させる。
    ↓
 □.何か適当なメッセージをログ出力してみる。
    ↓
 □.過去一定期の四本値を取得してみる。
    ↓
 □.単純な売買ルール「山越えで売り・谷越えで買い」を実装する。
    ↓
 □.オーダーを実装する。
    ↓
 □.バックテスト。

 

実習の前に

 予備知識としして2点だけ説明させていただきます。

 

作成したEA(test01.mq5)の構成 

f:id:edger_arkw:20200502020619p:plain

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」で保存します。

① 画面上部メニューバー<ファイル>→<名前を付けて保存>を選択します。

f:id:edger_arkw:20200504105736p:plain

名前をつけて保存

②ファイルウィザードが手前に表示されますので、ファイル名を「test02」と入力して[保存]をクリックします。

f:id:edger_arkw:20200504105830p:plain

test02(拡張子はなくてOK)

コンパイルと動作確認

前回手順でコンパイルと動作確認をします。(エキスパートをtest01からtesst02に変更するのを忘れないように!)

ターミナルの操作ログにメッセージが表示されていれば成功です。

f:id:edger_arkw:20200502040423p:plain

操作ログにメッセージ

今回は以上となります。オツカレサマでした。