Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

leaf leftleaf right
Notifications
Clear all

Reversão de Posição + Aumentar a posição

7 Posts
2 Usuários
0 Reactions
317 Visualizações
(@leomribeiro)
Membro ativo
Registrou: 1 ano atrás
Posts: 7
Iniciador do tópico  

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.


   
Citar
Marcadores do tópico
masker
(@masker)
Membro confiável
Registrou: 2 anos atrás
Posts: 41
 
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


   
ReplyCitar
(@leomribeiro)
Membro ativo
Registrou: 1 ano atrás
Posts: 7
Iniciador do tópico  

Obrigado @masker pela ajuda. Vou implementar e testar.
Abraços


   
ReplyCitar
(@leomribeiro)
Membro ativo
Registrou: 1 ano atrás
Posts: 7
Iniciador do tópico  

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) then
begin
SellShortAtMarket(BuyPosition*3);
if isSold then
begin
StopV := SellPrice + cStopEmTicks*MinPriceIncrement;
StopValvo := SellPrice - cAlvoEmTicks*MinPriceIncrement;
StopVoffset := stopV + cStopOffsetEmTicks*MinPriceIncrement;
BuyToCoverStop(StopV,StopVoffset);
BuyToCoverLimit(StopValvo);
end;
end;

if (IsSold) and (Price >= SellPrice+cAlvoReversaoEmPontos) then
Begin
BuyAtMarket(BuyPosition*3);
if isBought then
begin
stopC := BuyPrice - cStopEmTicks*MinPriceIncrement;
StopCalvo := BuyPrice + cAlvoEmTicks*MinPriceIncrement;
StopCoffset := stopC - cStopOffsetEmTicks*MinPriceIncrement;
SellToCoverStop(StopC,StopCoffset);
SellToCoverLimit(StopCalvo);
end;
end;


   
ReplyCitar
(@leomribeiro)
Membro ativo
Registrou: 1 ano atrás
Posts: 7
Iniciador do tópico  

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 mao
Ex: Comprado com 10 contratos, reverto a mao e fico vendido com 20 contratos e reajusto os stops loss e gain


   
ReplyCitar
masker
(@masker)
Membro confiável
Registrou: 2 anos atrás
Posts: 41
 

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;

   
ReplyCitar
(@leomribeiro)
Membro ativo
Registrou: 1 ano atrás
Posts: 7
Iniciador do tópico  

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:

 

// REVERSÃO DE MÃO EM SITUAÇÃO DE LOSS DE 250 PONTOS

if (IsBought) and (Price <= BuyPrice-cAlvoReversaoEmPontos*MinPriceIncrement) then
begin
stopC := 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) then
begin
StopV := SellPrice + cStopEmTicks*MinPriceIncrement;
StopValvo := SellPrice - cAlvoEmTicks*MinPriceIncrement;
StopVoffset := stopV + cStopOffsetEmTicks*MinPriceIncrement;
BuyStop(StopV,0,SellPosition*3);
BuyToCoverLimit(StopValvo);
end;

 


   
ReplyCitar