Boa noite, aproveitando que estou ingressando no mercado financeiro, na verdade mudando algumas estratégias, decidi voltar a estudar programação para facilitar minha vida. Essa é minha primeira imersão na linguagem NTSL, e não está muito agradável, na verdade faz anos que não programo nada. Estou tentando achar uma solução para "otimizar" o indicador de topos e fundos para minha estratégia, que seria marcar os topos e fundos após o cruzamento de uma média, deixando apenas a letra T e F sobre os extremos e para os três últimos, criar uma linha até a barra de preços indicando que é o Topo/Fundo do Candle X. Alguém já tentou desenvolver algo similar a isso?
Tente seguir uma sequência logica de aprendizado.
Primeiro aprenda os conceitos básicos da linguagem NTSL, pelo manual dessa linguagem. Leia o manual o máximo possivel.
Em seguida, crie scrypts simples como por exemplo usando uma media, obedecendo estruturas d NTSL
//Cruzamento_Medias
//Const
//pi = 3.1416;
//
Input
periodoCurto(9);
periodoLongo(21);
Var
src,maC,maL : float;
Compra,Venda : boolean;
Begin
//Indicadores
//src := (open+close)/2; //medianPrice, typicalPrice, AvgPrice: use o que for mais efetivo
src := close;
maC =: mediaexp(periodoCurto, src);
maL := mediaexp(periodoLonga, src);
//Condições
compra := (maC > maL) and ( mac > maC[1]);
Venda := ((maC < maL) and ( mac < maC[1]);
//Coloracao
if compra then
//paintbar(clgreen)
paintbar(RGB(0,255,0))
if Venda then
//paintbar(clred)
paintbar(RGB(255,0,0))
else
//paintbar(clwhite)
paintbar(RGB(255,255,255));
Plotagem
//plot(maC);
//plot2(maL);
PlotN(1,maC);
plotN(2,MaL);
end;
//////////////////////////////////////////////
Assista vídeos/exemplos de códigos abertos.......
espero que tenha ajudado
Boa noite @mkw, muito agradecido pela atenção. A detecção do cruzamento, e o consequente topo ou fundo anterior eu consegui fazer de boa, estou sofrendo é pra tentar descobrir uma maneira de plotar uma linha exatamente no topo, ou marcar T e F em cima do topo e não do cruzamento. o codigo esta assim até o momento
// Definir os parâmetrosInputPeriodo(52);// Período da média móvelvarEMA,UltimoTopoB,UltimoFundoB,MaiorValor,MenorValor : real;CruzaAlta,CruzaBaixa : Boolean;begin// Cálculo da média móvelEMA := Mediaexp(Periodo,Close);// Detectar cruzamentosCruzaAlta := (Close > EMA) and (Close[1] <= EMA);CruzaBaixa := (Close < Ema) and (Close[1] >= EMA);// Detectar o cruzamento de topoIf CruzaAlta thenbeginUltimoTopoB := CurrentBar;// Armazenar a barra do cruzamento de topoMaiorValor := Low;// Inicializa o maior valor encontradopaintbar(clgreen);end;If CruzaBaixa thenbeginUltimoFundoB := CurrentBar;// Armazenar a barra do cruzamento de fundoMenorValor := High;// Inicializa o menor valor encontradopaintbar(clred);end;// Encontrar o menor valor entre o cruzamento de topo e o cruzamento de fundo anteriorIf ((CruzaAlta) and (UltimoFundoB > 0)) thenbegin// Buscar o menor valor entre o cruzamento de topo e o cruzamento de fundo anteriorMenorValor := Lowest(Low,CurrentBar - UltimoFundoB);end;// Encontrar o maior valor entre o cruzamento de fundo e o cruzamento de topo anteriorIf ((CruzaBaixa) and (UltimoTopoB > 0)) thenbegin// Buscar o maior valor entre o cruzamento de fundo e o cruzamento de topo anteriorMaiorValor := Highest(High,CurrentBar - UltimoTopoB);end;end;
Bom dia,
Para plotar letras
veja NTSL --> função PlotTest -- > ctrl+f --> digite funcao plottext
if (Close[1] < EMA) and (Close >= EMA) then
plotText("T",clblack,0,9);
e
Para plotar linhas
--> https://www.google.com/search?q=scapp+horizontalline&oq=scapp+horizontalline&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIJCAEQIRgKGKABMgkIAhAhGAoYoAHSAQoxODQ5OWowajE1qAIIsAIB&sourceid=chrome&ie=UTF-8#fpstate=ive&vld=cid:d10bbf43,vid:7jumg97A2Ns,st:0
mais a frente use o site: https://www.prorealcode.com/library/
espero que ajude