Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 672 1...665666667668669670671672673674675676677678679...1503 Nuevo comentario Alexandr Vetrov 2016.11.15 12:38 #6711 fxsaber:¡¡¡Gracias!!! RichLux 2016.11.15 18:25 #6712 Estoy escribiendo un EA que funciona en base a la martingala.¿Cómo puedo conseguir que cierre todas las órdenes que ha abierto cuando se alcanza la pérdida máxima permitida en pips en un par de divisas? Funciones útiles de KimIV [¡AVISO CERRADO!] Cualquier pregunta [¡Archivo!] Cualquier pregunta de Vladislav Andruschenko 2016.11.15 18:34 #6713 RichLux: Estoy escribiendo un EA que funciona en base a la martingala.¿Cómo puedo conseguir que cierre todas las órdenes que ha abierto cuando se alcanza la pérdida máxima permitida en pips en un par de divisas?double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1) { double profit=0; int i,k=OrdersTotal(); if(order_symbol=="0") order_symbol=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type)) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(order_magic<0 || OrderMagicNumber()==order_magic) { profit+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } } return(profit); }la función devuelve los beneficios en posiciones abiertas, se puede filtrar por símbolo, tipo, magikLuego se cierran todas las posicionesvoid CPD(string order_symbol="",int order_type=-1,int order_magic=-1) { int i,k=OrdersTotal(); if(order_symbol=="0") order_symbol=Symbol(); for(i=k-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type)) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN); } } } } } Questions from Beginners MQL5 Ayuda a la codificación Herramientas 'Cerrar todo'/'Abrir' RichLux 2016.11.15 20:18 #6714 Vladislav Andruschenko: ...la función devuelve los beneficios en poses de octubre, se puede filtrar por símbolo, tipo, magikA continuación, cierre todas las posiciones Gracias, pero estoy interesado en cerrar la pérdida. ¿Cómo se puede poner en práctica? Vladislav Andruschenko 2016.11.15 20:31 #6715 Quiero decir, te he dado lo anterior,Así que el beneficio es un término genérico.-20 es -20 if(GetProfitinCurrency(Symbol(),-1,-1)<-20)CPD(Symbol(),-1,-1) RichLux 2016.11.15 20:59 #6716 Vladislav Andruschenko: double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1) { double profit=0; int i,k=OrdersTotal(); if(order_symbol=="0") order_symbol=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type)) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(order_magic<0 || OrderMagicNumber()==order_magic) { profit+=OrderProfit()+OrderCommission()+OrderSwap(); } } } } } return(profit); }Gracias, ahora lo entiendo.Lo que todavía no está claro en el código es:(order_type<0||OrderType()==order_type) ¿Esto puede leerse como "y orden de venta o compra"? Vladislav Andruschenko 2016.11.15 21:01 #6717 RichLux: síorder_type= OP_BUY OP_SELL -1 RichLux 2016.11.15 21:53 #6718 El compilador también se queja deClosePosBySelect.¿Es necesario escribir esta función por separado? Vladimir Karputov 2016.11.16 13:16 #6719 Los comentarios que no son relevantes para este tema se han trasladado a "Poner la hora actual en el gráfico". Vladimir Karputov 2016.11.16 13:20 #6720 Vladislav AndruschenkoRichLux:El compilador también se queja deClosePosBySelect.¿Es necesario escribir esta función por separado?void CPD(string order_symbol="",int order_type=-1,int order_magic=-1) { int i,k=OrdersTotal(); if(order_symbol=="0") order_symbol=Symbol(); for(i=k-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type)) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN); } } } } } 1...665666667668669670671672673674675676677678679...1503 Nuevo comentario
Estoy escribiendo un EA que funciona en base a la martingala.
¿Cómo puedo conseguir que cierre todas las órdenes que ha abierto cuando se alcanza la pérdida máxima permitida en pips en un par de divisas?
Estoy escribiendo un EA que funciona en base a la martingala.
¿Cómo puedo conseguir que cierre todas las órdenes que ha abierto cuando se alcanza la pérdida máxima permitida en pips en un par de divisas?
double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1)
{
double profit=0;
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic)
{
profit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(profit);
}
la función devuelve los beneficios en posiciones abiertas, se puede filtrar por símbolo, tipo, magik
Luego se cierran todas las posiciones
{
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
}
}
}
}
}
...
la función devuelve los beneficios en poses de octubre, se puede filtrar por símbolo, tipo, magik
A continuación, cierre todas las posiciones
Quiero decir, te he dado lo anterior,
Así que el beneficio es un término genérico.
-20 es -20
if(GetProfitinCurrency(Symbol(),-1,-1)<-20)CPD(Symbol(),-1,-1)
double GetProfitinCurrency(string order_symbol="",int order_type=-1,int order_magic=-1)
{
double profit=0;
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=0; i<k; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic)
{
profit+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
return(profit);
}
Gracias, ahora lo entiendo.
Lo que todavía no está claro en el código es:(order_type<0||OrderType()==order_type) ¿Esto puede leerse como "y orden de venta o compra"?
síorder_type= OP_BUY OP_SELL -1
El compilador también se queja deClosePosBySelect.
¿Es necesario escribir esta función por separado?
Vladislav Andruschenko
RichLux:
El compilador también se queja deClosePosBySelect.
¿Es necesario escribir esta función por separado?
{
int i,k=OrdersTotal();
if(order_symbol=="0") order_symbol=Symbol();
for(i=k-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if((OrderSymbol()==order_symbol || order_symbol=="") && (order_type<0 || OrderType()==order_type))
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(order_magic<0 || OrderMagicNumber()==order_magic) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1,CLR_GREEN);
}
}
}
}
}