Pessoal,
Gostaria da ajuda de vocês para resolver um dilema . Estou desenvolvendo uma estratégia e caso a operação vá pegar o stoploss, gostaria de fazer uma reversão da posição e ao mesmo tempo aumentar a posição.Como poderia fazer isso? Ja tentei algumas formas e não consegui.
if (IsBought) and (BuyPrice-200) then SellShortAtMarker(BuyPosition*3);
No exemplo acima, se vc está comprado e seu preço de entrada cair 200 pontos, ele vai vender a mercado com a quantidade que vc estava posicionado, multiplicando por 3x.
OBS: lembre-se que, se vc estava com 10 contratos comprados e multiplicar por 3x então vc vai ficar com 20 vendidos, uma vez que dos 30 contratos, 10 foram pra liquidar os 10 comprados.
abs
Obrigado @masker pela ajuda. Vou implementar e testar.Abraços
Meu caro amigo, não funcionou.
Veja só como estou implementando
// REVERSÃO DE MÃO EM SITUAÇÃO DE LOSS DE 250 PONTOS
if (IsBought) and (Price <= BuyPrice-cAlvoReversaoEmPontos) thenbeginSellShortAtMarket(BuyPosition*3);if isSold thenbeginStopV := SellPrice + cStopEmTicks*MinPriceIncrement;StopValvo := SellPrice - cAlvoEmTicks*MinPriceIncrement;StopVoffset := stopV + cStopOffsetEmTicks*MinPriceIncrement;BuyToCoverStop(StopV,StopVoffset);BuyToCoverLimit(StopValvo);end;end;
if (IsSold) and (Price >= SellPrice+cAlvoReversaoEmPontos) thenBeginBuyAtMarket(BuyPosition*3);if isBought thenbeginstopC := BuyPrice - cStopEmTicks*MinPriceIncrement;StopCalvo := BuyPrice + cAlvoEmTicks*MinPriceIncrement;StopCoffset := stopC - cStopOffsetEmTicks*MinPriceIncrement;SellToCoverStop(StopC,StopCoffset);SellToCoverLimit(StopCalvo);end;end;
Para explicar melhor o meu desejo é:
Compro e coloco um stopgain de 100 pontos e um stoploss de 125 pontos, eu quero que ao chegar nos 125 pontos (LOSS) eu reverta a posicao e dobre a maoEx: Comprado com 10 contratos, reverto a mao e fico vendido com 20 contratos e reajusto os stops loss e gain
tente assim:
// REVERSÃO DE MÃO EM SITUAÇÃO DE LOSS DE 250 PONTOS if isSold then begin StopV := SellPrice + cStopEmTicks*MinPriceIncrement; StopValvo := SellPrice - cAlvoEmTicks*MinPriceIncrement; StopVoffset := stopV + cStopOffsetEmTicks*MinPriceIncrement; BuyStop(StopV,0,SellPosition*3); BuyToCoverLimit(StopValvo); end; if isBought then begin stopC := BuyPrice - cStopEmTicks*MinPriceIncrement; StopCalvo := BuyPrice + cAlvoEmTicks*MinPriceIncrement; StopCoffset := stopC - cStopOffsetEmTicks*MinPriceIncrement; SellShortStop(stopC,0,BuyPosition*3); SellToCoverLimit(StopCalvo); end;
Obrigado amigo.
Para concluir, só uma coisa que ainda não consegui:
- Eu preciso saber se o preço está chegando no STOPLOSS que é 250 pontos, ou entao como eu excluo a ordem do stop loss e abro essa nova operação de reversão.
Estou tentando pegar o preço atual e verificar se ele é maior que o preço de venda + 250 pontos (alvo stoploss)
Não consigo fazer essa condição, a estratégia esta sempre pegando o meu STOPLOSS e encerrando a posição.
Veja só a minha condição que estou tentando:
if (IsBought) and (Price <= BuyPrice-cAlvoReversaoEmPontos*MinPriceIncrement) thenbeginstopC := BuyPrice - cStopEmTicks*MinPriceIncrement;StopCalvo := BuyPrice + cAlvoEmTicks*MinPriceIncrement;StopCoffset := stopC - cStopOffsetEmTicks*MinPriceIncrement;SellShortStop(stopC,0,BuyPosition*3);SellToCoverLimit(StopCalvo);end;
if (IsSold) and (Price >= SellPrice+cAlvoReversaoEmPontos*MinPriceIncrement) thenbeginStopV := SellPrice + cStopEmTicks*MinPriceIncrement;StopValvo := SellPrice - cAlvoEmTicks*MinPriceIncrement;StopVoffset := stopV + cStopOffsetEmTicks*MinPriceIncrement;BuyStop(StopV,0,SellPosition*3);BuyToCoverLimit(StopValvo);end;
Tenho a mesma situação acima, já tem solução para isso?Parece que na documentação NTSL na página 41 (ordens para aumento de posição) informa não ser possível.