※本記事ではアフィリエイト広告を利用しています

FX自動売買

自作EAでポジションを全決済、分割決済する方法【MT4でFX自動売買】

 

本ブログではMT4を使用した自動売買システム(EA)の開発を扱っています。
本記事ではポジションの全決済、分割決済を自動化する方法をご紹介。

 

≫【人気記事】お金をかけずに作るFX自動売買システム

≫ MT4をお持ちでない方は以下の証券会社で入手可能です

 

✔ 本記事のテーマ

MT4には保有ポジションを一括決済する機能は実装されていません。
ネット上でもあまり有効な方法は提示されていないようです。
ならば自分で作ってしまえ、と考えたのが開発のきっかけです。

 

本記事の方法で自作EAに一括決済/分割決済ロジックを実装できます。
ソースコードも付けているので参考にして下さい。

 

✔ こんな悩みを解決

・自動売買で保有ポジションを一括決済したい

・特定条件で一部のポジションを決済したい

・裁量で取ったポジションを自動で決済したい

 

もし上記のような悩みがあれば、本記事でばっちり解決します。

 

 

1.特定条件下でポジションを清算したい

以下の質問を例題にロジックを組んでいきます。

 

(引用元:yahoo知恵袋

 

質問者さんの希望を要約すると以下になります。

 

質問者さんの希望

・トータル益がプラスの際に一括決済するロジックを実装したい

・決済とエントリー条件が重なる際にロジックが想定通りに働かない

 

それでは実装する方法を考えていきましょう。

 

2.実装したい機能を整理する

実装したい機能を分割すると以下の3つに分けることができます。
それぞれの機能について見ていきましょう。

 

実装が必要なロジック

① 複数ポジションのトータル益を判断するロジック

② 全てのポジションを一括決済するロジック

③ 決済するタイミングで新しいポジションを取らないようにするロジック

 

①のトータル益は OrderProfit() 関数で取得が可能です。

 

③は決済中、または決済後に一定期間ポジションを取らないことで解決します。
以下の記事で紹介している方法で時間経過を取得すればOKです。

 

未決済の原因は売り注文、買い注文の同時発注による不具合と推察します。
証券会社は連続発注されたオーダーを弾くことがあります。
間隔を3秒程度あけると良いでしょう。

 

よって、今回実装すべきは②の「全ポジションを一括決済するロジック」です。

 

KAZU
ようやく本題です。おまたせしました。

 

3.サンプルソースコード公開

今回は以下2つのロジックを公開します。
サブ関数化しているため、コピペしてご自身のEAに組み込んでも使えます。

 

今回公開するロジック

 

・保有ポジションを一括決済

呼び出されるとすべてのポジションをクローズします。
条件として追加すれば決済ポジションを限定することも可能です。

 

拡張ソースコード

ソースコードの末尾に以下を追加してください。
あとは決済条件を設定してallclose関数を呼び出します。

 

 command
//------------------------------------------------------------------------------------
// 6. allclose : ポジション一括決済
//------------------------------------------------------------------------------------
void allclose(){
int res,res2,magic;
double BID,ASK,endlots;
int torder = OrdersTotal();
string rrcur;
for(int i = torder-1; i >= 0; i--){
res = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
rrcur = OrderSymbol();
BID = MarketInfo(rrcur,MODE_BID);
ASK = MarketInfo(rrcur,MODE_ASK);
endlots = OrderLots();
magic = OrderMagicNumber();
if(OrderType() == OP_SELL)
res2 = OrderClose(OrderTicket(),endlots,ASK,50,Blue);
if(OrderType() == OP_BUY)
res2 = OrderClose(OrderTicket(),endlots,BID,50,Blue);
Sleep(3000); //連続で決済命令を送ると証券会社側で弾かれるため
}
}

 

・保有ポジションを分割決済

基本は一括決済のロジックと同じです。
提示しているコードは保有ポジションの中から古い順で半分をクローズします。
通貨ペア毎、買い、売りポジション毎にカウントすればより目的のロジックに近づきます。

 

拡張ソースコード

ソースコードの末尾に以下を追加してください。
あとは決済条件を設定してallclose関数を呼び出します。

 

 command
//------------------------------------------------------------------------------------
// 6. splitclose : ポジション分割決済
//------------------------------------------------------------------------------------
void allclose(){
int res,res2,magic;
double BID,ASK,endlots;
int torder = OrdersTotal();
string rrcur;
int closelimit = OrdersTotal()/2;    //総ポジションの半分
 
for(int i = torder-1; i >= 0; i--){
res = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
rrcur = OrderSymbol();
BID = MarketInfo(rrcur,MODE_BID);
ASK = MarketInfo(rrcur,MODE_ASK);
endlots = OrderLots();
magic = OrderMagicNumber();
if(OrderType() == OP_SELL && closecount<=closelimit)
res2 = OrderClose(OrderTicket(),endlots,ASK,50,Blue);
if(OrderType() == OP_BUY && closecount<=closelimit)
res2 = OrderClose(OrderTicket(),endlots,BID,50,Blue);
Sleep(3000); //連続で決済命令を送ると証券会社側で弾かれるため
if(res2=1)
closecount = closecount +1;
}
closecount = 0;
}

 

4.開発に詰まったらインプットを

EA開発に必要なのはトレードスキルとプログラミングスキルです。
どちらが欠けていても良いEAは作れません。
以下に知識やスキル不足を補うツールを紹介します。

 

コスパが良いおすすめサービス

FX投資マスターガイド【無料】
FX手法解説本、基本戦略はこれ読めばOK

FXメタトレーダー入門【約2千円】
EA開発者のバイブル、初心者から上級者まで

EAつくーる【約3万円】
プログラミング無しでEA開発、お試し版あり

EAプログラミングセミナー【約4万円】
講師からの指導を受けつつEA開発の基礎を学べます

 

・FX投資マスターガイド【無料】

FXの基本戦略はこれ読めばOKです。
特に図解が分かり易いのでロジックを考える上で参考になります。
メールアドレス登録だけなので忘れず貰いましょう。

FX投資マスターガイド

>>FX投資マスターガイドのダウンロード

 

・FXメタトレーダー入門【約2千円】

EA開発者を目指すなら以下のシリーズは押さえておきたいです。
筆者は書籍版を持っていますが、電子版が半額で売られています。
これから購入される方は電子版をお勧めします。

 

✔ FXメタトレーダー入門【初心者向け】

MT4の使い方を1から紹介してくれます。
これからEAを自作しようという方にはちょっと物足りないかも。
とは言え持っておいて損はない1冊です。

AMAZON 楽天

 

✔ FXメタトレーダー実践プログラミング【中~上級者向け】

MT4の使い方はOK!と言う方はこちらからで大丈夫。
辞書的な使い方もできるのでお金に余裕があれば紙媒体もおすすめです。

AMAZON 楽天

 

・EAつくーる【約3万円】

自作が難しいと感じたらEAつくーるを使うのも選択肢です。
1度購入すればノーコード(プログラミング無し)でEAが作れます。

 

2ステップで作るオリジナルEA

①EAつくーるでベースを作成
②つくーるの機能で実装できない自作ロジックを追記

 

今ならお試し用の1ヶ月版が2980円で使えます。
割高なので”使える”と思ったら買い切り版に切り替えましょう。

 

 

 

MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる! | GogoJungle

>>EAつくーるの概要はこちら

>>1ヶ月版の販売ページはこちら

 

・EAプログラミングセミナー【約4万円】

がっつり取り組みたいのであればEAプログラミングセミナーもおすすめです。
難易度別に3つの講座が提供されているので、レベルに合わせて選択しましょう。

 

>>スタンダード講座
>>実践講座
>>裏口座

 

5.まとめ

本記事では保有ポジションを一括決済、分割決済する方法を紹介しました。
応用次第で取引の幅が広がるので是非挑戦してみてください。

 

その他のロジックについて知りたい方は以下の記事を参照下さい。

>>参考:『FX自動売買システム(EA)の自作に困った際のヒント集』

 

以上、参考になれば幸いです。

 

  • この記事を書いた人

KAZU

FX自動売買にハマり有料無料含め100以上のEAを使用。それでも満足できず自作を始めた筋金入りのEAオタクです。ブログではFXの始め方から自動化までを解説。特にFX自動売買ツールの自作記事が好評です。

-FX自動売買

© 2024 KAZUのFX自動化ラボ Powered by AFFINGER5