Confira os nossos eBooks, Snippets e Fóruns produzidos para cada plataforma!
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âmetros
Input
Periodo(52);
// Período da média móvel
var
EMA,UltimoTopoB,UltimoFundoB,MaiorValor,MenorValor : real;
CruzaAlta,CruzaBaixa : Boolean;
begin
// Cálculo da média móvel
EMA := Mediaexp(Periodo,Close);
// Detectar cruzamentos
CruzaAlta := (Close > EMA) and (Close[1] <= EMA);
CruzaBaixa := (Close < Ema) and (Close[1] >= EMA);
// Detectar o cruzamento de topo
If CruzaAlta then
begin
UltimoTopoB := CurrentBar;
// Armazenar a barra do cruzamento de topo
MaiorValor := Low;
// Inicializa o maior valor encontrado
paintbar(clgreen);
end;
If CruzaBaixa then
begin
UltimoFundoB := CurrentBar;
// Armazenar a barra do cruzamento de fundo
MenorValor := High;
// Inicializa o menor valor encontrado
paintbar(clred);
end;
// Encontrar o menor valor entre o cruzamento de topo e o cruzamento de fundo anterior
If ((CruzaAlta) and (UltimoFundoB > 0)) then
begin
// Buscar o menor valor entre o cruzamento de topo e o cruzamento de fundo anterior
MenorValor := Lowest(Low,CurrentBar - UltimoFundoB);
end;
// Encontrar o maior valor entre o cruzamento de fundo e o cruzamento de topo anterior
If ((CruzaBaixa) and (UltimoTopoB > 0)) then
begin
// Buscar o maior valor entre o cruzamento de fundo e o cruzamento de topo anterior
MaiorValor := 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
mais a frente use o site: https://www.prorealcode.com/library/
espero que ajude