Olá Cristiano. Primeiramente, quando for postar algum código utilize a função "código" quando estiver digitando seu post (Alt+S). Isso deixa o post mais organizado e impede que o mesmo seja excluído por um moderador.
Com respeito a sua pergunta por que não utiliza a biblioteca padrão do MT, como a "Trade.mqh"?
Com respeito a sua pergunta por que não utiliza a biblioteca padrão do MT, como a "Trade.mqh"?
Obrigado pela dica, quando à postagem de código. Sou novo aqui. Sou novo também na linguagem e não conheço essa biblioteca.
Cristiano Santos:
Obrigado pela dica, quando à postagem de código. Sou novo aqui. Sou novo também na linguagem e não conheço essa biblioteca.
Obrigado pela dica, quando à postagem de código. Sou novo aqui. Sou novo também na linguagem e não conheço essa biblioteca.
Alguns moderadores sequer te informam e já apagam seu post, por isso avisei :)
Você pode utilizar a bilioteca padrão Trade, ela facilita o gerenciamento das operações. Por exemplo, você pode abrir uma operação com uma linha de código em vez de programar muitas coisas que você fez no seu código.
Essa é a página da biblioteca: https://www.mql5.com/pt/docs/standardlibrary/tradeclasses/ctrade
Agradeço a colaboração. Consegui resolver mudando os tipos de ordem para Buy_Limit e Sell_Limit, visto que o preço da minha ordem sempre está acima do mercado para venda e abaixo do mercado para compra. Nas ordens do tipo Stop_Limit é ao contrário, o nível de stop tem que está abaixo do mercado(Bid) para venda e acima do mercado(Ask) para compra, caso contrário dá erro e nem é executada.
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
Olá estou com um problema ao enviar uma ordem do tipo Stop_Limit com mini Índice. Quando envio com SL e TP configurados dá erro "Invalid Stops" e quando deixo sem dá o erro: "No money";
Segue um pedaço do código para análise:
MqlTradeRequest requisicao= {0}; // requisição
MqlTradeResult resposta= {0}; // resposta
ZeroMemory(requisicao);
ZeroMemory(resposta);
if(posAberta())
{
Alert("Não será possível realizar a compra.Existe uma posição em aberto.");
return;
}
requisicao.action = TRADE_ACTION_PENDING; // Executa ordem a mercado
requisicao.magic = magic_number; // Nº mágico da ordem
requisicao.symbol = _Symbol; // Simbolo do ativo
requisicao.volume = Qt_Contratos; // Nº de Lotes
requisicao.price = m_symbol.NormalizePrice(tick.ask - CompraDiminuirValor * _Point);
requisicao.sl = 0;//m_symbol.NormalizePrice(tick.ask - CompraStopLoss * _Point);
requisicao.tp = 0;//m_symbol.NormalizePrice(tick.ask + CompraTakeProft * _Point);
requisicao.deviation = 0; // Desvio Permitido do preço
requisicao.type = ORDER_TYPE_BUY_STOP_LIMIT; // Tipo da Ordem
requisicao.type_filling = ORDER_FILLING_RETURN;//ORDER_FILLING_FOK;
requisicao.type_time = ORDER_TIME_DAY;
requisicao.stoplimit = m_symbol.NormalizePrice(tick.ask+DesvioStopLimiteCompra * _Point);
if(OrderSend(requisicao,resposta))
{
if(resposta.retcode==10008 || resposta.retcode==10009)
{
Print("Ordem de Compra executada com sucesso!");
}
else
{
Print("Erro ao enviar Ordem Compra. Erro = ",GetLastError());
ResetLastError();
}
}
else
{
Print("Erro = ",GetLastError());
ResetLastError();
}
desde já agradeço a atenção.