1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[EA億り人計画 第1章]FX自動売買プログラムの基本と設計

Last updated at Posted at 2025-01-08

概要

FX自動売買プログラムを作るにあたって、知っておくべき基本的なことと、ベースの設計についてまとめた。


この記事は、ワイみたいなプログラミングがもともとできて、トレードを少しかじって、EA作ってみようという人を主にターゲットにしてるわよ。
いくつかトレードにおける基本知識が必要なこともあると思う。わからないことがあったら質問してもいいわよ。

はじめに

前回の記事 - [EA億り人計画 序章]自動売買プログラム(EA)を自作して、億り人になるために色々調べてみたにおいて、FXの自動売買プログラムをMT5というソフトを使って、MQL5言語で作ることにした。

MQLプログラムの種類

MQLプログラムには2種類ある。

  • インジケーター/指標 (チャート上に時系列のデータを表示できる)
  • EA (オブジェクトの描画やトレードができる)
    このどちらかでしか作ることはないらしいし、どちらかにしかならないようになっているようだ。

EAプログラムの基本

構文はほとんどC++に近いそうだ。(C++詳しくない)
基本的にオブジェクト指向かつ静的型付けのコンパイラー型言語である。モダンエンジニアな人たちはコンパイラーあんまり使ったことないかもね。

(ちなみにインジケーターは今のところ雰囲気でなんとなくは作れるものの、変数の扱いが独特過ぎてわけがわからないので、まだ詳細な記事は作りたくないぞ。笑)

EAのプログラムは、MT5を起動し、チャート画面に紐づける形で、起動できるようになっている。
そして、起動したEAは、所定の時間になったタイミングや、新たな価格配信を取得した時に処理をし、トレードを実行することができる仕組みとなっている。

そう、EAプログラムは、基本的にイベントベースで動く。

基本の流れ

最低限のEAプログラムは、下記の流れで動作する。

  1. 起動後に初期処理
  2. 新たな価格が配信された際の処理

初期処理 OnInit

EAのテンプレートや既存のサンプルソースを開くと、OnInitというメソッドが最初から用意されているが、これが起動時に呼ばれるメソッド。俺達は明確にこれを呼ぶ必要はない。勝手にMT5が呼んでくれる。

ただし、EAをチャートに呼び出したときだけでなく、チャートの時間足を変更した際にも呼ばれるため、少し注意が必要。

チャートの時間足の変更時などは、初期化解除処理 OnDeinit と対になって呼ばれる。

ティックイベント OnTick

最も使われるであろうイベント。価格が更新される毎に呼ばれるので、相場や取引所によっては、1秒間のうちに何度も呼ばれることがある。こちらもMT5が勝手に呼ぶので、俺達はこの中身を編集するだけで良い。

絶対に1秒や1分のうちに1回呼ばれるとは限らないので、その場合は EventSetTimer()OnTimerを使う。こちらは逆に、休場日なども呼ばれるため注意。

トレードの流れ

次は、相場をEAで扱うにあたって、どのような処理となるか、ざっくり解説してく。

ちなみにトレードの大まか流れは、人間がどのようにトレードするかとほとんど同じ考え方だと思われる。

大まかなトレードの流れ

まずは、人間の理解しやすいところで書くと次のような感じでトレードする。

  1. 使うインジケーターがある場合、その設定などの準備をする。
  2. チャートを監視し、買い・売りのシグナルがある場合、注文を実行し、ポジションを建てる。
  3. 引き続きチャートを監視し、儲かったときに利益確定の決済をしたり、儲からなかったときに、損切りの決済をする。
  4. 1に戻る

EAプログラムの処理の流れ

これを、先のEAプログラムの仕様に落とし込むと、こういった処理になる。

  1. 初期処理
    1. インジケーターの初期化、変数の準備などを行う
  2. ティックイベント
    1. すでにポジションがある場合
      1. ポジションの利益確定や損切りを行うかどうかの判断を行う
    2. 買い・売りの条件を判断
      1. インジケーターや現在価格などをみて、判断を行う

EAのテスト

MT5には、EAを指定期間の過去データでテストする機能が用意されている。また、取引所が用意してくれている、デモ口座での実行もよりよいEAを作るためにおすすめする。

終わり

ある程度プログラミングができる方であれば、最低限これだけあればまずは作れると思われる。
次回は、相場環境についてなども交えて、もう1歩進んだEAの戦略を考えていきたい。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?