Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 886

 
Sergey Voytsekhovsky:

Sim, de fato, eu não tinha notado isso. Parece melhor, há menos cartas.

Não há maneira de colocar três versões (não sei como dizer corretamente) sob um único operador?

Somente os suportes encaracolados - eles limitam a condição.

 
int a,b,c,d,e,f,g,j;
a=10;
b=5;
d=3;
f=4;
j=1;
a>b?{c=d;e=f;g=j}:{c=0;e=0;g=0};
Print("c=",c," e=",e," g=",g);

Tentei desenhar uma construção como esta, e o compilador cuspiu algo mal cheiroso em mim. Onde está o erro?

 
Sergey Voytsekhovsky:

UURRAA, e a alma tem cantado. Alexey, muito obrigado !!!!!

Tudo funcionou, não entendo bem como é possível passar sem a matriz

porque sua descrição foi apagada. Então, você pode prescindir de qualquer arranjo extra aqui?


#property indicator_color3  clrGreen,clrRed

Esta é a matriz.

 
Sergey Voytsekhovsky:

Sim, de fato, eu não tinha notado isso. Parece melhor, há menos cartas.

Não há maneira de colocar três versões (não sei como dizer direito) sob um único operador?

Sim, nós podemos. Criar duas funções definidas pelo usuário e chamá-las.

int m = 5;//0;//
m = m == 0 ? f1 : f2;

int f1()
 {
  return(1);
 }
int f2()
 {
  return(2);
 }
 
Konstantin Nikitin:

É o que eu estou dizendo. Pronto, já terminamos. Desde que ele saiba o que está acontecendo...

Eu peguei, obrigado.
Estou apenas confuso. Tudo isso é novidade para mim.

 
Alexey Viktorov:

Você pode. Criar duas funções personalizadas e chamá-las.

Eu o entendi corretamente?

ColorHistogram_2Colors[i]=ExtMainBuffer[i]>=50?ColorUp(i):ColorDown(i);
//+------------------------------------------------------------------+ 
int ColorUp(int i)
 {
   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
  return(0);
 }
int ColorDown(int i)
 {
   ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
   ColorHistogram_2Buffer2[i]=50;
  return(1);
 }

Eu o fiz no indicador - funciona.

 
Sergey Voytsekhovsky:

Eu o entendi corretamente?

Eu o prescrevi no indicador - funciona.

Se funcionar, está certo. Mas eu não o faria dessa maneira.

Antes de mais nada, eu não faria mudanças de amortecedores. É suficiente escrever sempre 50 em uma delas sem nenhuma condição.

E no segundo tampão para colocar o valor maior ou menor que 50. Então, na condição <=> apenas a cor deve ser indicada. E sem funções separadas.

 
Alexey Viktorov:

Se funcionar, está certo. Mas não é assim que eu o faria.

Antes de mais nada, eu não faria uma troca de amortecedores chique em que =50. É suficiente escrever sempre 50 em uma delas sem nenhuma condição.

E no segundo buffer para definir o valor maior ou menor que 50. Então, na condição <=> você só terá que atribuir cor. E sem funções separadas.

Eu concordaria com você se a condição <>50 definisse apenas a cor, mas é também o início/final da vela de histograma. Portanto, não vou discutir, vou tentar verificar, embora provavelmente você esteja certo.

 
Alexey Viktorov:

Se funcionar, está certo. Mas não é assim que eu o faria.

Sim, de fato, qualquer dos dois amortecedores DRAW_COLOR_HISTOGRAM2 que definem o início/fim da vela pode ser ou o início ou o fim. Tudo é muito mais simples agora:

   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   ColorHistogram_2Colors [i]=ExtMainBuffer[i]>=50?0:1;

Obrigado pela ciência.

 

Como redefinir os valores INDICATOR_MAXIMUM e INDICATOR_MINIMUM ao mudar de modo?

A questão é que estes valores são usados em um modo e não no outro. Ao mudar o modo para aquele em que esses máximos e mínimos não são necessários, eles são salvos por algum motivo. Este problema existe tanto na MQL4 quanto na MQL5.

Por exemplo, ao executar o indicador no primeiro modo, os limites não são necessários e tudo funciona corretamente

O segundo modo estabelece os limites de máximo e mínimo da janela indicadora. Tudo funciona corretamente quando se muda do primeiro para o segundo modo


Mas ao passar do segundo modo para o primeiro (os limites não são usados no primeiro modo) esses máximos e mínimos são salvos e o usuário não pode ver os valores reais do indicador


O código em MQL4 está nos arquivos anexos

Alguém já encontrou este problema? Alguém tem alguma idéia de como resolvê-lo?

Arquivos anexados:
test.mq4  4 kb