結論から言って全く使えるEA(エキスパート・アドバイザー)ではありません。というのも勉強を目的に構築したものだからです。
今回サンプルでEAを作ったものは「買い」のみのゴールデンクロス・デッドクロスです。
ゴールデンクロス・デッドクロスとは
ゴールデンクロス・デッドクロスを解説しているサイトはたくさんあるので、ここではあえて詳しく説明しませんが、今回私が構築したEAは短期移動平均線が長期移動平均線を「下から上に抜けたときは新規買い」、「上から下に抜けたときは決済売り」だけができるプログラムを作成しました。
このEAをバックテストした結果は下記のとおりです。
ロジック的には当然の結果ですねw
このEAが勝てるものとは一切思っていませんが、勉強の仮定でしっかりバックテストの方法まで漕ぎ着けたのは自分としての成果です。
ゴールデンクロス・デッドクロスの作り方
MT4の自動売買はMQLという言語でプログラミングを行います。ここで紹介する内容は、変数やif文など基本的なプログラミング知識がある方を前提に解説しています。
EAの構成
EAは、以下の3構成になっています。
- int OnInit()
- void OnDeinit(const int reason)
- void OnTick()
OnInitは、EAを起動する際に最初に読み込まれるものです。OnDeinitは、EAを終了する際に処理されるものです。そして、OnTickはレートを受ける度に処理されるブロックになっています。
今回私が記述したプログラムは全てOnTickです。そしてプログラムの処理概要は次の通りになります。
新規買いまでの流れ
- 現在のポジションがあるかチェックする
- ポジションがなかった場合、MAがゴールデンクロスしたかチェックする
- 条件を満たした場合、新規買い注文を出す
決済売りまでの流れ
- 現在のポジションがあるかチェックする
- ポジションがあった場合、MAがデッドクロスしたかチェックする
- 条件を満たした場合、決済注文を出す
かなり単純な処理ですが、移動平均線をゼロから作成するのではなく、あらかじめ用意されているライブラリから呼び出すだけで移動平均線(関数名:iMA)を計算できるのは非常に楽ですね。
まとめ
ビットコインの動きを自分が考えた自動売買でしっかり捉えて、打ち出の小づちまで持って行けたら最高ですよね。
道のりはまだまだ遠いですが、やりがいはあります。MQLは非オブジェクト指向のプログラミング言語なのでスクリプト言語に近い感じです。
初心者でも意外とすんなり入れますし、初めて自分が作ったEAがバックテストで動いてくれるのは感動しますね。
国内でMT4(自動売買)が使える業者はビットポイントだけなので、自動売買にチャレンジしたい方はビットポイントで口座開設してくださいね。
ちなみに私が自動売買で実現したいのは、時間帯を絞ったトレンドフォロー型の短期トレードです。それを実現するために、ビットコインはどの時間帯で動くのか下記の記事にまとめたので参考にしてください。