MT4を使ったビットコイン自動売買入門15分で「ドンチアンブレイクアウトBOT」をつくる

MT4でも仮想通貨自動売買はできます。

重要なのが、スワップポイントです。

FXGT・Exnessスワップポイント比較

FXGTのスワップポイント

仮想通貨を取り扱っているFXGT

$20000なら、約2$分が徴収されます。

4時間に一回のタイミング

4時間に一回なので、6回/日です。1日12ドル分。

FXGTはスキャルピングやデイトレード向きです。

Exnessのスワップポイント

Exnessでも仮想通貨の取り扱いがあります。

Exnessはスワップポイントが0なので中長期の戦略が使える。

今回のロジックは中長期のタイプなのでExnessを使いたいと思います。

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

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

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

MT4のEA作成手順

自動化ロジックを探す

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

今回は元祖ドテン君と同じでドンチアンブレイクアウトを実装します。

期間Nの高値をブレイクアウトでロング、期間Nの安値をブレイクアウトでショート。

つまり永遠にポジションを保有します。

ドテン君と呼ばれていて2018年に大流行したそうです。

手法をEA化させるには?

・エントリー

・決済

の2個のルールが必要

実装する

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

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

過去期間Nの高値更新でロング

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

1時間足のBTCUSDを表示させています。

チャネルブレイクアウトという名前でTradingView公式のストラテジーにあります。

これの時間軸:日、期間:5が強かったので、1時間足の期間120にして使っていきたいと思います。

ドンチアンブレイクアウト 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が実行させているので返却しなくてもいい。

期間Nの高値・安値を取得する

MT4に標準搭載されていました。

簡単に期間Nの高値安値とれました。

マジックナンバーを付与することでEAでのポジションを識別する

マジックナンバーをつけておきます。

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

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

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

int magic_number = 111;

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

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

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

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

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

条件分岐をつくる

次はポジション保有状態で条件分岐させます。

期間Nの高値・安値を変数にいれる

変数に代入するとは?

再利用しやすいようにdouble takane,double yasuneに計算結果を代入しています。

double は小数点の変数宣言です。

グローバルスコープに状態(フラグ)を保存する

buy,sellのフラグを保存します。

ローソク足1回につき一度だけ実行させる

一時間に一度だけ実行させる

ポジションを持っていればドテンする

引数って何?

引き渡すデータを引数と呼びます。

(double stop) が引数です。

今回は引数を1個渡しています。

引数は呼ぶときに呼び出し元で記述します。

set_stop(価格); なら保有ポジションにストップ指値を付与します。

EAが完成!

コード全文

あとは

をおすと

この表示がでる。

これで完成です。

バックテストする

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

これで

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

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

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

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

考察

ドローダウンがでけえ。

純益が142ドルで最大DDが198ドルなので瞬間最大負け額が大きいです。

この手法はトレンド発生時はドカンと勝てる。マグロの一本釣りのような手法。

1時間足の期間120なのでマイナスポジションを保有している時間はかなり長い。

精神的に苦しいです。

エントリールールだけでイグジットもするため、

エントリールールに優位性があるのかも知れない。

イグジットを改良していこう。

ドンチアンブレイクアウト、日足の期間20プロフィットファクター2.3でめちゃくちゃ強いけど

書籍の手法だと1年ぐらいポジション放置することがあるのでBOT化する必要性あるのだろうか?

実際に稼働させる

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

これでおわりです。

MT4のEAが完成!

お疲れ様でした。

全部がおわりです。

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

まとめとおさらい

手法をEA化させるには?

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

MT4のメリット

・無料

・デモ口座が使える

・情報が豊富にある

MT4のデメリット

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

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

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

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

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

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

夏はビールがうまい!

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

  • -
    コピー

この記事を書いた人

最近のコメント

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

人気記事