前回はテクニカル指標を利用した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
このような情報から、取引結果をご確認いただくことが可能です。
Originally posted 2019-08-12 13:32:12.