Confira os nossos eBooks, Snippets e Fóruns produzidos para cada plataforma!
Ola Jonh. Boa tarde aos membros! Mando esse código simples. Nesse ex. ele só evita que a linha seja continua e assim que uma nova condição seja compilada ela para de plotar a anterior. Gostaria de melhorar o código, plotando a linha ate que um fechamento ocorra acima dela, sendo essa a ordem de não plotar. Ou seja, gostaria que plotasse todas as condições do codigo na forma de uma linha continua. Tipo horizontalLine. Grato!
Var
ma1: float;
precoA: float;
inicio
inicio // calculo maior maxima
Se ((maxima[0] < maxima[1]) e (maxima[1] > maxima[2])) then
ma1:= maxima[1];
Se (maxima[0] < maxima[1]) then precoA :=ma1
Senão precoA := precoA[1];
Se precoA <> precoA[1] then noplot(1); SetPlotcolor(1,rgb(250,128,114)); SetPlotStyle(1,psdash); //
Plot(ma1);
fim;
end;
Oi @alfredo-goulart!
Deixa eu entender melhor o que precisa para te ajudar...Em um exemplo, estendi os plots do seu código até que houvesse um candle com fechamento acima do valor de cada linha. É isso que deseja? Multiplas linhas horizontais estendendo até que haja um candle com fechamento acima de cada uma?
Abs!
Perfeito John. Tentei fazer de varias formas, inclusive c/ "while...Do". Mas ficou num loop, minha formação agronômica pouco ajuda...hehe. Parabéns pelo trabalho que estas fazendo e pela defesa de tese, vi no grupo do Profit. Sucesso sempre! Estou fazendo na maxima..mas quero replicar p minimas tbm..depois de entender o conceito.
Obrigado, @alfredo-goulart!
Então, sobre sua pergunta...você está querendo fazer algo que em termos de ideia é simples...mas em termos de programação em NTSL já é mais complicado.
Vou te explicar porque entendo ser complicado, talvez você possa simplificar a ideia para tornar mais fácil a implementação, ainda que não seja o mais ideal.
Mas já lhe adianto...esse código vai dar um trabalhinho para fazer e ainda corre o risco do profit achar muito pesado (apesar de ser algo simples em teoria...rsrsrs).
Se você conseguir simplificar definindo a quantidade máxima de linhas que deseja plotar, eu poderia tentar gerar um código para isso...só não posso prometer muita celeridade, porque já disse que exigiria um pouco de esforço para garantir o correto funcionamento nessa implementação.
Abs!
Ola John. Entendo quanto ao excesso de plots e uso de memória no Profit. Tenho usado sempre limitação de dias de plotagem em alguns códigos e mudo de acordo c tempo gráfico a ser utilizado.
Qto a esse código que solicitei, creio que os rompimentos de topos e fundos (Close acima ou abaixo da linha como condição para parar de plotar), também ajudara na limitação das linhas de plotagem. Ja qto ao array circular não tenho conhecimento p opinar. Até vou mandar mesmo ex. acima c/ um array.
Outra forma, em vez utilizar as máximas, seria utilizar detector topos e fundos c/ ajuste do período para limitar os plots.
Mas de qualquer forma não resolve o objetivo que é estender as linhas.
Input
Dias(10);
Var
ma1: float;
precoA: float;
x1,x2,x3,x4 : real;
numero: Array[1..4] of Real;
Result: Real;
Result2: Real;
miv1, miv2, miv3, miv4: Real;
mav1, mav2, mav3, mav4: Real;
i: Inteiro;
inicio
Se (LastCalcdate > Calcdate(Currentdate, - (Dias))) entao
Se ((maxima[0] < maxima[1]) e (maxima[1] > maxima[2])) then
ma1:= maxima[1];
miv1:= ma1;
miv2:= ma1;
miv3:= ma1;
miv4:= ma1;
numero[1]:= miv1;
numero[2]:= miv2;
numero[3]:= miv3;
numero[4]:= miv4;
PAra i:= 1 ate 4 faca
inicio
Se (i=1) entao result:= numero[i];
Se (numero[i] >= result) entao result:= numero[i];
// Se ((maxima[0] < maxima[1]) e (maxima[1] > maxima[2]))
Se (result = numero[i]) then precoA:= result
senao precoA := precoA[1];
Se precoA <> precoA[1] then noplot(1);
// while (close < result) do
Plot(result);
fim;
end;
Grato e se puder ajudar agradeço John. Abç