@kmedina27
eu também sou cliente XP aqui no Brasil e este problema está acontecendo comigo também somente na conta real. Na conta demo está funcionando normalmente. Já li alguns posts seus e você é daqui do Brasil também, correto? Poderia me informar o que pode está acontecendo com o meu código? O servidor da XP chega a aceitar minha ordem, conforme mensagens da captura de tela que anexei na imagem abaixo. Mas me parece que o OMS cancela minha ordem pendente em milésimos de segundo. Agradeço se me der uma caminho. Amanhã estarei entrando em contato com eles para saber se há algum bloqueio semelhante ao amigo acima da CLEAR.
double volume=Lots;
string symbol=_Symbol; // specify the symbol, at which the order is placed
double point=SymbolInfoDouble(symbol,SYMBOL_POINT); // point
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK); // current buy price
double bid=SymbolInfoDouble(symbol,SYMBOL_BID); // current sell price
double price_buy=bid; // preço de compra não normalizado
double price_sell=ask; // preço de venda não normalizado
price_buy=NormalizeDouble(price_buy,2); // normalizing open price
price_sell=NormalizeDouble(price_sell,2); // normalizing open price
double SL_BuyLimit=price_buy-SL+point; // Stop Loss não normalizado das ordens BuyLimit
double SL_SellLimit=price_sell+SL*point; // Stop Loss não normalizado das ordens SellLimit
SL_BuyLimit=NormalizeDouble(SL_BuyLimit,2); // Stop Loss normalizado das ordens BuyLimit
SL_SellLimit=NormalizeDouble(SL_SellLimit,2); // Stop Loss normalizado das ordens SellLimit
double TP_BuyLimit=price_buy+TP*point; // Stop Loss não normalizado das ordens BuyLimit
double TP_SellLimit=price_sell-TP*point; // Stop Loss não normalizado das ordens SellLimit
TP_BuyLimit=NormalizeDouble(TP_BuyLimit,2); // Stop Loss normalizado das ordens BuyLimit
TP_SellLimit=NormalizeDouble(TP_SellLimit,2); // Stop Loss normalizado das ordens SellLimit
datetime expiration=TimeTradeServer()+PeriodSeconds(PERIOD_D1);
string comment_buy=StringFormat("Buy Limit %s, lote de %d ações a %f, SL=%f TP=%f",
symbol,volume,
DoubleToString(price_buy,2),
DoubleToString(SL_BuyLimit,2),
DoubleToString(TP_BuyLimit,2));
string comment_sell=StringFormat("Sell Limit %s, lote de %d ações a %f, SL=%f TP=%f",
symbol,volume,
DoubleToString(price_sell,2),
DoubleToString(SL_SellLimit,2),
DoubleToString(TP_SellLimit,2));
//--- Todas as variaveis prontas, enviando ordens pendentes de BuyLimit e SellLimit ao servidor
if(!Trade.BuyLimit(volume,price_buy,symbol,SL_BuyLimit,TP_BuyLimit,ORDER_TIME_GTC,expiration,comment_buy))
{
//--- Mensagem caso a ordem BuyLimit falhe
Print("BuyLimit() method failed. Return code=",Trade.ResultRetcode(),
". Descrição do código: ",Trade.ResultRetcodeDescription());
}
else
{
//--- Mensagem caso a ordem seja executada com sucesso
Print("BuyLimit() method executed successfully. Return code=",Trade.ResultRetcode(),
" (",Trade.ResultRetcodeDescription(),") and Ticket order=", Trade.ResultOrder());
buylimit_order=Trade.ResultOrder();
}
if(!Trade.SellLimit(volume,price_sell,symbol,SL_SellLimit,TP_SellLimit,ORDER_TIME_GTC,expiration,comment_buy))
{
//--- Mensagem caso a ordem BuyLimit falhe
Print("SellLimit() method failed. Return code=",Trade.ResultRetcode(),
". Descrição do código: ",Trade.ResultRetcodeDescription());
}
else
{
Print("SellLimit() method executed successfully. Return code=",Trade.ResultRetcode(),
" (",Trade.ResultRetcodeDescription(),") and Ticket order=", Trade.ResultOrder());
selllimit_order=Trade.ResultOrder();
}