Preciso ajuda para obter o resultado da última operação realizada pelo robô, trabalhando de forma simultânea em tempos gráficos diferentes do mesmo ativo (mini índice), utilizando a propriedade “POSITION_MAGIC” e com stop loss e take profit pre-definidos. Preciso verificar se o trade foi finalizado (pode haver ordem aberta em outro robô), executada de forma completa ou parcial. Após o fim de cada operação preciso obter o resultado dessa operação (lucro/prejuízo), mais não estou conseguindo identificar que terminou nem o resultado.
bool enviar_compra()
{
double price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
double tp = 150;
double sl = 100;
double entrada = 3;
return trade.Buy(entrada ,_Symbol,price,sl,tp,"Ordem de compra");
}
bool enviar_venda()
{
double price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
double tp = 150;
double sl = 100;
double entrada = 3;
return trade.Sell(entrada,_Symbol,price,sl,tp,"Ordem de venda");
}
double RetornaResultado()
{
if(PositionsTotal() == 0)
{
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
PositionSelectByTicket(ticket);
double result = HistoryDealGetDouble(ticket, DEAL_PROFIT);
if(PositionGetInteger(POSITION_MAGIC) == m_magic && PositionGetString(POSITION_SYMBOL) == _Symbol && result != 0)
{
Print("Ticket = ", ticket, " >> Resultado = ", result);
return result;
}
}
}
return 0;
}
Isso so serve para saber que uma operação esta aberta em um robo e com um determinado resultado. Além disso, ha uma confusão já que esta usando funções do histórico junto das posições em aberto. Veja o exemplo que tem na documentação da função HistorySelect e se tiver dúvida comenta aqui.

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Preciso ajuda para obter o resultado da última operação realizada pelo robô, trabalhando de forma simultânea em tempos gráficos diferentes do mesmo ativo (mini índice), utilizando a propriedade “POSITION_MAGIC” e com stop loss e take profit pre-definidos. Preciso verificar se o trade foi finalizado (pode haver ordem aberta em outro robô), executada de forma completa ou parcial. Após o fim de cada operação preciso obter o resultado dessa operação (lucro/prejuízo), mais não estou conseguindo identificar que terminou nem o resultado.
bool enviar_compra()
{
double price = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
double tp = 150;
double sl = 100;
double entrada = 3;
return trade.Buy(entrada ,_Symbol,price,sl,tp,"Ordem de compra");
}
bool enviar_venda()
{
double price = SymbolInfoDouble(_Symbol,SYMBOL_BID);
double tp = 150;
double sl = 100;
double entrada = 3;
return trade.Sell(entrada,_Symbol,price,sl,tp,"Ordem de venda");
}
double RetornaResultado()
{
if(PositionsTotal() == 0)
{
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
PositionSelectByTicket(ticket);
double result = HistoryDealGetDouble(ticket, DEAL_PROFIT);
if(PositionGetInteger(POSITION_MAGIC) == m_magic && PositionGetString(POSITION_SYMBOL) == _Symbol && result != 0)
{
Print("Ticket = ", ticket, " >> Resultado = ", result);
return result;
}
}
}
return 0;
}