Чтобы определить, из какого списка выбран ордер, необходимо проанализировать его время закрытия. Если время закрытия ордера равно 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);
}
Hola. Por favor, ayúdenme a calcular el beneficio de las operaciones cerradas ayer, anteayer, etc. Quiero hacer Beneficio para hoy:. Beneficio para ayer, beneficio para anteayer
He copiado el código/ para el cálculo de beneficios de hoy.
o cómo establecer el beneficio de hoy para posponer este valor al beneficio de ayer y luego al beneficio del día anterior
Hola. Por favor, ayúdenme a calcular el beneficio de las operaciones cerradas ayer, anteayer, etc. Quiero hacer Beneficio para hoy:. Beneficio para ayer, beneficio para anteayer
Para calcular el beneficio de hoy, copie el código/.
o cómo hacer que el valor de la ganancia de hoy se mueva hacia abajo a la ganancia de ayer, y luego a la ganancia de antes de ayer
Añade un parámetro más a la descripción de la función y cambia la condición de comprobación:
double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dtstart, datetime dtstop)
....
if (OrderCloseTime()>=dtstart && dtstop<=OrderCloseTime()) {
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Es posible leer un ticket de pedido.
¿Existe una función similar
OrderGetTicket();¿para mql4?
¿Existe una función similar
¿para mql4?
Lo hay, sólo que no es exactamente lo mismo. Después de seleccionar una orden hay que definir el tipo de orden y el ticket mediante otras funciones.
Buenas tardes.
Hay una función para abrir una parrilla de órdenes con el lote incrementado por i,
Necesito que la red (lotes) se construya por lotes, es decir, lote1 = 0,01, lote2 = 0,02, lote3 = lote2 + lote 1. ,
¿cómo debería describirse esto en la función fLots()?
Quiero comprobar si hay posiciones abiertas en onInit, pero por alguna razón no puedo seleccionarlas:
Lo entiendo:
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) Posición total = 1
Quiero comprobar si hay posiciones abiertas en onInit, pero por alguna razón no puedo seleccionarlas:
Lo entiendo:
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) Posición total = 1
Enseguida me llama la atención:
No busqué más porque debería ser así en un ciclo inverso:
Inmediatamente me llamó la atención:
No busqué más, porque así debe ser en el ciclo inverso:
Prefiero esta notación
Prefiero esta entrada
Bueno... He mostrado uno comprensible para los principiantes ;)
Hola. Por favor, ayúdenme a calcular el beneficio de las operaciones cerradas ayer, anteayer, etc. Quiero hacer Beneficio para hoy:. Beneficio para ayer, beneficio para anteayer
He copiado el código/ para el cálculo de beneficios de hoy.
o cómo establecer el beneficio de hoy para posponer este valor al beneficio de ayer y luego al beneficio del día anteriorHola. Por favor, ayúdenme a calcular el beneficio de las operaciones cerradas ayer, anteayer, etc. Quiero hacer Beneficio para hoy:. Beneficio para ayer, beneficio para anteayer
Para calcular el beneficio de hoy, copie el código/.
o cómo hacer que el valor de la ganancia de hoy se mueva hacia abajo a la ganancia de ayer, y luego a la ganancia de antes de ayerAñade un parámetro más a la descripción de la función y cambia la condición de comprobación: