Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 0, то ордер является открытым или отложенным и взят из списка открытых ордеров терминала. Отличить открытый ордер от отложенного ордера можно по типу ордера. Если время закрытия ордера не равно 0, то ордер является...
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0)
{
double p=0;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
// код Кима изменил на это и теперь от считает профит за сегодня и обнуляется в полночьdouble GetProfitFromDateInCurrency1(string sy="0", int op=-1, int mn=-1)
{
double p=0;
int i, k=OrdersHistoryTotal();
datetime dt=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE));
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
オーダーチケットの 読み取りが可能です。
同様の機能はありますか
OrderGetTicket();mql4用?
同様の機能はありますか
mql4用?
ありますよ、ただ、まったく同じではないんです。注文を選択した後、他の機能で注文の種類と チケットを定義する必要があります。
こんにちは。
ロットを i 単位で増加させた注文のグリッドを開く機能があります。
例えば、lot1 = 0.01, lot2 = 0.02, lot3 = lot2 + lot1 ... というように、グリッド(ロット)をロット単位で構築する必要があるのです。
fLots()関数にどのように記述すればよいのでしょうか?
onInitでオープンポジションが あるかどうかを確認したいのですが、なぜか選択できません。
得ることができます。
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) ticket(1) = 0
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) false
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) Position Total = 1
onInitでオープンポジションが あるかどうかを確認したいのですが、なぜか選択できません。
得ることができます。
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) ticket(1) = 0
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) false
2019.05.01 00:11:32.177 breakeven (GBPUSD,H1) Position Total = 1
すぐに目に飛び込んでくる。
逆回転でこうなるはずなので、それ以上は見ていません。
すぐにそれが目に留まりました。
逆回転ではそうなるはずだから、それ以上は見ていない。
私はこの表記が好きです
私はこのエントリーが好きです。
まあ...初心者のためにわかりやすいものを示しました ;)
こんにちは。昨日、一昨日などのクローズしたトレードの利益を計算するのを手伝ってください。 今日の利益:.昨日の利益, 一昨日の利益
今日の利益計算のためのコード/をコピーしてみました。
あるいは、今日の利益を設定し、この値を昨日の利益、そしてその前日の利益に延期する方法です。こんにちは。昨日、一昨日などのクローズしたトレードの利益を計算するのを手伝ってください。 今日の利益:.昨日の利益, 一昨日の利益
今日の利益を計算するために、code/をコピーします。
あるいは、今日の利益から昨日の利益へ、そして一昨日の利益へと値を下げていく方法。関数の説明にパラメータを1つ追加し、チェック条件を変更する。