週末にまとめてクローズするEA
50種類以上の通貨ペア、各種CFD(金、株など)対応
サンプルプログラムばかりであまり役に立っていないと思うので、ほしい人はほしいもの。
週末持ち越しは、いやだけどEAがポジション持ちっぱなしなんだよね!
という人のために、週末に強制的にクローズするEAです。
121証券のようにサーバが日本時間であることを前提に話します。
別の時間帯を採用しているFX会社と契約している方は、時間を調整してください。
EAを作ってみるを参考にEAを作ってください。
名前は、WeekendCloseとします。
パラメータは、ウィザードで設定してもらっても構いませんし、コードに以下のように指定してもらっても構いません。
extern int CloseWeek=6;
extern int CloseTime=5;
CloseWeekの6は、土曜日。
CloseTimeの5は、5時です。
曜日は、日曜日が0で、月曜日が1。
順番になっています。
まず、曜日と時刻をチェックする関数を追加します。
int ChkCloseTime()
{
int ChkWeek=DayOfWeek();
int ChkHour=Hour();
if((ChkWeek==CloseWeek && ChkHour>=CloseTime))
{
return(1);
}
return(0);
}
曜日と時間を取得して、指定した曜日と時間以上なら、1を返します。
次に、チケット番号をクローズする関数を追加します。
void ClosingTicket(int CloseTicket)
{
if(OrderSelect(CloseTicket, SELECT_BY_TICKET)==true)
{
if(OrderType() == OP_SELL || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP)
{
// Closing
if(OrderClose(OrderTicket(),OrderLots(),Ask,3,Green) == false)
{
OrderDelete(OrderTicket());
}
}
else
{
// Closing
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,Green) == false)
{
OrderDelete(OrderTicket());
}
}
}
}
指定された、チケットのオーダーをコントロールできるようにしてからクローズします。
クローズに失敗したときは、未確定の注文として注文の取り消しを行っています。
次に、実装部分を作ります。
int start()
{
if(ChkCloseTime() == 0) return(0);
int total=OrdersTotal();
int i;
for(i=0;i < total;i++){
if(OrderSelect(i, SELECT_BY_POS)==true)
{
ClosingTicket(OrderTicket());
}
}
return(0);
}
まず、終了時間かチェックします。
まだなら、そのまま関数を抜けます。
終了時間の場合は、現在もっているポジションを調べ、すべてのポジションをクローズしていきます。
サンプルを参考に改造して使ってみてください。
今回のプログラムは、以下からダウンロードできます。
EA(自動売買)は、
インストールパス\MetaTrader\experts
に入れてください。
タグ
2009年05月26日 コメント&トラックバック(1) | トラックバックURL |
50種類以上の通貨ペア、各種CFD(金、株など)対応
トラックバック&コメント
コメント
コメントを投稿する


![[image]投資で失敗しない7つの法則:無料CDプレゼント](http://www.affiliatecenter.jp/invest/img/FX_freeCD/banner165x100seven_rule5e.gif)
![[image]無料レポートプレゼント:ドルが紙くずになった時に資産を守る方法](http://www.affiliatecenter.jp/invest/img/dollar/MNL4_165x100.jpg)



MyBlog

始めまして最近MT4のプログラミングを勉強していて
こちらのサイトをよく見させてもらってます
今zigzagと言うメタトレーダーに入っているインジケーターに
高値から安値の差の値幅やローソク足の本数を表示したいのですが
どうやっていいのか分からない状態です
よろしければ今度ブログでこれについて取り上げてきただければ
幸いです
よろしくお願いします