Aprender e escrever juntos em MQL5 - página 9

 
gdtt:

o conselheiro utiliza

a partir da barra 0, os valores dos amortecedores indicadores são mudados em cada tic tac até ao fecho da vela.

É verdade, experimentei, mas na essência não resolve o problema principal.-- Como fazer uma EA recalcular o tampão indicador não só na barra solicitada, mas também em várias barras para trás

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 

Poderá ter sido encontrada uma solução! Um deles...

Para tal, contudo, é necessário fazer uma versão especial do indicador.

 

Cavalheiros,

Estou a escrever um indicador: ...
int handle;
double indicatorBuffer[];
...
int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

int OnCalculate (const int rates_total, // tamanho do array price[]
const int prev_calculated, // barras processadas na chamada anterior
const int begin, // onde os dados significativos começam
const double& price[]) // array para cálculo
{
... a fazer algo

A questão é - como deixar o handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice) saber o que é AppPrice?
ou como extrair Aplicar a: do separador Parâmetros para usar no código?

Obrigado de antemão...

 
FlyAgaric:

Cavalheiros,


A questão é - como deixar o handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice) saber o que é AppPrice?
ou como extrair Aplicar a: do separador Parâmetros para utilização no código?

Obrigado antecipadamente...

Ver OnCalculate():

A selecção de uma série cronológica ou indicador necessário à medida que a matriz de preços[] é executada por um utilizador ao iniciar o indicador no separador "Parâmetros". Para o fazer, deve especificar o item necessário na lista pendente do campo "Aplicar a".

Para receber valores de um indicador personalizado de outros programas mql5, é utilizada a função iCustom(), que devolve o manípulo do indicador para operações subsequentes. Pode também especificar a matriz de preços apropriada[] ou o cabo de outro indicador. Este parâmetro deve ser passado em último lugar na lista de variáveis de entrada do indicador personalizado.
 
Rosh:

Ver OnCalculate():


Rosh obrigado, mas a minha pergunta é exactamente isso. O que devo especificar no operador
handleMA = iMA(_Símbolo, _Período, periodMA, shiftMA, MODE_SMA, AppPrice)
como AppPrice?

Li com muita atenção a ajuda disponível. Talvez o calor tenha tido o seu preço, mas ...

 
FlyAgaric:

Rosh obrigado, mas a minha pergunta é exactamente isso. O que devo especificar na declaração
handleMA = iMA(_Símbolo, _Período, periodMA, shiftMA, MODE_SMA, AppPrice)
como AppPrice?

Li com muita atenção a ajuda disponível. Talvez o calor tenha tido o seu preço, mas ...

Especificar um manípulo indicador, se quiser calcular sobre os dados de outro indicador. Ou o tipo de preços sobre os quais o indicador será calculado.
 
FlyAgaric:

Rosh obrigado, mas a minha pergunta é exactamente isso. O que devo especificar na declaração
handleMA = iMA(_Símbolo, _Período, periodMA, shiftMA, MODE_SMA, AppPrice)
como AppPrice?

Li com muita atenção a ajuda disponível. Talvez o calor tenha tido o seu preço, mas ...

Calor. Deve especificar ENUM_APPLIED_PRICE como AppPrice)
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE;
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Swan:
Calor. Deve especificar ENUM_APPLIED_PRICE como AppPrice)

Swan, obrigado pela vossa atenção. Mas se usar
input ENUM_APPLIED_PRICE AppPrice=PREÇO_CLOSE; e o primeiro formulário

int OnCalculate (const int taxas_total, // tamanho do preço da matriz[]
const int prev_calculated, // barras processadas na chamada anterior
const int começa, // onde começam os dados significativos
const double& preço[]) // matriz para cálculo
Recebemos uma mensagem de aviso na compilação: São definidas duas funções OnCalculate. A função de dados de preços será utilizada NameIndicator.mq5 (pg)
e preço[] permanece desvinculado ao AppPrice de qualquer forma, a menos que seja o mesmo que Aplicar a: no terceiro separador "Parâmetros".

A questão, de facto, é se os indicadores de tampão único incorporados como iMA() e a primeira forma intCalculate() podem ser utilizados, se a matriz de preços[] for de alguma forma
utilizados nos cálculos.

 
Rosh:
Especificar o manípulo do indicador se quiser calcular sobre os dados de outro indicador. Ou tipo de preços sobre os quais o indicador será calculado.

Nós (antes eu) temos algum mal-entendido.

A questão, de facto, é se podemos utilizar indicadores de um tampão incorporado como iMA() e a primeira forma de int OnCalculate(), se a matriz de preços[] for de alguma forma
utilizada nos cálculos.

 
FlyAgaric:

Nós (antes eu) temos algum mal-entendido.

A questão, de facto, é se se pode usar indicadores integrados de um tampão do tipo iMA() e a primeira forma no OnCalculate() se a matriz de preços[] for de alguma forma
utilizados nos cálculos.

O seu parâmetroAppPrice não tem nada a ver com OnCalculate().

int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}

Pode dar-lhe o valor de uma das constantes de preço (opção 1) ou o cabo de algum outro indicador (opção 2). E depois pode:

1ª variante.

Na função OnCalculate() do segundo tipo

int OnCalculate (const int rates_total,      // размер входных таймсерий
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
   );

solicitar todos os dados necessários e efectuar o cálculo

2ª variante.

Utilizar OnCalculate() de qualquer tipo como requerido pelo código e utilizar CopyBuffer() para obter valores indicadores.

Razão: