ERRO 4756 - INVALID PRICE
Ja tentei de tudo, por favor, preciso muito da ajuda de voces!! alguem pode me dar uma luz???
E retorna o :
2019.08.05 13:42:51.236 Core 1 2019.08.02 12:48:27 failed instant sell 500.00 GBPJPY at 0.000 [Invalid price]
2019.08.05 13:42:51.236 Core 1 2019.08.02 12:48:27 Erro ao enviar Ordem Venda. Erro = 4756
Pela mensagem de erro, tudo indica que a variável "tick.ask" deve estar valendo zero.
Você não está mostrando a parte do código onde a estrutura "tick" está sendo declarada e preenchida.
Suponho que "tick" tenha sido declarada como variável global, senão o código não compilaria.
Variáveis globais são inicializadas automaticamente com zero.
Será que vc está realmente preenchendo os campos da estrutura "tick" ?
Bom dia Rodrigo,
Forex também exige que o SL/TP obedeça ao stop (gain/loss) mínimo do instrumento, veja a especificação do instrumento.
stopLevel =SymbolInfoInteger(_Symbol,SYMBOL_TRADES_STOPS_LEVEL); double SSL=(SL > stopLevel) ? SL*_Point : stopLevel*_Point; double TTP=(TK > stopLevel) ? TK*_Point : stopLevel*_Point; requisicao.sl = NormalizeDouble(requisicao.price + SSL,_Digits);// Preço Stop Loss requisicao.tp = NormalizeDouble(requisicao.price - TTP,_Digits);// Alvo de Ganho - Take Profitps
PS: A saber, eu frisei FOREX porque não é comum ter stop level em BOLSA, mas o correto é codificar SL/TP como mostrado, assim o programa fica apto para BOLSAS e FOREX.
Pela mensagem de erro, tudo indica que a variável "tick.ask" deve estar valendo zero.
Você não está mostrando a parte do código onde a estrutura "tick" está sendo declarada e preenchida.
Suponho que "tick" tenha sido declarada como variável global, senão o código não compilaria.
Variáveis globais são inicializadas automaticamente com zero.
Será que vc está realmente preenchendo os campos da estrutura "tick" ?
Vlwww Patinhas, mas o tick esta certinho quando dou print nele, parece não ser isto não..
Bom dia Rodrigo,
Forex também exige que o SL/TP obedeça ao stop (gain/loss) mínimo do instrumento, veja a especificação do instrumento.
PS: A saber, eu frisei FOREX porque não é comum ter stop level em BOLSA, mas o correto é codificar SL/TP como mostrado, assim o programa fica apto para BOLSAS e FOREX.
Oi Rogério, eu verifiquei aqui nas especificações do forex e ele n mostra limite minimo de SL e TP, mas mesmo assim defini valores bem altos para verificar se era isto, e também não funcionou...
Vou testar usando o CTRADE para ver se resolve..
Vlwww Patinhas, mas o tick esta certinho quando dou print nele, parece não ser isto não..
A sua mensagem de erro diz "failed instant sell 500.00 GBPJPY at 0.000 [Invalid price]".
Ou seja, vc está tentando vender a preço 0.000 (não é erro de SL nem de TP, a mensagem costuma ser diferente quando o preço está ok e SL ou TP é que estão errados).
O preço de venda está sendo preenchido no campo "price" da estrutura "requisicao".
Recomendo fortemente vc, antes do comando OrderSend(), imprimir "requisição.price" para ver o que está sendo enviado.
Se o valor enviado em "requisição.price" for realmente zero, mande imprimir "NormalizeDouble(tick.ask,_Digits)" e " tick.ask".
Recomendo imprimir imediatamente antes do OrderSend(), para garantir que vc está vendo os valores que realmente estão sendo enviados.
Se não for isso, não tenho a menor ideia do que possa ser.
Em tempo: como não vi seu código completo, verifique também se há possibilidade de essa mensagem de erro estar vindo de outro trecho do seu código, que não seja esse trecho que vc mostrou (nesse caso estaremos procurando o erro no lugar errado). Vc envia OrderSend() em algum outro lugar do código?A sua mensagem de erro diz "failed instant sell 500.00 GBPJPY at 0.000 [Invalid price]".
Ou seja, vc está tentando vender a preço 0.000 (não é erro de SL nem de TP, a mensagem costuma ser diferente quando o preço está ok e SL ou TP é que estão errados).
O preço de venda está sendo preenchido no campo "price" da estrutura "requisicao".
Recomendo fortemente vc, antes do comando OrderSend(), imprimir "requisição.price" para ver o que está sendo enviado.
Se o valor enviado em "requisição.price" for realmente zero, mande imprimir "NormalizeDouble(tick.ask,_Digits)" e " tick.ask".
Recomendo imprimir imediatamente antes do OrderSend(), para garantir que vc está vendo os valores que realmente estão sendo enviados.
Se não for isso, não tenho a menor ideia do que possa ser.
Em tempo: como não vi seu código completo, verifique também se há possibilidade de essa mensagem de erro estar vindo de outro trecho do seu código, que não seja esse trecho que vc mostrou (nesse caso estaremos procurando o erro no lugar errado). Vc envia OrderSend() em algum outro lugar do código?Depois que li a postagem do Patinhas, vi que ele observou bem que no modo de execução INSTANTE o preço é obrigatório! No modo execução a MERCADO o preço pode ser zero, confirmei fazendo um teste na FBS.
Outra questão veio a mente é o valor 0.00 em tick.ask, você colocou a chamada a essa rotina dentro do OnTick() e fez o teste: if(!SymbolInfoTick(_Symbol,tick)) return;
Só para confirmar, qual é a corretora que você opera?
Aproveitei e corrigi minha postagem sobre o stops mínimos.
Abaixo a especificação do EURUSD na FBS com a indicação dos campos StopLevel e ExecutionMode
Ja tentei de tudo, por favor, preciso muito da ajuda de voces!! alguem pode me dar uma luz???
E retorna o :
2019.08.05 13:42:51.236 Core 1 2019.08.02 12:48:27 failed instant sell 500.00 GBPJPY at 0.000 [Invalid price]
2019.08.05 13:42:51.236 Core 1 2019.08.02 12:48:27 Erro ao enviar Ordem Venda. Erro = 4756
Olá,
Pode parecer básico, mas passei pelo mesmo problema quando esqueci de alimentar a variável ticks...
// Alimentar com dados variável de tick SymbolInfoTick(_Symbol,tick);

- 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
Ja tentei de tudo, por favor, preciso muito da ajuda de voces!! alguem pode me dar uma luz???
E retorna o :
2019.08.05 13:42:51.236 Core 1 2019.08.02 12:48:27 failed instant sell 500.00 GBPJPY at 0.000 [Invalid price]
2019.08.05 13:42:51.236 Core 1 2019.08.02 12:48:27 Erro ao enviar Ordem Venda. Erro = 4756