MQL
概要
MetaQuotes Languageの略で、メタトレーダー上で動作するプログラム言語です(C言語に似ています)。MetaEditor上でプログラム開発していきます。
いきなり
いきなり注文を出してみましょう。MetaEditorの『File』-『New』-『Expert Advisor Wizard』にて『Expert Advisor』を選ぶと作られる雛型のstart()内を以下の様にします。
int start()
{
//買い注文
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(25*Point), Ask+(25*Point), "Buy", 0, 0, Blue);
return(0);
}
このたった一行で、為替が動くたびに買い注文が増えていきます。まずは第一歩踏み出せたというとこでしょうか。
ちなみに、このstart()は相場が動く度に呼ばれます(分足・時足等関係無く、変化すれば呼ばれます)。
※各足(分足・時足等)毎に関係するのは、Close[]等の参照値です(Close[0]が現在値、Close[1]が時足なら前の1時間での終値となる)。
次
このままでは、買いっぱなし(利食い・損切りは付けてますが…)なので、自分のポジションを確認して「あれば決済、なければ買う」というプログラムにしてみましょう。
int start()
{
//変数の宣言
int cnt, CurrentPosition;
//ポジションチェック
CurrentPosition=-1;
for(cnt=0;cnt<OrdersTotal();cnt++) {
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol() == Symbol()) {
CurrentPosition=cnt;
}
}
//ポジション無し
if(CurrentPosition == -1) {
//買い注文
OrderSend(Symbol(), OP_BUY, 1, Ask, 3, Ask-(25*Point), Ask+(25*Point), "Buy", 0, 0, Blue);
} else {
//ポジションの選択
OrderSelect(CurrentPosition,SELECT_BY_POS);
//通貨チェック
if(OrderSymbol() == Symbol())
{
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
} else if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
}
}
}
return(0);
}
OrdersTotal()分チェックして、ポジションあればひとつづつ決済していきます。ポジション無くなれば、買いですね。
為替が動くたびに、買って売ってを繰り返すという動作をします。
ちなみに、これでバックテストを行うと…。

見る見る資産が減っていきます(スプレッド代分減ってるんでしょうね)。
自分でプログラムを組まなくて良い様に、『MQLオーダーメイド』というコーナーを立ち上げてみました(コチラ)。
興味ある戦略を指示して、オリジナルのmq4ファイルを作ってみましょう。
