Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 818

 
Vladimir Karputov:

Espero que crie manípulos indicadores ONE time no OnInit()?

A profundidade de cálculo depende do indicador. Os indicadores raros limitam a profundidade à força - como regra, todos eles calculam toda a história. Portanto, a seguinte variante pode ser útil: introduzir a variável responsável pela profundidade no indicador e depois passar este parâmetro através do iCustom no Expert Advisor.

1. Sim, compreendo que de uma boa maneira deve ser feito uma vez no init. Mas a questão é que os parâmetros de entrada dos indicadores podem variar. Por exemplo, na análise do espectro, as frequências ressonantes são calculadas e o resultado do cálculo é o período da MA utilizado. E se solicitar dados de MA para uma nova dimensão, é uma nova pega. Praticamente as frequências não mudam em cada barra, pelo que o mesmo cabo de MA é usado por tempo suficiente (~ minutos). Mas mesmo assim, chega uma altura em que o cabo muda. E depois ou preciso de usar um monte de pegas, ou usar uma única pega, mas recalculá-la periodicamente. É aí que entra a economia.

2. iCustom que dominei. Mas como limitar a profundidade de cálculo no indicador? Não o posso fazer em termos técnicos. Aparentemente, terei de criar uma série de clones personalizados de indicadores técnicos. É claro que é irritante, mas deve ser eficaz. Obrigado pela dica. É uma boa ideia. Obrigado.

 
User_mt5:

1. Sim, compreendo que isto é normalmente feito uma vez no inite. Mas a questão é que os parâmetros de entrada dos indicadores podem mudar.

Os programadores podem escrever SB onde os indicadores podem ser tratados no estilo MQL4 sem perder a sua eficiência. Ou seja, todas as caches e pegas estão escondidas em SB.

 
User_mt5:

1. Sim, compreendo que isto é normalmente feito uma vez no inite. Mas a questão é que os parâmetros de entrada dos indicadores podem variar. Por exemplo, na análise espectral as frequências ressonantes são calculadas e o resultado do cálculo é o período do MA utilizado. E se solicitar dados de MA para uma nova dimensão, é uma nova pega. Praticamente as frequências não mudam em cada barra, pelo que o mesmo cabo de MA é usado por tempo suficiente (~ minutos). Mas mesmo assim, chega uma altura em que o cabo muda. E depois ou preciso de usar um monte de pegas, ou usar uma única pega, mas recalculá-la periodicamente. É aí que entra a economia.

2. iCustom que dominei. Mas como limitar a profundidade de cálculo no indicador? Não o posso fazer em termos técnicos. Aparentemente, terei de criar uma série de clones personalizados de indicadores técnicos. É claro que é irritante, mas deve ser eficaz. Obrigado pela dica. É uma boa ideia. Obrigado.


1. Nesse caso é provavelmente melhor matar um cabo não utilizado e criar um novo (o principal é controlar, para não bater um milhão de cabos no OnTick() :) ).

2. Criar uma cópia do indicador incorporado, mas com um nome diferente (por exemplo, adicionar "profundidade da história" ao seu nome) e introduzir um novo parâmetro: InpDepthHistory. Ou seja, é necessário escrever novos indicadores personalizados.

 
User_mt5:

1. Sim, compreendo que isto é normalmente feito uma vez no inite. Mas a questão é que os parâmetros de entrada dos indicadores podem variar. Por exemplo, na análise espectral as frequências ressonantes são calculadas e o resultado do cálculo é o período do MA utilizado. E se solicitar dados de MA para uma nova dimensão, é uma nova pega. Praticamente as frequências não mudam em cada barra, pelo que o mesmo cabo de MA é usado por tempo suficiente (~ minutos). Mas mesmo assim, chega uma altura em que o cabo muda. E depois ou preciso de usar um monte de pegas, ou usar uma única pega, mas recalculá-la periodicamente. É aí que entra a economia.

2. iCustom que dominei. Mas como limitar a profundidade de cálculo no indicador? Não o posso fazer em termos técnicos. Aparentemente, terei de criar uma série de clones personalizados de indicadores técnicos. É claro que é irritante, mas deve ser eficaz. Obrigado pela dica. É uma boa ideia. Obrigado.

