自動売買プログラムにおけるエラー処理手法の提案

近年の為替取引では、人間の意思に従う自動的な取引、いわば自動売買が求められている。自動売買が完成すれば、構築したロジックに従い、24時間取引可能の上、人間の感情に左右されずに取引をすることができる。こうしたことを受け、自動売買を含む多機能な取引ソフトの開発が相次いでいる。中でも注目されているのは、メタトレーダー(MetaTrader)である。メタトレーダーとは、ロシアのMetaQuotesSoftware社が開発している高機能な為替取引用ソフトである。現在、使われている主なバージョンはメタトレーダー4およびメタトレーダー5になり、いずれも無料で提供されている。本稿では、メタトレーダー4を利用することにする。

メタトレーダー4の大きな魅力は、自動売買プログラムおよび実施することができる。メタトレーダー4には、自動売買プログラムを作成するために専用エディター(editor)が用意しており、そこで、MQL4(MetaQuotes Language 4)というプログラミング言語が搭載されており、自動売買プログラムを作成することができる。この機能を利用することによって、多彩な自動売買プログラムを作成することが可能である。さらに、作成された売買プログラムを検証するため、バックテストの機能も用意されている。メタトレーダー4によるプログラミングの中で、人間の知恵を生かしてトレードに活用することが期待される。

こうしたことを受けて、世界中の多くの外国為替取引業者(ブローカー)は、メタトレーダー4を受け入れている。メタトレーダー4には日本語を含む多国の言語が用意されており、海外では大手企業を含め多くの為替取引業者は、為替取引システムとしてメタトレーダー4を採用している。近年の日本では、為替取引業者でもメタトレーダー4の導入が増えてきている。一方、メタトレーダー4による自動売買プログラムを作成するには、MQL4言語の理解が必要である。MQL4言語は、C言語から派生したものであるが、特殊性を持っている。

エラー発生後に再度執行するには、while文処理が必要である。具体的には、whileループの中に関数OrderSend()、関数OrderClose()および関数OrderModify()を記する。これらの関数の戻り値が成功まで、繰り返す処理を行う。例えば、再注文を求めるコードは、次のような例を挙げる。

int Ticket = 0;
while(Ticket == -1)
{
Ticket = OrderSend(Symbol(), OP_BUY, 1, Ask, 3, 0, 0, "Buy", 0, 0, Blue);
}

上記のコードはエラーの原因に関係なく、繰り返す処理を行う。この場合にはすべてエラーが修正されるまで、無限ループに陥る。また、エラーコード種類によって、エラー後に再注文が行われるかどうかを決める。