Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 672
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Estou a escrever uma EA que funciona numa base de martingale.
Como posso conseguir que feche todas as encomendas que abriu quando se atinge a perda máxima permitida em pips de um par de moedas?
Estou a escrever uma EA que funciona numa base de martingale.
Como posso conseguir que feche todas as encomendas que abriu quando se atinge a perda máxima permitida em pips de um par de moedas?
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);
}
a função devolve lucros em posições abertas, pode ser filtrada por símbolo, tipo, magik
Depois fecha todas as posições
{
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);
}
}
}
}
}
...
função devolve lucros em poses de outubro, pode ser filtrado por símbolo, tipo, magik
Depois fechar todas as posições
Dei-vos o acima exposto,
Portanto, o lucro é um termo genérico.
-20 é -20
if(GetProfitinCurrency(Símbolo(),-1,-1)<-20)CPD(Símbolo(),-1,-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);
}
Obrigado, agora compreendo.
O que ainda não está claro no código é:(order_type<0||OrderType()==order_type) ESTE pode ser lido como "e encomendar para vender ou comprar"?
simtipo_de_ordem= OP_BUY OP_SELL -1
O compilador também se queixa doClosePosBySelect.
Esta função precisa de ser escrita separadamente?
Vladislav Andruschenko
RichLux:
O compilador também se queixa doClosePosBySelect.
Esta função precisa de ser escrita separadamente?
{
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);
}
}
}
}
}