Discussão do artigo "Indicadores Personalizados no MQL5 para novatos"

 

Novo artigo Indicadores Personalizados no MQL5 para novatos foi publicado:

Qualquer assunto novo parece complicado e difícil de aprender para um principiante. Os assuntos que conhecemos parecem muito simples e claros para nós. Mas, simplesmente não lembramos, que todos têm que estudar algo desde o início, até a nossa língua materna. O mesmo é com a llinguagem de programação MQL5 que oferece amplas possibilidades para desenvolver estratégias próprias de negociação - você pode aprender a partir de noções básicas e dos exemplos mais simples. A interação de um indicador técnico com o terminal de cliente MetaTrader 5 é considerada neste artigo sobre o exemplo de um indicador personalizado simples SMA.

Indicadores Personalizados no MQL5 para novatos

Autor: Nikolay Kositsin

 
Artigo muito interessante para quem está começando..... Espero que outros como este.... obrigado
 
Escrito e narrado com um A. Depois de lê-lo, você terá vontade de criar algo próprio. Não é muito interessante reescrever o código todas as vezes e os autores da MQL5, percebendo isso, criaram uma grande biblioteca de funções incorporadas. Aqui está uma delas:

int iMA(
string symbol, // nome do símbolo
ENUM_TIMEFRAMES period, // período
int ma_period, // período de cálculo da média
int ma_shift, // deslocamento horizontal do indicador
ENUM_MA_METHOD ma_method, // tipo de suavização
ENUM_APPLIED_PRICE applied_price // tipo de preço ou identificador
);
com o qual você pode obter o mesmo resultado. Mas. Como obter o applied_price ao usar a forma abreviada int OnCalculate(). Em outras palavras, como obter os valores na guia "Parameters" ao inicializar o indicador?

Obrigado.

 
obrigado. explicação muito clara para um novato como eu. aguardando o próximo artigo ...
 

Obrigado, ele é muito claro e útil para iniciantes.

 

if(prev_calculated==0) // verificar o primeiro início do indicador
first=MAPeriod-1+begin; // índice inicial para todas as barras
else first=prev_calculated-1; // índice inicial para as novas barras

when first=MAPeriod-1+begin; qual é a barra atual? [0] ou [rates_total]?

when first=prev_calculated-1; é um número grande, é necessário repetir o cálculo?

 
No artigo " Custom Indicators in MQL5 for Newbies", é dito que "é melhor usar a ordem crescente [em vez de "ordem inversa"] nos indicadores". Mas se o programa for executado continuamente, ele acabará tendendo ao infinito, ou seja, o buffer (inteiro) para os números de índice logo se esgotará, não é mesmo? Como você lida com isso?
Custom Indicators in MQL5 for Newbies
  • 2010.03.03
  • Nikolay Kositsin
  • www.mql5.com
Any new subject seems complicated and hard-to-learn for a newbie. Subjects that we know seem very simple and clear to us. But we simply do not remember, that everyone has to study something from scratch, and even our native language. The same is with the MQL5 programming language that offers wide possibilities of developing one's own trading strategies - you can start learning it from basic notions and simplest examples. Interaction of a technical indicator with the MetaTrader 5 client terminal is consider in this article on the example of the simple custom indicator SMA.
 

Obrigado pelo artigo! Material muito útil para um iniciante e
para alguém que está fazendo a transição de outro idioma.

 

O computador traduziu? Dá para fazer.

Em comparação com a MQL4, os subscritos da matriz de métricas são calculados com base no passado e são fixos, não dinâmicos. Gostaria de saber o que acontece quando você o executa por uma semana ou um mês? Os dados estão todos na memória? Se estiverem todos na memória, a execução não ficará cada vez mais lenta?

Entretanto, em https://www.mql5.com/zh/articles/31中又说:

  1. "Definir o índice de um elemento como uma sequência é o mesmo que em MQL4" - O que isso significa? Em nosso exemplo, usamos o índice do elemento como uma série temporal. Em outras palavras, a coluna atual (ainda não formada) sempre tem o índice [0], a anterior (já formada) tem o índice [1] e assim por diante.

A maioria dos exemplos de MQL4 usa uma matriz de índice com current como 0, a maioria dos exemplos de MQL5 usa um subscrito de matriz de índice com past como 0.

MQL5 初学者:EA 交易技术指标使用指南
MQL5 初学者:EA 交易技术指标使用指南
  • 2013.09.04
  • Sergey Pavlov
  • www.mql5.com
为在EA 交易中获得内置或自定义指标的值,首先应使用相应函数创建指标的处理函数。本文中的示例说明了在创建自己的程序时如何使用技术指标。在本文中说明的指标使用 MQL5 语言构建。本文的目标受众是那些在交易策略开发上不具备太多经验的读者,并旨在通过使用提供的函数库提供简单明了的指标使用方式。
 
DxdCn:

O computador traduziu? Faça como quiser.

Em comparação com a MQL4, os subscritos da matriz de métricas são calculados com base no passado e são fixos, não dinâmicos. Gostaria de saber o que acontece quando você o executa por uma semana ou um mês? Os dados estão todos na memória? Se estiverem todos na memória, a execução não ficará cada vez mais lenta?

Entretanto, em https://www.mql5.com/zh/articles/31中又说:

  1. "Definir o índice de um elemento como uma sequência é o mesmo que em MQL4" - o que isso significa? Em nosso exemplo, usamos o índice do elemento como uma série temporal. Em outras palavras, a coluna atual (ainda não formada) sempre tem o índice [0], a anterior (já formada) tem o índice [1] e assim por diante.

A maioria dos exemplos de MQL4 usa uma matriz de indicadores com o atual como 0, e a maioria dos exemplos de MQL5 usa uma matriz de indicadores com subscritos com o passado como 0.

A função ArraySetAsSeries() deve ser usada em MQL5 para converter matrizes dinâmicas (alocando memória para armazenar os valores mais recentes na direção do índice maior) em uma forma de série temporal, ou seja, os dados mais recentes são armazenados no índice 0, os próximos dados mais recentes são armazenados no índice 1, e assim por diante, com os dados mais recentes sendo armazenados no índice 0 para sempre.

Leia com a função copybuffer (), a partir da posição do índice 0, para começar a ler os elementos retroativos da matriz, leia quantos de sua própria definição na linha.

 

Nicholas!

Você sabe me dizer por que, quando tento preencher uma matriz de indicadores em um loop usando a fórmula Mass[ i ]= Mass[ i+1]+A; onde A é uma variável, a compilação é aprovada sem erros, mas, quando anexada à janela, aparece a mensagem array out of range (fora do tamanho da matriz)?