Preço real de execução da operação

 

Estou com um problema que é o seguinte. Quando executo a ordem a mercado, logo após o sucesso da operação eu obtenho o preço da seguinte forma:


preco_venda = mrequest.price;

Se por acaso vier zerado, eu faço o looping pegando o ultimo deal.


if (preco_venda==0)

{

if (HistorySelect(0, TimeCurrent()) && (HistoryDealsTotal() > 0))

                                      {

            preco_venda = HistoryDealGetDouble(HistoryDealGetTicket(HistoryDealsTotal() - 1), DEAL_PRICE); 

                                        }

}


A questão que o preço que vem, nem sempre é o oficial executado. Quando não há muita volatilidade, ok vem certo, porém quando é muito forte a variação, no caso do indice, acaba vindo um preço diferente em torno de 5 a 25 pontos, chegando a dar 50 em alguns casos.


O problema é que uso essa referencia para montar o loss e o gain, e como é scalper, essa diferença pode até matar o lucro.


Há alguma outra forma de obter o preço real de execução??


Obrigado!

Razão: