初心者が30分で作る「ドル円Zigizag押し目・戻り売り」無料EA

今回もりょう@EA系FXトレーダーさんのブログから手法借りてきました。

神サイト

EAのサンプルコードがたくさん載っています。

サクッと作る。

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

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

今回のゴールは、「ドル円Zigizag押し目・戻り売りーEA」をつくります。

MT4のEAの作り方は、

自動化ロジックを探す

後述します。

手法をEA化させるには?

・エントリー

・決済

の2個のルールが必要です。

実装する

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

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

エントリールール、決済ルールはこの記事を参考にします。

神サイト

MT4のインストール

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

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

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

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

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

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

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

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

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

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

新規でEAを作ります。

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

テンプレコードの説明

いちおうテンプレの説明しておきます。飛ばしてもOKです。※MAゴールデンクロスの転用です。

上から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が実行させているので返却しなくてもいい。

売買シグナルの関数をつくる

初心者向けに関数の説明からするので知ってる人は次項まで飛ばしてください。

ロング条件とショート条件をつくる。

関数is_buy()、is_sell()の空っぽの関数をつくっておきます。

関数とは?

呼び出したら、内容に応じてデータを返却します。

これだけの説明だと意味不明なので

まあ、使ってみますか。

関数の動作確認します。

この状態でコンパイルを押すと、

ツールボックスに詳細が表示される。

コンパイル
実行ボタン
ターミナル
エキスパート
メッセージ
メッセージに注目

Print()

Print()でエキスパートのログに出力させることができます。

関数の返却されたデータを表示させています。

今は、

だけなのでfalseが表示されています。

falseとは?

一般的にほぼ馴染みがないfalseはプログラムしてるとたびたび遭遇します。

〇か×かで

〇 は true;

× は false;

true(トゥルー) 又は false(フォルス) を真偽値(しんぎち)と呼びます。

真偽値はBoolean型、bool型、ブール型と呼ばれる。

型とは?

一般的にほぼ馴染みがない「型(がた)」はプログラムしてるとたびたび遭遇します。

文字は文字列型、数字は数字型、真偽値はブール型とデータよって型が決まります。

例)

”1” → 文字列型の1(文字列は””、’’で囲む)

1 → 整数型の1

true → ブール型のtrue

なんで型が必要なの?

型で使える機能が違います。

・整数型の例)

例えば整数型の1と整数型の2を足すと、算数になる

1 + 2

= 3

・文字列型の例)

例えば文字列型の”1”と文字列型の”2”を足すと、文字の連結になる

“1 “+ “2”

= “12”

”1” → 文字列型の1(文字列は””、’’で囲む)

1 → 整数型の1

true → ブール型のtrue

MQL4では関数をつくる時に型を指定する

関数は、

型、スペース、カッコ、波カッコの順番で書きます。

bool is_buy(){}

型:bool

スペース:

カッコ:()

波カッコ:{}

カッコ()には引き渡すデータを書きます。(今回は引き渡しのデータなしなので空白)

波カッコ{}の中には、処理と返却値を書きます。

bool is_buy(){return false;}

現在の関数の返却値はfalseです。

関数OnTick()内部でis_buy()を呼び出している

OnTick関数は値動きがあったらOnTick内部の処理が実行されます。

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

20000.00→20000.01

呼び出してPrint()で表示させています。

なので、以下のプログラムは

値動き毎に、is_buy()の中身をエキスパートのメッセージに出力しています。

void OnTick() { Print(is_buy()); }

なので、今は値動き毎にfalseが表示されています。

セミコロン;をつけるのはいつ?

void OnTick() { Print(is_buy()); }

セミコロン;を付け忘れるとerrorが表示される。

セミコロン;をつけるタイミングはステップ(1行)ごとです。

初心者はセミコロン;をつける、つけないはわからないと思います。慣れるしかないです。

Zigzagの価格を保存する配列を作成

グローバルスコープに置きます。最新のジグザグリスト、前回のジグザグリストを準備。とりあえず10個入る。

Zigzagの価格を配列に保存する機能をつくる

空っぽの関数を作った。

配列のインデックス番号をcount_high、count_low

これでZigizagの高値と安値が配列に格納された。

Zigizagリストの更新で売買シグナル判定する機能をつくる

  • A 前回のZigzagリスト0番と最新のZigzagリスト0番に相違がある場合はZigizagの更新シグナル
  • B トレンド判定
  • C トレンド判定
  • D トレンド判定
  • E トレンド判定
イコール(=)は変数に代入という意味でつかわれる

is_buy()が呼び出されるときに関数の処理が実行されます。

算数の=とプログラミングの=は意味が違います。

算数的な = はプログラミングでは、 == イコールイコールと書きます。

なので値動き毎に関数の計算結果が 変数に保存される

変数(へんすう)とは?

データの保存メモリー

プログラムは0と1の数字の世界なのでデータは数字、変形する数字なので変数(へんすう)

英語ではvariable(ヴァリアブル)と呼びます。この言葉はスプラトゥーンでしか聞かないのではないでしょうか?

