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

[Solucionado] Ordem de stop barra a barra

5 Posts
2 Usuários
0 Reactions
184 Visualizações
(@cristiano)
Membro ativo
Registrou: 2 anos atrás
Posts: 3
Iniciador do tópico  

Bom Dia Estou com uma duvida em colocar ordens de buytocoverStop(HIGH[1]) na estratégia de múltipla confirmação. seria como um stop móvel só que barra a barra depois do stop inicial. Alguém pode me ajudar com um bloco de exemplo?


   
Citar
Marcadores do tópico
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
 

Oi @cristiano! Tudo bem?

Você poderia explicar com mais detalhes, ou mesmo mostrar uma figura de como seria. Eu não entendi o que está querendo fazer exatamente.

abs!


   
ReplyCitar
(@cristiano)
Membro ativo
Registrou: 2 anos atrás
Posts: 3
Iniciador do tópico  

Postado por: @admin

Oi @cristiano! Tudo bem?

Você poderia explicar com mais detalhes, ou mesmo mostrar uma figura de como seria. Eu não entendi o que está querendo fazer exatamente.

abs!

 


   
ReplyCitar
(@cristiano)
Membro ativo
Registrou: 2 anos atrás
Posts: 3
Iniciador do tópico  

Oi @cristiano! Tudo bem?

Você poderia explicar com mais detalhes, ou mesmo mostrar uma figura de como seria. Eu não entendi o que está querendo fazer exatamente.

abs!

Bom dia Quero fazer o Ex.01  no Ex02 Porem nao estou conseguindo. O stop movel barra a barra . creio que sera bom do que declarar alvo fixo

This post was modified 2 anos atrás by CRISTIANO

   
ReplyCitar
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
 

Bom dia @cristiano!

   Até um certo ponto, a gente pode enxergar a programação como uma montagem de blocos. Precisamos apenas entender como uma peça se encaixa na outra, ou seja, as interfaces.

  Você já tem o código da dupla confirmação funcionando (teste para ter certeza que funciona! Antes de inserir o stop móvel!). É a figura que você posto de Exemplo2.

  Agora você precisa incluir após o bloco de código do Exemplo2 um bloco de administração de trade, no caso, o stop móvel, onde o stop inicial será Low[1] (se comprado) ou High[1] (se vendido).

  Peguei o código de Stop móvel na área de snippets aqui da comunidade e fiz a adaptação necessária (muito pontual!). Sugiro assisitir ao vídeo de explicação, caso não tenha visto ainda.

 

COMO LIGAR OS BLOCOS?

 

  Então você vai precisar incluir na declaração de constantes e variáveis do seu código aquelas que são usadas pelo stop móvel:

  • Configure o alvo no código ou em ticks;
  • Configure cTrailingStopOffset para quantidade de ticks atrás da referência de stop...se colocar 0 na constante e seu stop de referencia for Low[1] ou High[1], então o stop vai coincidir com esses valores
const
 cAlvoEmTicks = 30;
 cTrailingStopOffset = 15;
 cStopOffsetEmTicks = 50;

var
  fPrecoStop, fPrecoAlvo, fPrecoStopOffset: float;
  bConfigurouRiscoInicial: boolean;

 

Em seguida inclua o bloco a seguir, abaixo do código de dupla confirmação de ordens:

  • fPrecoStop para posição comprada vai ser inicialmente Low[1]
  • fPrecoStop para posição vendida vai ser inicialmente High[1]
  • O preço de referencia para atualização de stop é Low ou High, dependendo da posição

 

  //POSIÇÃO COMPRADA
  //Código responsável pela manutenção das ordens de stoploss e take profit
  if isBought then
  begin
    if Not bConfigurouRiscoInicial then
    begin
      fPrecoStop := Low[1];
      fPrecoAlvo := BuyPrice + cAlvoEmTicks*MinPriceIncrement;
      fPrecoStopOffset := fPrecoStop - cStopOffsetEmTicks*MinPriceIncrement;
      bConfigurouRiscoInicial := true;
    end;


    if ((Low - cTrailingStopOffset*MinPriceIncrement) >= fPrecoStop)
    and (Low > BuyPrice) then
    begin
      fPrecoStop := Low - cTrailingStopOffset*MinPriceIncrement;
      fPrecoStopOffset := fPrecoStop - cStopOffsetEmTicks*MinPriceIncrement;
    end;

    SellShortStop(fPrecoStop,fPrecoStopOffset);
    if isBought then SellShortLimit(fPrecoAlvo);
  end;


  //POSIÇÃO VENDIDA
  //Código responsável pela manutenção das ordens de stoploss e take profit
  if isSold then
  begin
    if Not bConfigurouRiscoInicial then
    begin
      fPrecoStop := High[1];
      fPrecoAlvo := SellPrice - cAlvoEmTicks*MinPriceIncrement;
      fPrecoStopOffset := fPrecoStop + cStopOffsetEmTicks*MinPriceIncrement;
      bConfigurouRiscoInicial := true;
    end;

    if ((High + cTrailingStopOffset*MinPriceIncrement) <= fPrecoStop)
    and (High < SellPrice) then
    begin
      fPrecoStop := High + cTrailingStopOffset*MinPriceIncrement;
      fPrecoStopOffset := fPrecoStop + cStopOffsetEmTicks*MinPriceIncrement;
    end;

    BuyStop(fPrecoStop,fPrecoStopOffset);
    if isSold then BuyLimit(fPrecoAlvo);
  end;

  //Encerra posicao comprada no horario limite
  if (Time >= iHorarioEncerramentoDaytrade)
  and HasPosition
  then ClosePosition;

  if Not hasPosition and bConfigurouRiscoInicial then bConfigurouRiscoInicial := false;

 

 Abs! Espero que dê tudo certo ai!


   
ReplyCitar