- OnStart
- OnInit
- OnDeinit
- OnTick
- OnCalculate
- OnTimer
- OnTrade
- OnTradeTransaction
- OnBookEvent
- OnChartEvent
- OnTester
- OnTesterInit
- OnTesterDeinit
- OnTesterPass
OnCalculate
É chamada em indicadores quando ocorre o evento Calculate para processar alterações nos dados de preço. Existem duas versões da função, você não pode usar as duas dentro do mesmo indicador.
Cálculo baseado numa matriz de dados
int OnCalculate(
|
Cálculos baseados nas séries temporais do timeframe atual
int OnCalculate(
|
Parâmetros
rates_total
[in] Tamanho da matriz price[] ou das séries temporais de entrada disponíveis para o indicador para cálculo. Na segunda versão da função, o valor do parâmetro corresponde ao número de barras no gráfico em que está sendo executado.
prev_calculated
[in] Contém o valor retornado pela função OnCalculate() na chamada anterior. Ele é usado para ignorar nos cálculos as barras que não mudaram desde a última inicialização desta função.
begin
[in] valor do índice na matriz price[] a partir do qual começam os dados significativos. Permite ignorar nos cálculos os dados ausentes ou iniciais, para os quais não há valores corretos.
price[]
[in] Matriz de valores para executar cálculos. Como matriz price[] pode ser transferida uma das séries temporais de preços ou o buffer calculado de qualquer indicador. O tipo de dados que foi transferido para o cálculo pode ser determinado usando a variável predefinida _AppliedTo.
time{}
[in] Matriz com os valores de tempo da abertura das barras.
open[]
[in] Matriz com os valores dos preços de abertura.
high[]
[in] Matriz com os valores dos preços máximos.
low[]
[in] Matriz com os valores dos preços mínimos.
close[]
[in] Matriz com os valores dos preços de fechamento.
tick_volume[]
[in] Matriz com valores dos volumes de ticks.
volume[]
[in] Matriz com valores dos volumes de negociação.
spread[]
[in] Matriz com os valores de spread para barras.
Valor retornado
Valor de tipo int que será transferido como parâmetro prev_calculated, da próxima vez que a função for chamada.
Observação
Se a função OnCalculate() retornar um valor zero, a janela DataWindow do terminal do cliente não exibirá os valores do indicador.
Se os dados de preço foram alterados desde a última chamada da função OnCalculate() (um histórico mais profundo foi carregado ou o histórico estava ausente), o valor do parâmetro de entrada prev_calculated será definido como zero pelo próprio terminal.
Para determinar a direção da indexação nas matrizes time[], open[], high[], low[], close[], tick_volume[], volume[] e spread[], é necessário chamar a função ArrayGetAsSeries(). Para não depender dos padrões, é absolutamente necessário chamar a função ArraySetAsSeries() para aquelas matrizes com as quais se deve trabalhar.
Ao usar a primeira versão da função, a séries temporais ou o indicador necessário como uma matriz price[] é selecionado pelo usuário na guia Parameters quando o indicador é iniciado. Para fazer isso, você deve especificar o elemento desejado na lista suspensa do campo "Apply to".
Para obter os valores do indicador personalizado a partir de outros programas MQL5, é usada a função iCustom() que retorna o identificador do indicador para as operações subsequentes. Neste caso, você pode especificar a matriz necessária price[] ou o identificador da outro indicador. Este parâmetro deve ser o último a ser passado na lista de variáveis de entrada do indicador personalizado.
É necessário usar o relacionamento entre o valor retornado pela função OnCalculate() e o segundo parâmetro de entrada prev_calculated. O parâmetro prev_calculated, ao chamar a função, contém o valor retornado pela função OnCalculate() na chamada anterior. Isso possibilita a implementação de algoritmos econômicos para o cálculo do indicador personalizado, a fim de evitar cálculos repetitivos para as barras que não foram alteradas desde a última inicialização desta função.
Exemplo de indicador
//+------------------------------------------------------------------+
|
Veja também
ArrayGetAsSeries, ArraySetAsSeries, iCustom, Funções de processamento de eventos, Execução de programas, Eventos do terminal do cliente, Acesso a séries temporais e indicadores