変数をつくるときも 型 をつける

計算結果は浮動小数点数型(ふどうしょうすうてんすうがた)なので

double (ダブル) を つける。

doubleは小数点型とかダブル型と呼びます。

MQL4の条件分岐式の書き方

if、スペース、カッコ、波カッコの順番で書きます。

if(){}

if:

スペース:

カッコ:()

波カッコ:{}

カッコ()には条件式

波カッコ{}の中には、条件式を満たしたときの処理を書きます。

例)

if(rsi < 30) { return true; }

なのでrsiの数値が「30を下回る場合」は「return true;」されます。

関数はreturn;の時点で処理が終了

returnで 処理を完了させ、呼び出し元に戻る。

シグナルが発生したらtrue、発生しなければfalseを返却する。

ポジション数を調べる機能をつくる

ポジション数が0の時にのみトレードを行いたいのでポジション数を調べる機能をつくります。

ググったらでてきます。

  1. すべてのオーダーを確認
  2. オーダータイプ(ロングorショート)
  3. オーダーシンボル(通貨ペア)
  4. マジックナンバー(EA識別番号)

上記すべてを満たすポジションが存在するならcountの数字をプラス1する。

マジックナンバーはあとでエントリー時に付与するのですが、「777」に指定します。777のマジックナンバーなら、このEAでのエントリーになります。

(int side)は何?

カッコの中は引数です。

引数(ひきすう)って何?

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

(int side)が引数です。

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

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

関数仕様の例)

posi_count(0); ならBUYポジションをカウントします。

posi_count(1); ならSELLポジションをカウントします。

count++; は何?

countは初期値0の整数です。

int count = 0;

整数型は++をつけるとカウントアップします。

これをインクリメントと呼びます。

ちなみに–をつけるとカウントダウンします。これはデクリメントと呼びます。

ポジションエントリーの関数をつくる

ググったらでてきます。

公式の取扱説明書
取扱説明書
double qty = 0.1;は何?

注文数量です。

ポジション決済の関数をつくる

ググったらでる。

条件を満たしたらエントリーする機能をつくる

細かい関数はつくりおわったのでOnTick()を書き換えていきます。

  1. is_buy()がtrue
  2. is_up_trend()がtrue
  3. 買いポジション数が0
  4. 売りポジション数が0
OP_BUY と OP_SELL は何?

MQLには定数と呼ばれる,

あらかじめ用意されている変数があります。

OP_BUY は数字の0です。

EAが完成!

コード全文

あとは

をおすと

この表示がでる。

これで完成です。

バックテスト

MT4のナビゲーターで右クリックで更新する
MT4でファイルの同期
ストラテジーテスターを開く
EA名などを指定する
スタート
バックテストの完了
緑のバーが右までいったら終わりです。
レポートタブを開く
右クリックレポートの保存
保存

USDJPY10年バックテスト スプレッド 0.2

Zigzag設定12,5,3,0

USDJPY10年バックテスト スプレッド 0.2

りょうさん推奨設定。Zigzag設定16,5,3,0

USDJPY 10年 スプレッド2

りょうさん推奨設定。Zigzag設定16,5,3,0

実際に稼働させる

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

これでおわりです。

MT4のEAが完成!

今回はりょう@EA系FXトレーダーさんのブログから手法借りてきました。

EAのサンプルコードがたくさん載っています。

神サイト

お疲れ様でした。

全部がおわりです。

押し目・戻り売りのEAでした。

まとめとおさらい

手法をEA化させるには?

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

MT4のメリット

・無料

・デモ口座が使える

・情報が豊富にある

MT4のデメリット

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

このブログはアフィリエイトで運営費を捻出しています。

なのでアフィリエイト収入がないとそのうちブログが消滅します。

Exnessの口座を持ってない方はこちらのリンクから申し込みをしてもらえると管理人にアフィリエイト収入が入ります。

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

以下のリンクからAmazonで何かしらを購入してもらえると管理人にアフィリエイト収入が入ります。

稼いだ方はお祝いどうぞ

パソコン

MQLの本が出来たみたいですよ😀

MQL勉強にいいです

noteでマガジンを始めました。

  • 完全版ゴトー日EA
  • 完全版朝スキャEA
  • ユロドルアノマリーEA
  • 月末アノマリーEA
  • ポンドルアノマリーEA
  • ブレイクアウトEA
  • 完全版RSI逆張りEA
  • Web認証システム

ソースコード付きです。

ホソノP自作EA

Gotobi Teriyaki
19,800円
設置が簡単♪ゴトー日のEA
  • ゴトー日のEAです

もうやってるよね? タリタリの自己アフィリエイト

海外FXキャッシュバック口座開設ならTariTali(タリタリ)
海外業者にはキャッシュバック必須です。タリタリを使うと自己キャッシュバックが受け取り可能に。IB乗り換えもOK。
\スプレッドの40%が戻ってくる /
ドル円1LOT約400円キャッシュバック
  • -
    コピー

この記事を書いた人

最近のコメント

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