Perguntas de um "boneco" - página 52

 

Tem de ir a algum lado? ... Não sei...

Voa na EMA, mas leva 10 vezes mais tempo no iCustom.

 

Nunca se deve fazer isto:

void OnTick()
  {
   //--- безусловно создаем индикатор
   ma_handle = iMA(_Symbol,0, MA,0, MODE_EMA, PRICE_CLOSE);
  }

Não se deixe enganar por dizer"obtenha o manípulo indicador" quando na realidadeestá a "criar um novo indicador".

Além disso, há uma fuga de pegas.

 
Karlson:

Tem de ir a algum lado? ... Não sei...

Voa na EMA, mas leva 10 vezes mais tempo a executar o iCustom.

Onde devemos colocar um punhado de indicadores de punhos obsoletos? Não sei. Não tenho trabalhado dessa forma. Há cada vez mais com cada carrapato.

Se tivesse de implementar tal estratégia, recusaria chamar um indicador personalizado pronto através de iCustom() e colocaria o corpo indicador em OnTick() do Consultor Especialista em vez disso. E os cálculos dos dados seriam efectuados pelo próprio Conselheiro Especialista.

...O problema surgirá se o indicador estiver no formato .ex5 e não houver código.

 

Lembrei-me: " A função IndicatorRelease() é utilizada para libertar um indicador não utilizado da memória do computador e o cabo deste indicador é-lhe passado" (utilizo-a durante a desinicialização do Expert Advisor).

Mas tudo o mesmo: uma nova pega a cada tic tac é incómoda.

 

Sobre a acumulação de pegas, vou investigar.

É isso que pretendo fazer, colocar o peru no Expert Advisor.

 
Karlson:

Sobre a acumulação de pegas, vou investigar.

É isso que pretendo fazer, colocar o peru no Expert Advisor.

Pode deixar o indicador tal como está e criar uma cópia do mesmo no temporizador ou por evento.
 
Interesting:
Pode deixar o indicador como está e criar uma cópia do mesmo num temporizador ou por evento.

Qual é a diferença onde criar uma cópia do indicador: em OnTick(), OnTimer() ou em OnChartEvent()? Em qualquer caso, cada activação especial irá criar uma "cópia do indicador", agravando a já enorme pilha.

Ou talvez eu não compreenda a sua lógica.

 
Yedelkin:

Qual é a diferença onde criar uma cópia do indicador: em OnTick(), OnTimer() ou em OnChartEvent()? Em qualquer caso, cada activação especial irá criar uma "cópia do indicador", agravando a já enorme pilha.

Ou talvez eu não compreenda a sua lógica.

Eis o truque - Se não precisar de alterar os parâmetros do indicador (não é necessário criar uma nova cópia do indicador), então é mais lógico criar o indicador uma vez no bloco de inicialização.

Mas se no decurso do trabalho os parâmetros indicadores devem ser automaticamente alterados, devemos fazê-lo da forma mais eficaz possível.

A forma mais eficiente é criar uma nova cópia do indicador no temporizador (não necessariamente a cada tick).

A forma mais eficaz seria criar uma nova cópia da indicação quando algum evento (alguns poucos eventos) ocorre.

PS

É necessário ter em conta o tempo gasto no cálculo do indicador e certificar-se de se livrar de cópias "desnecessárias".

 

Tal ideia para consideração...Recalcular um novo saco pode ser feito uma vez por dia ou uma semana para mim...Configurar um temporizador:

bool  EventSetTimer(
   int  seconds      // количество секунд
   );

Realmente confuso pelo número de segundos num dia ou semana...))) Também pode fazê-lo num novo bar diário...

Na função OnTimer(), primeiro removo o indicador anterior comIndicatorRelease(), depois crio um novo indicador com um novo período.

void OnTimer() 
{

IndicatorRelease( ma_handle );

ma_handle=iMA(Symbol(),0,newMA,0,MA_EMA,PRICE_CLOSE);

}

Essa é uma ideia geral...

 
Renat:

Nunca se deve fazer isto:

Não se deixe enganar por dizer"obtenha o manípulo indicador" quando na realidadeestá a "criar um novo indicador".

Além disso, há o vazamento de pegas.

Nos primeiros tempos da MQL5, foram discutidas muitas questões, cortou-se uma parte importante dos desenvolvimentos para auto-comercialização, e como resultado, as pessoas sufocam o seu OnCalculate( ) super-optimizado com espaço vazio e colocam cálculos em eventos. É um pouco lento, mas ainda assim mais rápido do que criar a sua própria pega para cada parâmetro dinâmico.

Razão: