MT4自動売買プログラミング入門MAゴールデンクロスEAを作る

いまからMT4で仮想通貨の自動売買をしてみたいという人はいるかい?

ちょっと前まではMT4やMT5で仮想通貨の自動売買をやろうとすると選択肢が少なかったですが、最近ではBybitやExnessでもトレードできるので仮想通貨の自動売買をMT4で作るのも有りだと思えてきました。

MT4は古くからあるツールなのでPythonで作るよりもインターネットの情報が探しやすい点で初心者におすすめです。

MT4で自動売買EA(エキスパートアドバイザー)を自作する

毎度ですが先にゴールを決めてから作りはじめます。

今回のゴールは、「MAゴールデンクロスの自動売買ツールを完成させる」。

MT4のEA作成手順

自動化ロジックを探す

自動化させるルール探します。

今回は移動平均線を使ったオーソドックスな手法を使います。

ゴールデンクロスで買い(エントリールール)

利確損切はパーセントで指定(決済ルール)

手法をEA化させるには?

・エントリー

・決済

の2個のルールが必要

実装する

ネットでググるとほとんど情報がでてくるので、きっと作れます。

自動化させるロジックを確認

SMAクロスでエントリー

先にTradingViewでロジックを確認します。

5分足のBTCUSDT、25SMAと60SMAを表示させています。

エントリールールはゴールデンクロス、決済ルールはエントリー価格より上下5%です。

MAゴールデンクロス by hosono_p on TradingView.com

コードは以下のリンクから確認できます。

ブログの存続のため、TradingViewの有料アカウントを申し込むときは以下の紹介リンクから申し込みをお願いします。

MT4のインストール

仮想通貨の自動売買をしたいのでMT4はエクスネスのデモ口座を利用します。

Exness公式サイト(紹介リンク)

エクスネスのMT4デモ口座の申請方法

マイアカウント
新規口座開設
デモ口座をためす

パスワードを入力して口座開設
口座パスワードはMT4ログイン時に使うので控えておく
デモ口座の完成
取引を押す
口座IDが表示される
Windowsのターミナルをインストール
exeを起動
実行
セットアップ
次へを押す
完了
完了を押すと勝手にMT4が起動する
ファイル>ログイン
デモ口座のアカウント情報を入力
MT4のインストール、デモ口座の準備が完了
通貨ペアから仮想通貨の通貨を表示させる
表示>通貨ペアリスト
BTCUSDmを表示させる
通貨ペアに表示された
右クリックでチャート表示させる
チャートが表示された
ほその

お疲れ様でした。これでMT4の準備完了です。次はプログラミング用のエディタを表示させます。

MT4のプログラミングエディタ(メタエディタ)を起動

メニューから新規注文の右にあるメモ帳を押す
メタエディタの起動が完了

MQLのプログラムのコードはここに書いていきます。

エキスパートアドバイザーの新規作成

新規でEAを作ります。

新規作成
エキスパートアドバイザー
名前を入力
次へ
デフォルトでOK
完了
テンプレ入りのコードが作成された

テンプレコードの説明

いちおうテンプレの説明しておきます。飛ばしてもOKです。

上から9行目まではEAの説明文など

最後の property strict で日本語化されます。

他はEAの説明文に転載されます。

// ダブルスラッシュから始まるのはコメントアウトです。

int OnInit()はEA起動時に呼ばれる機能です。

int OnDeinit()はEA削除時に呼ばれる機能です。

void OnTick()は値動きがあった時に呼ばれる機能です。

使わない機能がある場合は?

テンプレには3つの機能がデフォルト搭載されている

・EAを開いたとき

・EAを終了させたとき

・値動き時

今回は値動き時のときだけプログラムのコードを実行させるので値動きだけでOK

不要なテンプレ機能は削除した
OnTick()とは何者なのか?

OnTick関数は値動きがあったら呼ばれる機能です。

例えばBTCUSDの最小単位0.01が動けば実行されます。

20000.00→20000.01

ちなみにMT4では最小単位をPointと呼びます。

ところで void って何?

void 何も返さない

実行したときに呼び出し元に何も返さない。

対義としては何かを返す関数。

voidの他に、何かを返す関数はint,double,boolが使われる。

何も返さない場合は void を関数の先頭につける。

OnTickはMT4が実行させているので返却しなくてもいい。

移動平均線SMAを計算する

MT4には組み込み関数でテクニカル指標を計算してくれる機能があるので使います。

ネットで「移動平均線 MQL」と検索するとヒットします。なので説明は割愛します。

SMA25の計算式

これで移動平均線が値動き毎に計算されます。

変数に代入

計算結果を変数に代入しています。

SMA25に移動平均線の計算結果をいれています。

ローソク足1個前の移動平均線と2個前の移動平均線を計算する

変数名を変更した

