//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит открытых позиций в пунктах |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int GetProfitOpenPosInPoint(string sy="", int op=-1, int mn=-1) {
double p;
int i, k=OrdersTotal(), pr=0;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderTicket()== GetTicketMaxMinOrder(0) || OrderTicket()== GetTicketMaxMinOrder(1) ) {
p=MarketInfo(OrderSymbol(), MODE_POINT);
if (p==0) if (StringFind(OrderSymbol(), "JPY")<0) p=0.0001; else p=0.01;
if (OrderType()==OP_BUY) {
pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
}
if (OrderType()==OP_SELL) {
pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
}
}
}
}
}
}
return(pr);
}
それでも新しいティックごとに条件を確認する必要があり、前のティックでうまくいかなかった場合は、新しいティックで変更することになります。
そして、エラー処理も行わなければならない。
。 タイプミス?どちらの関数もパラメータは1つしかとれないと思います。
配列を通して行うのであれば、そこに書き込まれた修正注文のティックのみを他の全てのものと照合します。 だいたい合ってますね、はい、ありがとうございます。その場合、オブジェクトに保存するのであれば、チケットではなくユニークなマジックを用意しないと、
同じ名前のオブジェクトが何十 個とできてしまう。
タイプミス? どちらの関数もパラメータは1つしかとれないと思います。
それはないでしょう。
申し訳ありません
https://www.mql5.com/ru/docs/objects/objectname
MT5用です。
で、これはMT4用 です。
それはないでしょう。
申し訳ありません
ところで、以下のようなエラーが定期的に発生するのはなぜか、ご存じでしょうか?正常に開いた注文100件に対して、10件ほどあります。
2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: 4051 | order.sl_price: 2.813499706815862e-262 2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: OrderSend error 4051 2021.10.10 16:18:09.853 2021.01.05 21:15:00 test EURUSD,M5: unknown trade cmd 406958564 for OrderSend function
order.sl_price: 2.813499706815862e-262 - ストップループ価格、明らかにこの数値はあってはならないものです。
4051 - "Invalid value of function parameter"
- これは注文の種類ですか?それも問題ないはずです。
チケットや価格で「最小と最大」を意味するのでしょうか?
チケットで
ところで、以下のようなエラーが定期的に発生するのはなぜか、ご存じでしょうか?正常に開いた注文100件に対して、10件ほどあります。
order.sl_price: 2.813499706815862e-262 - ストッププライス、明らかにこの数値はあってはならないものです。
4051 - "Invalid value of function parameter"
- これは注文の種類ですか?こちらも特に問題はないはずです。
"NormalizeDouble " を動かしてみる。
チケットで
"NormalizeDouble " を移動してみる
を変更しました。
MakarはこれまでEAに通貨単位の利益とpips単位の利益を比較するコードを挿入してきましたが、私が理解する限り、これらの関数がゼロ値のときに理解することができます。