どうも、エリオットオノノです。
ぼくも元々プログラマーなので、自身のFX自動売買システムやサインツールを現在も開発している実体験から、ツール開発をするにあたっての触り部分についてだけまとめてみました。
開発に関する相談も気軽に乗りますので、FXトレードプログラミングに興味のある方は、是非一度チャレンジしてみはいかがでしょうか。
FXでメジャーな「売買ツール」とは?
APIを公開している証券会社で、APIプログラミングが主流となってきますが、FXでの取引プラットフォームソフトウェアとして有名なものに MetaTrader(MT)があります。
MetaEditor(メタエディター)という開発環境も用意されているため、誰でもプログラムを開発することができるようになっています。
また、MetaTrader4(MT4)は、外国為替証拠金取引の為に設計された無料の取引プラットフォームです。幅広い分析能力、柔軟な取引システム、アルゴリズムトレードやモバイルトレード、取引ロボットやテクニカルインディケータのマーケット、内蔵仮想ホスティングや取引シグナルなどを提供しています。
証券会社から MetaTrader が提供されているケースもあり、オリジナルインディケーターが使えるなど、独自指標を元にトレードを行いたい場合には有用なツールとなるのではないでしょうか。
どうやってを始めるのか?
FXトレードにおけるプログラミングは、大前提としてFXに関する知識は必須です。
当たり前ですが、取引に当たっては「いつ売り買いを始めるのか?」を決定する必要があります。相場が「上昇局面にあれば買い」「下落局面にあれば売り」を行うという方法を「順張り」と言います。
初心者の方はこの方法がトレードに取り組みやすいと言われており、この方法が王道とも言われていますが、「短期・超短期」トレードでは相場変動の変化が激しいため利益を出す難易度は高くなります。
秒単位で相場はどんどん変化していきますので、これらの相場変動に合わせた超短期トレードを行うための「MT4」を使った自動売買システムを作ることができれば、人間には不可能な早さでトレードを繰り返すこともできます。
そのために覚えなければいけないプログラム言語が MetaQuotes Language(MQL)です。
このプログラム言語を利用することで MT4 内でエキスパートアドバイザー(EA)という機能を利用して、FXの自動売買を行うことができるようになります。
今回はこのEAを利用したプログラムの書き方について触りだけ見ていきたいと思います。
「MQL」はC言語のようなな書き方ができ、プログラミングができる方ならそれほど悩まずにプログラミングができるのではないでしょうか。
EA用のファイルを作ると次の3つの関数がすでに用意されています。
「OnInit」「OnDeinit」「OnTick」
OnInit関数は、EAを設定した際に一番初めに実行される初期化用の関数です。何か初期化処理が必要であればこの関数の中に処理を書いていきます。
int OnInit()
{
//初期化処理を記述
}
OnDeinit関数は、EAを解除した際に実行する処理を書いていきます。
void OnDeinit()
{
//EAを解除した時に必要な処理を記述
}
OnTick関数は、価格が変動した時に自動的に実行される処理を書いていきます。
void OnTick()
{
//価格が変動した時に必要な処理を記述
}
上記以外にも様々な関数が用意されており、独自のユーザー定義関数なども作っていきます。
何を書いていくのかはトレード手法によって異なりますが、「Bid」で価格変動時の売値を取得でき。「Ask」で書い値を取得できるなど、必要な定数や関数の使い方を学んでいくことが必要です。
まとめ
触りの触りなので「なんのこっちゃ…」という方もいると思いますが、情報量が膨大になるので勘弁してください…
ぼくがヒマなときにでも、スクリプトやカスタム指標、エキスパートアドバイザー(EA)から自動売買システムまで、シンプルなサンプルプログラムを多数用意して、プログラミングの初心者にもわかるようにアドバイスができればいいなあという気持ちはあります。
これからシステムトレードのプログラミングに取り組みたい方、あるいは一度挫折したものの再挑戦したい本気の方はまたお声掛けいただければと存じます!
また、フリーランスエンジニアとしていつか独立したい人はこちらの記事もオススメです。
【エンジニア独立のすゝめ】未経験からフリーランスエンジニアになるまで
その他にご相談などがあればお気軽にLINE@までご連絡くださいね!