Tanto quanto sei, pretende obter apenas 1 valor usando iCustom() como em mql4, mas não considera que o mql4 também recalcula o indicador para toda a profundidade da história na primeira utilização. Da mesma forma, é recalculado com uma alteração de pelo menos um parâmetro.

Portanto, concluímos: Não se deve incomodar. Se o indicador "antigo" não for necessário, pode simplesmente apagá-lo e obter um controlo do indicador com outros parâmetros.

 
fxsaber:

Os programadores podem escrever um SB onde os indicadores podem ser tratados no estilo MQL4 sem perder a eficiência. Ou seja, todas as caches e pegas estão escondidas no SB.

Lamento, mas não compreendo. Será a palavra Desenvolvedores aqui os que criaram a MT ou eu sou uma aplicação pecaminosa? E SB é...?

 
Vladimir Karputov:

1. Nesse caso, é provavelmente melhor matar um cabo não utilizado e criar um novo (o principal é certificar-se de que não se bate um milhão de cabos no OnTick() :)) ).

2. Criar uma cópia do indicador incorporado, mas com um nome diferente (por exemplo, adicionar "profundidade da história" ao seu nome) e introduzir um novo parâmetro: InpDepthHistory. Ou seja, deve escrever novos indicadores personalizados.

1. Sim. Até agora, tenho um conjunto tridimensional de apenas pegas. Mas agora, aparentemente, vou reorganizar tudo.

2. Sim, existem quase todos os códigos de indicadores técnicos. E pode escrever o seu próprio.

Obrigado.

 
User_mt5:

Lamento, mas não percebo. Será a palavra Desenvolvedores aqui os que criaram a MT ou eu sou um aplicador pecaminoso? E SB é...?

A MetaQuotes pode criar uma biblioteca padrão deste tipo, se assim o desejar. A grande questão é: será necessário?

 
Alexey Viktorov:

A meu ver, pretende obter apenas 1 valor usando iCustom() como em mql4, mas não considera que o mql4 também recalcula o indicador para toda a profundidade da história na primeira utilização. Da mesma forma, é recalculado quando pelo menos um parâmetro é alterado.

Daí a conclusão: Não há necessidade de se preocupar. Se um indicador "obsoleto" já não for necessário, pode simplesmente apagá-lo e obter um indicador manuseado com parâmetros diferentes.

Talvez, eu queira. Mas agora não o quero fazer. Tem razão. Se não precisa de um indicador obsoleto, deve esmagá-los como baratas :)

Uma boa solução consiste em limitar a profundidade dos clones técnicos. Poupará recursos e tempo. Por isso, é isso que vou fazer agora.

Obrigado.

 
fxsaber:

A MetaQuotes pode criar uma biblioteca padrão deste tipo, se assim o desejar. A grande questão é: será necessário?

Isto é para as gerações futuras. Vi alguns exemplos da biblioteca. Milhares de linhas de código não comentado. Não sei de ninguém, mas não posso fazer isso. Portanto, obrigado pela ideia, mas não é aceitável no meu caso.
 
User_mt5:
Isto é para as gerações futuras. Vi alguns exemplos da biblioteca. Milhares de linhas de código não comentado. Não sei de ninguém, mas não sei como fazer isso. Portanto, obrigado pela ideia, mas não é aceitável no meu caso.

Isto já funciona em MT5

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Características da linguagem mql5, subtilezas e truques

fxsaber, 2018.01.09 10:20

Para adeptos de MQL4 existe uma forma antiga de lidar com TFs em MQL5

Talvez alguém considere a abordagem MQL4 útil também no trabalho com a história da carraça

if (Tick[0].bid > Tick[100].bid) // сравниваем текущий и исторический тики
  Print("Hello World!");

if (High[0] > Close[100]) // https://www.mql5.com/ru/forum/42122/page24#comment_2904023
  Print("Hello World!");

Tecnicamente, nada o impede de fazer a mesma coisa UM só tempo com indicadores (sem perda de eficiência) e colocar a solução em SB.