Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
No encaja, no hay información para 10 años.
Tampoco es lo mismo para ti.
La variable t cambiará y te quedarás atónito.
Hay que memorizarlo antes de empezar a cerrar la serie
color ProfitColor;
datetime t;
// START //
//t=TimeCurrent();//разместить в блоке сигнала на закрытие серии ордеров
if(LastProfitCL(-1)<0) ProfitColor=Red;
if(LastProfitCL(-1)>0) ProfitColor=LimeGreen;
if(LastProfitCL(-1)==0)ProfitColor=DarkGray;
ObjectCreate("Last Profit", OBJ_LABEL, 0, 0, 0);
ObjectSet("Last Profit", OBJPROP_CORNER, 1);
ObjectSet("Last Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Last Profit", OBJPROP_YDISTANCE, 15);
ObjectSetText("Last Profit",StringConcatenate("Last Profit: ",DoubleToStr(LastProfitCL(-1),2)),10,"Arial",ProfitColor);
// END START //
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
double LastProfit=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 (OrderType()!= op || OrderSymbol()!= Symbol() || OrderMagicNumber()!= magic) continue;
if (op<0 || OrderType()==op)
{
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
return(LastProfit);
}
Tampoco es lo mismo para ti.
La variable t cambiará y te quedarás atónito.
Hay que memorizarlo antes de que se cierre la serie.
¿Lo has probado?
Se memoriza antes del cierre, en el momento de la señal de cierre.
No es adecuado, no hay información para 10 años.
Beneficio actual, , todo el historial.
Por cierto, se puede ajustar a cualquier fecha y hora.
Prueba con
return(LastProfit);Comment( LastProfitCL(-1, 0) );
//+----------------------------------------------------------------------------+
//| Возвращает суммарный профит в валюте депозита серии закрытых ордеров |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1, datetime t=0){ //"op" позиция (-1 любая позиция)
double LastProfit=0;
for(int i=OrdersHistoryTotal()-1;i>=0;i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if((op<0||OrderType()==op) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
if(t<=OrderCloseTime()) {
t=OrderCloseTime();
LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}
}
El beneficio recuerda cada nuevo, pero entonces algo cuenta desconocido. En la captura de pantalla #3 debería ser 4, no 190
¿Lo has probado?
Recuerda antes de cerrar, en el momento en que se recibe la señal de cierre
Eso, también, 190
El beneficio recuerda cada nuevo, pero entonces algo cuenta desconocido. En la pantalla #3 debería ser 4, no 190
Este es el código, a mí me funciona bien, pero quizás porque la serie está cerrada correctamente
Así que también 190
¿Dónde se encuentra el comando para cerrar las órdenes?
¿Escribiste la variable t ahí?
¿Dónde se encuentra el comando para cerrar las órdenes?
¿Has escrito la variable t ahí?
t=TimeCurrent();//colocar en el bloque de señales para cerrar una serie de órdenesTodo está ahí, por supuesto.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
Todo está ahí, por supuesto.
t=OrderCloseTime();
if(OrderCloseTime()>=t)LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();
No, esta línea se elimina. Esto ya es un cálculo de beneficios, no funcionará así.
Donde el comando para cerrar en el código - allí, pero no una línea de este tipo
Lea arriba.