25SMA と60 SMAを計算する

エントリールールを計算する

エントリールールはMAのゴールデンクロスです。

チャート画面で確認すると、線がクロスした状態です。

線がクロスしたらBuyエントリーさせます。

このルールを言語化すると2個前の25移動平均線の方が小さい、1個前の25移動平均線の方が大きい

  • 2個前のローソク足 SMA25 < SMA60 かつ
  • 1個前のローソク足 SMA25 > SMA60

になります。

なので2個前の移動平均線の計算と1個前の移動平均線の計算が必要です。

これをプログラミングコードで翻訳すると、

SMA25_2 < SMA60_2 && SMA25_1 > SMA60_1

になります。

これでエントリールールが計算されました。

エントリールールを変数に代入します。

条件トリガーでエントリーさせる

条件分岐させます。

if文で条件分岐

==で等しい場合です。 is_buyがtrue(真)の場合波かっこ{}の中が実行されます。

この中にエントリー関数をいれたらエントリーされるのですが、もうひとつの条件をいれます。

ポジション数が0の場合という条件をつける

11行目に追加。

ポジション数をカウントする機能を呼び出します。

しかし、MT4の組み込み関数にはポジション数をカウントする関数がありません。

なので自分で関数をつくります。

17行目にintを返却する関数を作成

ネットで「ポジション数 mql」検索するとヒットしますので。説明は割愛します。

これであとはポジション数が0の場合にします。

プログラミングコードで翻訳すると、

position_count() == 0

です。

int posi = position_count();

で変数に代入にしているのでプログラミングコードは

if(is_buy==true && posi==0){}

になります。

BUY条件達成かつポジション数が0ならエントリー

エントリーも、ネットで「エントリー mql」検索するとヒットしますので。説明は割愛します。

これでエントリーが完成です。

決済ルールを計算する

エントリーしたらエントリーの価格情報を保存しておく必要があります。

色々な方法がありますが、今回はエントリーしたら価格をメモリへ保存します。

メモリの保存はOnTickの外側に変数を作れば可能です。

なので、OnTickの上に、double price;を加えておきます。

関数の外側は数値、データがリセットされないグローバルスコープ

関数の外側を外部スコープと呼びます。

関数に属していないのをグローバルスコープと呼びます。

double price;

は関数に属していない、グローバルスコープの変数です。

グローバルスコープにおいてあると処理で変更をしない限りデータは変更されません。

保存しておきたい数字はグローバルスコープへ置くと保存されます。

また、関数に属している変数のことをローカルスコープの変数と呼びます。

ローカルスコープの変数はOnTickが実行されるとデータはリセットされます。

エントリーと同時にグローバルスコープの変数priceに価格を保存しておくようにします。

エントリーしたらpriceに終値を挿入

決済条件は上下5%で損切利確します。

なので、

リミットとストップを計算して、現在価格(終値)と比較します。

条件達成で決済させる

条件達成でoreder_close();させます。

MT4の決済はポジションを選択して、決済させますので、ポジションを選択するコードを挿入します。

これはposition_count()と中身が同じなのでコピペします。

あとは「決済 mql」とネットで検索するとでてきます。

EAが完成!

コード全文

あとは

をおすと

この表示がでる。

これで完成です。

バックテストする

MT4の画面を開くとバックテストができます。

通貨ペアがでてこない場合はMT4の再起動をしてみてください。

これで

押すと、
バックテストが走る
レポートを押す

レポートで右クリックすると

レポートの保存ができます。

レポートは以下のように表示されます。

レポートでバックテストの詳細が保存されます。

実際に稼働させる

通貨ペア
BTCUSDmを右クリック
5分足を選択
ナビゲーターを開く
右クリックでチャートに表示
自動売買を許可する
自動売買を押下する
☺で自動売買がON

これでおわりです。

MT4のEAが完成!

お疲れ様でした。

全部がおわりです。

EAの入門からバックテスト、実稼働まで一通りやってみました。

そこまで難しくなかったでしょ?

わからないことはコメントに書き込みしてください。

まとめとおさらい

手法をEA化させるには?

エントリーと決済ルールが必要。

MT4のメリット

・無料

・デモ口座が使える

・情報が豊富にある

MT4のデメリット

・MT4の操作に癖があるので慣れるまでちょっとめんどくさい

・仮想通貨の対応している業者が少ない

このブログは広告で運営費を捻出しています。

なので広告収入がないとそのうち消滅します。

なので紹介リンクから口座開設の協力をお願いいたします。

あとAmazonで何か買い物をしてください。

Exness公式サイト(紹介リンク)

夏はビールがうまい!

FXのEAを作ってみるのもありかも。

  • -
    コピー

この記事を書いた人

最近のコメント

  1. アバター
  2. アバター
  3. アバター
  4. アバター
  5. アバター

人気記事