Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)
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?
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!
Postado por: @adminOi @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!
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
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:
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:
//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!