William’s Percent Range

A implementação de scripts para estudos gráficos e novas colunas no monitor de cotações pode ser feita através dos processos de script da plataforma.

Os links para download dos códigos se encontram no final desta página e na aba de extensões do blog.

Esta semana iremos demonstrar como incluir o William’s Percent Range.

Para tal precisaremos inicialmente inserir 2 parâmetros para o cálculo, acessando o menu Editar/Preferências:

Dentro da visão de Preferências acesse Script [beta]:

Iremos agora inserir os 2 parâmetros necessários para o indicador W%R.

Clique em adicionar nova função, inserindo os parâmetros apresentados conforme a imagem abaixo:

Pacote: Gráficos

Nome: max

Tipo de Retorno: Double

Parâmetros:

LineData  |  list

int              |  beginIndex

int              |  endIndex

// Garante que o indice inicial não será menor que o final
if ( endIndex < beginIndex ){
return null;
}
// Garante que o indicie inicial não seja menor que o inicio da lista
if ( beginIndex < 0 ) {
beginIndex = 0;
}
// Garante que o indice final nao seja maior que o fim da lista
if ( endIndex > ( list.size() - 1 ) ) {
endIndex = list.size() - 1;
}
def max = list.value( beginIndex );
for ( def i = beginIndex + 1; i <= endIndex; i++ ) {
if ( list.value( i ) > max ) {
max = list.value( i );
}
}
return max;

Agora insira a outra fórmula da mesma maneira.

Pacote: Gráficos

Nome: min

Tipo de Retorno: Double

Parâmetros:

LineData  |  list

int              |  beginIndex

int              |  endIndex

// Garante que o indice inicial não será menor que o final
if ( endIndex < beginIndex ){
return null;
}
// Garante que o indicie inicial não seja menor que o inicio da lista
if ( beginIndex < 0 ) {
beginIndex = 0;
}
// Garante que o indice final nao seja maior que o fim da lista
if ( endIndex > ( list.size() - 1 ) ) {
endIndex = list.size() - 1;
}
def min = list.value( beginIndex );
for ( def i = beginIndex + 1; i <= endIndex; i++ ) {
if ( list.value( i ) < min ) {
min = list.value( i );
}
}
return min;

Após inseridas ambas fórmulas, acesse dentro do menu Preferências a opção Script [Beta]/Gráficos:

Clique em adicionar novo script e insira a fórmula conforme modelo abaixo:

Nome: Williams’ Percentage Range
Apelido: W%R
Escala: Fixa (de -100 à 0 )

result = newLineData();
def PERIODS = 5;
def HIGH = high();
def LOW = low();
def CLOSE = close();
def SIZE = size();
// Cria as linhas fixas (em -20 e -80)
l1 = newLineData();
l1.setLabel( "FIXA -20" );
l2 = newLineData();
l2.setLabel( "FIXA -80" );
for ( def i = 0; ( i < SIZE ); i++ ) {
l1.add( -20 );
l2.add( -80 );
}
// ..................................................
for ( def i = ( PERIODS - 1 ); i < SIZE; i++ ) {
def BEGIN = ( i - ( PERIODS - 1 ) );
def END = i;
def PERIOD_HIGHEST = _max( HIGH, BEGIN, END );
def PERIOD_LOWEST = _min( LOW, BEGIN, END );
def TODAYS_CLOSE = CLOSE.value( i );
// (HIGH(i-n)-CLOSE)/(HIGH(i-n)-LOW(i-n))*100
def RESULT = ( ( PERIOD_HIGHEST - TODAYS_CLOSE ) / ( PERIOD_HIGHEST - PERIOD_LOWEST ) ) * 100;
result.add( RESULT * (-1) ); // inverte o resultado para trabalhar com a escala invertida
}
r = newLines();
r.add( result );
r.add( l1 );
r.add( l2 );

Pronto! Basta adicionar o novo indicador no gráfico desejado.

Para inserir o W%R no seu gráfico selecione Novo Indicador/Script/Nome inserido para o script (no modelo William’s Percentual Range – William’s % R).

Caso possua alguma dúvida deixe seu comentário abaixo.

Tenha um ótimo final de semana!

Adicionar aos favoritos o Link permanente.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *