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
Mas então a OrderModify falha.
O código abaixo é executado após o código acima do último post.
O Log ist:
#ESZ1,M5: Posição de Abertura
#ESZ1,M5: valor do tick: 12.50000000
#ESZ1,M5: tamanho pos: 1.00000000
#ESZ1,M5: Pergunte/ Lance 1242.00000000/1241.75000000
#ESZ1,M5: Espalhamento 0,25000000
#ESZ1,M5: abrir #13679252 comprar 1,00 #ESZ1 a 1242,00 ok
#ESZ1,M5: Ordem 13679252 Aberta com sucesso
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
#ESZ1,M5: erro=130
Assim, mesmo a primeira abertura e depois a colocação de stoploss parece não funcionar :-/
O spread é de 0,25
#ESZ1,M5: Espalhamento 0,25000000
OK, você abre uma COMPRA em . . 1242,00 (Pergunte)
#ESZ1,M5: abrir #13679252 comprar 1,00 #ESZ1 a 1242,00 ok
#ESZ1,M5: Ordem 13679252 Aberta com sucesso
Então você tenta modificar com um TP ao preço de Licitação + 2 * Spread e SL ao preço de Licitação Preço de Licitação - 2 * Spread
#ESZ1,M5: SL: 1241.25000000
#ESZ1,M5: TP: 1242.25000000
Se seu FreezeLevel é 0,50 então esse é seu problema . . qual é seu FreezeLevel ?
mesmo problema. A ordem abre bem com stoploss = 0 e takeprofit = 0.
Mas depois a OrderModify falha.
Não se ajustando para corretores de 4/5 dígitos. Não abrindo primeiro e depois ajustando paradas.
Como respondido anteriormente
sim você provavelmente está negociando com um corretor ECN você tem que abrir ordens com zero paradas e depois modificar a ordem depois que ela é aberta para que haja um problema com 50 pips SL e TP, então faça como o Raptor disse verificar o freezelevel e o stoplevel também no caso de
Verifique também seu código OrderModify() .... talvez funcione assim, mas eu acho que você deve selecionar o pedido usando OrderSelect() antes de poder fazer OrderOpenPrice()
Infelizmente #130 ainda me assombra à noite ;)
Aqui está minha próxima tentativa:
Como você pode ver, simplifiquei o exemplo, não utilizando o takeprofit. O erro ocorre definitivamente por causa da perda de estoque, portanto não precisamos de takeprofit.
Eu primeiro abro o pedido com 0 stoploss (e takeprofit) e depois tento definir o stoploss usando OrderModify.
Antes disso, chequei Mode_Stoplevel e Mode_Freezelevel e ajustei o stoploss, se necessário. (Um ajuste ocorre abaixo no log, porque o stoploss é inicialmente 50, mas Mode_Stoplevel é 75, eu então defino stoploss para Mode_Stoplevel + 1, portanto 76)
RaptorUK e SDC:
MarketInfo(MODE_FREEZELEVEL) retorna 0. Eu não acho que Freezelevel seja o problema.
Incluí a saída no arquivo de log.
SDC:
Também inseri uma OrderSelect, antes de ligar para OrderOpenPrice só para ter certeza. No log você pode ver que OrderSelect funcionou, caso contrário o código não teria prosseguido tão longe (saída -1).
WHRoeder:
Eu segui o exemplo simples da SDC. Mas agora eu o ampliei usando os pips 4/5 dígitos ao ajustar o stoploss, como você pode ver acima. Você também pode ver que a ordem é aberta primeiro com stoploss e takeprofit ajustado a zero e depois stoploss é ajustado com OrderModify. Como você pode ver no log abaixo com S/L e T/P ajustados a zero, o pedido abre com sucesso, mas ainda não consigo ajustar o S/L na próxima etapa com OrderModify.
Aqui está o log completo:
Estou muito grato por sua ajuda contínua e acho que estamos diminuindo o problema :)
Então, qual mais poderia ser o problema? Mais alguma coisa que eu poderia tentar?
shinobi
O spread é de 0,25
#ESZ1,M5: Espalhamento 0,25000000
OK, você abre uma COMPRA em . . 1242,00 (Pergunte)
#ESZ1,M5: abrir #13679252 comprar 1,00 #ESZ1 a 1242,00 ok
#ESZ1,M5: Ordem 13679252 Aberta com sucesso
Então você tenta modificar com um TP ao preço de Licitação + 2 * Spread e SL ao preço de Licitação Preço de Licitação - 2 * Spread
Seu STOP_LEVEL 3 * Spread ? sua parada está muito perto . . .
Sim, é por isso que eu verifico o rochedo aqui (a partir do código acima):
Assim, no último exemplo, o stoploss foi ajustado para 76, que é 3*Spread +1.
Isso deve ser longe o suficiente, certo?
Olá Raptor,
Sim, é por isso que eu verifico o rochedo aqui (a partir do código acima):
Assim, no último exemplo, o stoploss foi ajustado para 76, que é 3*Spread +1.
Isso deve estar longe o suficiente, certo?
Aqui está o que eu fiz.
Primeiro escrevi uma função personalizada para arredondar para o dobro para o dobro mais próximo:
Ele faz o que você espera. Se você o chamar com DoubleRound(1237.687360000), ele retorna 1237.50.
Então eu o usei em meu S/L pouco antes de ligar para OrderModify. E eu usei MODE_TICKVALUE, que é 0,25 para #ESZ1.
Então:
No registro você pode ver, que o arredondamento funcionou bem. No entanto, o prejuízo ainda foi rejeitado :/
Não consigo imaginar que mais poderia ser o problema! Este #130 é realmente persistente!!!
Você abriu um Sell
#ESZ1,M5: abrir #13708089 vender 1,00 #ESZ1 a 1239,75 ok
e tentou estabelecer um SL abaixo dele . .
#ESZ1,M5: SL: 1237.50000000
#ESZ1,M5: erro=130