Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!
Quero criar um indicador que plote 2 linhas de ativos diferentes (Petr4 e Petr3) no gráfico do ativo atual. Uma linha é a variação do preço atual (Petr4) em relação ao fechamento do dia anterior (Petr4). A outra linha é a mesma lógica só que com a Petr3, ou seja, variação do preço atual (Petr3) em relação ao fechamento do dia anterior (Petr3). Encontrei o indicador 2MV Correlação, mas ele calcula a variação do preço atual com o fechamento da vela anterior. Preciso que calcule com o fechamento do dia anterior.
Silvio, use a nova função Asset para acessar multiplos ativos em um mesmo gráfico.
No seu caso poderia determinar algo assim:
const aACAO01 = Asset("PETR4", feedBovespa); aACAO02 = Asset("PETR3", feedBovespa);
Desta forma terá acesso a abertura, fechamento, máxima e mínimas destes ativos mesmo estando em um gráfico de outro ativo.
Abs
Oi @silviobaiajr!
O caminho é esse mesmo que o @mfpublicos indicou!
Só complementando a resposta dele...a formação de candles vai seguir o ativo do gráfico e as funções NTSL não estão parametrizadas por ativo. Por exemplo, há a função CloseD(1) que iria retornar o fechamento do ativo no dia anterior. Caso esta função tive como parâmetro o ticker do ativo, seria bem direta a resposta a sua pergunta. Infelizmente não tem.
Daí para obter o fechamento desses ativos no dia anterior teríamos que fazer na mão (conforme código abaixo). O problema é como ressaltei: a formação dos candles vai seguir o ativo principal. Assim não temos como ser precisos da forma como a NTSL funciona hoje...pois pode ocorrer a seguinte situação:
Não vejo maneira de contornar este problema na forma como a NTSL funciona hoje. Teria que refatorar muita coisa na linguagem e na engine. Por esse motivo, talvez o indicador que você esteja utilizando não faça essa operação que você deseja.
Espero que tenha ficado claro!
Grande abs!
const aACAO01 = Asset("PETR4", feedBovespa); aACAO02 = Asset("PETR3", feedBovespa); var hoje: integer; fFechAnteriorACAO01, fFechAnteriorACAO02: float; begin if Date <> hoje then begin hoje := Date; fFechAnteriorACAO01 := aACAO01.Close[1]; fFechAnteriorACAO02 := aACAO02.Close[1]; end; Plot(aACAO01.Close/fFechAnteriorACAO01); Plot2(aACAO02.Close/fFechAnteriorACAO02); end;
Eu conseguiria outras informações deste outro ativo? Por exemplo Position e realizar ordens de compra e venda.