Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
Prezados,
eis um código simples de operação que ao preço tocar a média ele lança ordem de compra ou de venda, contudo nenhuma ordem está sendo lançada. Deixei habilitado no módulo de automação a avaliação por ticks ao invés de aguardar o fechamento do candle.
var fMedia9 : float; fMedia21 : float; fMediaPonderada : float; bComprado,bVendido : boolean; ponto_entrada,ponto_stop,ponto_alvo : float; begin bComprado := isBought(); bVendido := isSold(); fMedia9 := Media(9,close); fMedia21 := Media(21,close); fMediaPonderada := VWAP(1); //Envia ordens de compra/venda begin if Not (bComprado Or bVendido) then begin if (minima - fmedia9 < 5) and (minima - fmedia9 > 0) then BuyStop(fMedia9); if (fmedia9 - maxima < 5) and (fmedia9 - maxima > 0) then SellShortStop(fMedia9); if (minima - fMediaPonderada < 5) and (minima - fMediaPonderada > 0) then BuyStop(fMediaPonderada); if (fMediaPonderada - maxima < 5) and (fMediaPonderada - maxima > 0) then SellShortStop(fMediaPonderada); end; end;
O erro provavelmente está ocorrendo porque a ordem stop de compra ou venda está sendo colocada abaixo do preço atual de mercado, o que não faz sentido. As ordens stop devem sempre ser colocadas acima do preço atual de mercado para ordens de compra e abaixo do preço atual de mercado para ordens de venda.
Olá @mrgeorge!
O que o @masker falou procede! Mas acho que seu problema deve ser ainda anterior a esse. Rodei seu código em WDOFUT 1 min, tendo em vista que a abertura das posições e diferenças parecem sugerir operação no minidólar.
Independente disso, sua estratégia abre posição, mas não encerra nunca. Assim, seu código parece que não fez nada porque tem uma operação aberta no início do backtesting que não encerra.
Defina as regras de encerramento das posições.
Grande abs!