Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 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();
for mql4?
是否有类似的功能
for mql4?
有的,只是不完全一样。选择一个订单后,你必须通过其他功能定义订单类型 和票据。
下午好。
有一个函数可以打开一个以i为增量的订单网格。
我需要按地段建立网格(地段),即地段1=0.01,地段2=0.02,地段3=地段2+地段1。
在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
它马上就吸引了我的目光。
我没有进一步看,因为在逆向循环中应该是这样的。
这立即引起了我的注意。
我没有再看下去,因为在逆向循环中应该是这样的。
我更喜欢这种记法
我更喜欢这个条目
嗯...我为初学者展示了一个可以理解的;)
你好。请帮助我计算昨天、前天等已关闭交易的利润。 我想做的是今天的利润:。 昨天的利润,前天的利润。
我复制了代码/用于今天的利润计算。
或者如何设置今天的利润,将这个值推迟到昨天的利润,然后再推迟到前一天的利润你好。请帮助我计算昨天、前天等已关闭交易的利润。 我想做的是今天的利润:。 昨天的利润,前天的利润。
要计算今天的利润,复制代码/。
或如何使价值从今天的利润走低到昨天的利润,然后到前天的利润在函数描述中增加一个参数,并改变检查条件。