前回はテクニカル指標を利用したEA取引をご紹介しました。今回は取引の結果、状態を元に次の取引を行う仕組みのEAについてご紹介します。
建玉の決済方法に基づき、異なる行動を取ることができます。
例えば、
・StopLossで決済された場合 (取引履歴の損益の情報を判別)
-> 同じ方向に 2倍のロットで新規建て
・ TakeProfitで決済された場合 (取引履歴の損益の情報を判別)
-> 逆方向(ドテン)新規建て
・ Expireにより注文キャンセルとなった場合(時間による判断)
-> 2倍のExpire時間をセットして追加新規注文
取引履歴の取得方法について |
MT5では、 履歴取引情報の取得方法として、約定済注文(Order)もしくは取引(Deal)情報を履歴情報として取得可能です。
下記のように約定前注文、保有ポジションは現在時点での情報として取り扱い、約定済の注文、取引情報は履歴情報として管理されます。
MT4では取引情報は orderselect 関数を使用して過去のポジション情報を取得します。
https://docs.mql4.com/trading/orderselect
各種プロパティを取得するには、それぞれ異なる関数を呼び出す必要があります。※リンク先のNote欄参照
MQL5.com 記事:METATRADER 5 の注文、ポジション、取引 :https://www.mql5.com/ja/articles/211
参照項目:MQL5プログラムからのトレーディング履歴へのアクセス
MQL5.comでは色々な関数を使用して履歴データを取得する方法を記載しています。ここではそのうちの一つとしてProfit情報を返す関数をサンプルEAとして紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//最終約定取引のProfitを取得 double getHistory(){ //--- 取引履歴をリクエストする * 直近1時間(3600秒以内)の履歴を取得 HistorySelect(TimeCurrent()-3600,TimeCurrent()); uint total=HistoryDealsTotal(); //--- for(uint i=total-1;i<total;i--) { //--- 約定取引を取得 if((ticket=HistoryDealGetTicket(i))>0){ // 損益情報を取得する profit=HistoryDealGetDouble(ticket,DEAL_PROFIT); //--- ↓ 実は、損益以外の情報もこのように取得できるよ ↓ // price =HistoryDealGetDouble(ticket,DEAL_PRICE); // time =(datetime)HistoryDealGetInteger(ticket,DEAL_TIME); // 銘柄情報の取得 // symbol=HistoryDealGetString(ticket,DEAL_SYMBOL); // 銘柄情報の取得 // type =HistoryDealGetInteger(ticket,DEAL_TYPE); // 売買方向の確認 //--- ↑ 実は、損益以外の情報もこのように取得できるよ ↑ //--- In / Outを取得して、新規/決済の区分を取得する entry =HistoryDealGetInteger(ticket,DEAL_ENTRY); // 約定 / 決済 | EntryIn / Outの確認 if(entry ==DEAL_ENTRY_OUT){ return profit; } } } return 0; } |
プロパティとして取得可能な情報について
取引のプロパティ
https://www.mql5.com/ja/docs/constants/tradingconstants/dealproperties
注文のプロパティ
https://www.mql5.com/ja/docs/constants/tradingconstants/orderproperties
このような情報から、取引結果をご確認いただくことが可能です。
- Tags
- MQL5