Cálculo de beneficios de las órdenes cerradas "AYUDA" - página 6

 
Aleksey Semenov:
Si tienes un terminal lleno de cientos de variables glob sin usar, por ejemplo, entonces sí - el mamparo terminará tristemente, si no, funciona bastante rápido, si se escribe correctamente
puedes construir tu propio registro
 
Aleksey Semenov:
Si, por ejemplo, tu terminal está llena de cientos de variables glob sin usar, entonces sí - el bulkheading será triste, si no, funciona bastante rápido si lo escribes correctamente
No me importa, pero es mejor encontrar formas más fáciles si es posible. ¿O no buscamos caminos fáciles)?
 
Vitaly Muzichenko:
No me importa, pero es mejor encontrar formas más fáciles si es posible. ¿O es que no buscamos caminos fáciles?
lo principal es empezar a escribir uno mismo
 
Vitaly Muzichenko:
No me importa, pero es mejor encontrar formas más fáciles si es posible. ¿O es que no buscamos un camino fácil?
Entonces, dónde está el camino fácil, la pregunta sigue sin respuesta.
 

Todavía no hemos resuelto el problema, aunque es una función necesaria y mucha gente la utiliza y no sabe que el beneficio de las órdenes cerradas no se considera correctamente.
Por eso una solución simple: LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); no funcionará y todo el mundo sigue jodiendo con las órdenes del historial en sus códigos.

No hay una solución competente ni siquiera en toda la red - dice "google". Entonces, ¿resulta que todo el mundo utiliza la solución estándar incorrecta, o la correcta pero sólo el último orden?

 
Natashe4ka:

Todavía no hemos resuelto el problema, aunque es una función necesaria y mucha gente la utiliza y no sabe que el beneficio de las órdenes cerradas no se considera correctamente.
Por eso una solución simple: LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); no funcionará y todo el mundo sigue jodiendo con las órdenes del historial en sus códigos.

No hay una solución competente ni siquiera en toda la red - dice "google". Entonces, ¿resulta que todo el mundo utiliza la solución estándar incorrecta, o la correcta pero sólo el último orden?

Te aconsejamos, no lo conseguiste....
 
Renat Akhtyamov:
Te aconsejamos, no entendiste....

Bien, entonces desglosémoslo: hay una hora de cierre de los pedidos, hay un ticket o número de pedidos que coincide con la hora de cierre. ¿Cómo combinamos y calculamos el beneficio de estos pedidos?
Parece sencillo, pero seguimos sin entenderlo.

 

Cuenta correctamente, pero sólo si se cierran de 1 a 3 órdenes, si son más de 3, entonces se obtiene el beneficio con un valor poco claro.
¿Qué más podemos añadir aquí?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }
 
Natashe4ka:

Cuenta correctamente, pero sólo si se cierran de 1 a 3 órdenes, si son más de 3, entonces se obtiene el beneficio con un valor poco claro.
¿Qué más podemos añadir aquí?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }

¿Alguna vez has intentado preguntarte "por qué y qué está escrito en mi código"?

Ya te he dicho tres veces más arriba qué hacer y cómo hacerlo.

No podrás moverte del punto muerto, de lo contrario no podrás hacerlo.

 
Natashe4ka:

Bien, entonces desglosémoslo: hay una hora de cierre de los pedidos, hay un ticket o número de pedidos que coincide con la hora de cierre. ¿Cómo combinamos y calculamos el beneficio de estos pedidos?
Parece que es fácil, pero sigo sin entenderlo.

¿Guardas todo esto en una variable o en un array? Muéstranos primero dónde lo guardas y luego veremos qué hacer.
Razón de la queja: