2008年05月10日
MT4でリピートイフダン注文
- toyolab
- 11:57
- カテゴリー:!「FXメタトレーダー入門」
最近、某有名為替ブログでリピートイフダン注文の話題が続いていますね。
対応しているFX業者さんが、大々的に宣伝しているせいでもあるかと思います。
ただ、これはシステムをプログラミングできるプラットフォームであれば簡単にできてしまいますね。
ちなみにMT4だと、こんなプログラムになります。
//マジックナンバー
#define MAGIC 20080321
//パラメーター
extern double Lots = 0.1;
extern double OpenPrice = 104.00;
extern double ClosePrice = 105.00;
//ポジションの計算
int CalculateCurrentOrders()
{
int pos=0;
for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
{
if(OrderType() == OP_BUY || OrderType() == OP_BUYLIMIT) pos++;
if(OrderType() == OP_SELL || OrderType() == OP_SELLLIMIT) pos--;
}
}
return(pos);
}
// スタート関数
int start()
{
if(IsTradeAllowed() == false || CalculateCurrentOrders() != 0) return(0);
if(OpenPrice < ClosePrice) OrderSend(Symbol(),OP_BUYLIMIT,Lots,OpenPrice,0,0,ClosePrice,"",MAGIC,0,Blue);
else if(OpenPrice > ClosePrice) OrderSend(Symbol(),OP_SELLLIMIT,Lots,OpenPrice,0,0,ClosePrice,"",MAGIC,0,Red);
return(0);
}
何度も発注しないように CalculateCurrentOrders()で現在の注文数をチェックする必要がありますが、オープンポジションか指値注文がなければ、新たに指値注文を入れるという非常に簡単なロジックです。
OpenPrice と ClosePrce を適当に設定して、OpenPrice < ClosePrice の場合買い注文、逆の場合、売り注文になります。これをエキスパートプログラム(EA)として実行しておけば、リピートイフダン注文に対応したことになります。
なお、CalculateCurrentOrders()は、 同じようなものを「FXメタトレーダー入門」の334ページで使っていますが、紙面の都合で詳しい説明は書けませんでした。オーダー関連の関数については別の機会に説明したいと思います。