ご訪問ありがとうございます。
元スーパー店員で不労所得生活を目論むひろしです。
前回
TrimPipsプロトにpips表示削除で決済処理を追加する
TrimPipsプロトにpips表示を削除することで決済処理される処理を追加する
今回は、以下のご質問の対応です。
1 2 3 4 5 6 7 8 |
おっさん 2020年 9月17日 返信 引用 編集 こんにちわ。プロコン改もどき使わせていただいております。 不具合というか、バグなのか仕様なのかはわからないのですが 指値エントリーを行った際、未エントリーにも関わらずpips表示されてしまいます。 もしよろしかったらこのあたりの修正を行っていただけると嬉しいです。 お忙しいでしょうがご対応よろしくお願いします。 |
指値注文(待機注文)に対応していませんでした。
確かに予約注文しただけでPIPS表示されてしまいます。
調べたところ
OrdersTotal()
は、エントリー中の注文と待機注文の注文の
両方が取得されるとのこと
なので、待機注文を無視するよう変更しました。
1 2 3 |
int ot = OrderType(); //予約注文は無視する if(!((ot == OP_BUY)||(ot == OP_SELL))) continue; |
PIPS表示箇所、決済2箇所の計3箇所です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
for(int i = OrdersTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; int ot = OrderType(); //予約注文は無視する if(!((ot == OP_BUY)||(ot == OP_SELL))) continue; m_OOP = OrderOpenPrice(); //選択した注文の注文価格 m_OP = OrderProfit(); m_OC = OrderCommission(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
bool CExitCurrency::exit() // --- 3 { if(OrdersTotal() == 0) Alert("not Order"); else { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; int ot = OrderType(); //予約注文は無視する if(!((ot == OP_BUY)||(ot == OP_SELL))) continue; if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0)) return false; Sleep(10); } } return true; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
bool CExitCurrency::exit(string str_symbol) // --- 4 { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; int ot = OrderType(); //予約注文は無視する if(!((ot == OP_BUY)||(ot == OP_SELL))) continue; if(OrderSymbol() != str_symbol) continue; if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0)) return false; Sleep(10); } return true; } / |
最後までご覧いただきありがとうございます。
参考にしたサイト
【MQL4勉強プログラミング】選択した注文の種別(指値買い、成行買いなど)を取得する方法は?
OrderType()関数は、選択した注文の種別(指値買い、成行買いなど)を取得するために使用します。 OrderType()関数は、以下のように定義されています。 int OrderType(); OrderType( ...
【MQL4学習】OrdersTotal()関数とはなにか?→ポジションと待機注文の合計数の取得
OrdersTotal()関数は、現に保有しているポジションと、待機注文の合計数を取得するために使用します。 OrdesTotal()関数とはなにか? OrdesTotal()関数は、以下のように定義されています。 Or ...
つぎはこちら
TrimPipsプロト 決済済みPIPS表示の追加
TrimPipsプロトの一覧 ご訪問ありがとうございます。 元スーパー店員で不労所得生活を目論むひろしです。 前回 リオン式をスタディ中です。 残念ながら、ついついエントリー してしまい、速攻で含み損に なってしまいます。 そこで、「Tri
ダウンロードはこちら→「TrimPipsプロトダウンロード申請」