Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
Boa tarde Johnathas e colegas do Forum, Voces poderiam avaliar o meu codigo e como colocar a regra de confirmação com a media 32, pois ainda tenho dificuldade na logica? Segue a abaixo o processo do setup e o codigo:
Confirmação
A calda (minima para baixa ou alta) e a Corpo (maxima para baixa ou alta ) do Renko
Entrada
1 - tilson acima/abaixo da media de 32
2 - O renko de 15 devem estar com a media de 32 na nesma direçao Input
MediaRapida(5);
MediaLenta(8);
MediaExtraLenta(32);
var
savgFast: float;
savgSlow: float;
savgExtraSlow: float;
Begin
savgFast:= (Tilson(0.40,MediaRapida));
savgSlow:= (Tilson(0.30,MediaLenta));
savgExtraSlow:= MediaExp(MediaExtraLenta,FECHAMENTO)
if (savgFast > savgSlow) then Paintbar(clverde);
if (savgFast < savgSlow) then Paintbar(clvermelho);
if (Hasposition = false ) then
Begin
if (savgFast > savgSlow) and (Minima < savgSlow) and (Maxima > savgFast) and (Fechamento > Abertura) then
BuyAtMarket;
if (savgFast < savgSlow) and (Minima < savgSlowL) and (Maxima > savgSlow) and (Fechamento < Abertura) e then
SellShortAtMarket;
end;
plot(savgFast);
plot2(savgSlow);
end;
Fala Geraldo blz.
Bom não entendi muito bem o que você quer, mas vou postar algumas alterações que fiz e a partir delas você faz as alterações que desejar.
Você não especificou as saídas da compra e da venda, em que momento você quer sair do trade. Ex. quando a tilson rápida cruzar a tilson lenta ou quando alguma tilson cruzar a média de 32, ou quando o preço fechar abaixo de alguma das médias. De qualquer forma é só alterar no código abaixo.
Apenas para melhorar a leitura do código criei mais 4 variáveis booleanas para definir quando um box é de alta ou baixa e para definir quando as tilsons estão acima da média de 32.
Outra coisa importante a se observar é o seguinte: No seu código você apenas define que uma média é maior que a outra: (savgFast > savgSlow) nesse caso a condição irá se repetir a cada novo candle até que a media vire para baixo (savgFast < savgSlow).
Caso queira que a condição só seja acionada exatamente no cruzamento das média você deve utilizar a seguinte condição: ((savgFast[1] > savgSlow[1]) and (savgFast > savgSlow)) aqui estou dizendo que a condição se satisfaz exatamente no momento que a média savgFast cruz para cima da savgSlow. Essa condição só irá se repetir quando as médias cruzarem para baixo e depois cruzarem para cima novamente.
caso não entenda alguma coisa é só mandar msg.
var savgFast: float; savgSlow: float; savgExtraSlow: float; bBoxAlta:boolean; bBoxbaixa:boolean; bTendenciaAlta:boolean; bTendenciaBaixa:boolean; Begin savgFast:= (Tilson(0.40,MediaRapida)); savgSlow:= (Tilson(0.30,MediaLenta)); savgExtraSlow:= MediaExp(MediaExtraLenta,FECHAMENTO); bBoxAlta :=(Fechamento > Abertura); //Condição para definir um box de alta bBoxBaixa:=(Fechamento < Abertura); //Condição para definir um box de baixa bTendenciaAlta:= (savgFast > savgSlow) and (savgSlow > savgExtraSlow); //Verifica se as tilsons estão acima da média 32 bTendenciaBaixa:=(savgFast < savgSlow) and (savgSlow < savgExtraSlow); //verifica se as tilsons estão abaixo da média 32 if (savgFast > savgSlow) then Paintbar(clverde); if (savgFast < savgSlow) then Paintbar(clvermelho); //Define as condições de entrada if Not(Hasposition) then //Se não estiver posicionado begin //Condição de compra if (savgFast > savgSlow) and (Minima < savgSlow) and (Maxima > savgFast) and (bBoxAlta) and (bTendenciaAlta) then BuyAtMarket //Condição de venda else if (savgFast < savgSlow) and (Minima < savgSlow) and (Maxima > savgSlow) and (bBoxBaixa) and (bTendenciaBaixa) then SellShortAtMarket; end; //Define as condições de saída do trade if (IsBought) and (fechamento < savgSlow) then ClosePosition; //Closeposition fecha qualquer posição abertra. Pode ser usado também "SellToCoverAtMarket" if (IsSold) and (fechamento > savgExtraSlow) then ClosePosition; //Closeposition fecha qualquer posição abertra. Pode ser usado também "BuyToCoverAtMarket" //Plota as médias Tilson e média de 32 plot(savgFast); SetPlotColor (1,clAqua); plot2(savgSlow); SetPlotColor(2,clFuchsia); Plot3 (savgExtraSlow); end;
Eu refiz todo o código, com base no setup que você quer executar dá uma olhada no post: Renko com nuvens de Tilson : “Tilson Box Breakout” – Compartilhamento de códigos fontes de membros da Comunidade – Neo TraderBot Forum
@m4tr1xbr Muito obrigado mesmo Credson pela sua ajuda, vou validar se codigo e se caso necessário vou tentar ajusta-lo, só faltou inserir no seu codigo as inputs
MediaRapida(5);
MediaLenta(8);
MediaExtraLenta(32);
Sobre as saida eu estou defindo em OCO por exemplo 300pts de gain e 150Loss no 12R masi ainda estou testando, gostei deste setup pois realmente é bem acertivo em determinas horarios do dia, eu vi este setup mas pelo https://www.youtube.com/watch?v=eFswgSfOGes&t=174s