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

 
Artyom Trishkin:

2. O que significa "mais do que zero"?

Significa que há algum preço no buffer, caso contrário, não há preço no buffer.

Artyom Trishkin:

O que é mostrado nos valores tampão deste indicador na janela de dados?

Preço ou nada.
 
Ghabo:

Significa que há algum preço no buffer, caso contrário, não há preço no buffer.

EMPTY_VALUE é um valor de buffer "vazio", que muitos indicadores usam por padrão, tem um valor de DBL_MAX - e isto é muito maior que zero. É por isso que estou perguntando.

Tente verificar se(M_A > 0 && M_A < EMPTY_VALUE)

 
Artyom Trishkin:

O valor EMPTY_VALUE, o valor do buffer "vazio" que muitos indicadores usam por padrão, tem um valor de DBL_MAX - que é muito maior do que zero. É por isso que estou perguntando.

Tente verificar se(M_A > 0 && M_A < EMPTY_VALUE)

Os sinais estão aí. É isto?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

Então não haverá alerta na partida, mas haverá sinal na barra durante a qual o indicador foi anexado?

Duvido, na inicializaçãoo tempo já é igual ao tempo de abertura do bar.

Como decidir?

 
Ghabo:

Os sinais estão aí. Isso é tudo?

Então não haverá alerta na partida, mas haverá quando o sinal aparecer na barra durante a qual o indicador foi anexado?

Duvido que, na fase inicial, otempo já seja igual ao tempo de abertura da barra.

Como resolver?

Remover o tempo de inicialização no OnInit()

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

para que tudo já esteja no lugar, basta adicionar a escrita/leitura

Este código funciona ou deveria funcionar? Tenho divergência após recuperar de variável global com identificação real. E se você puder, um exemplo na forma de um indicador. Obrigado.
 
inter78:
Este código funciona ou deveria funcionar? Tenho uma divergência depois de me recuperar de uma variável global com uma identificação real. E se possível, um exemplo na forma de um indicador. Obrigado.

Meu código, ele funciona para mim, não consigo ver seu código.
por favor)

 

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta para iniciantes em MQL4, ajuda e discussão sobre algoritmos e códigos

Taras Slobodyanik, 2018.10.05 11:01

bem, não há nada de complicado nas variáveis globais:
- o nome da variável será prefixo+símbolo+período, valor = id do gráfico
- Quando você começar, procure variáveis com seu prefixo e compare o aidi
- Se um gráfico não for nosso, verificamos se tal gráfico existe; se ainda não existir, eliminamos a variável
- Se um gráfico for nosso, pegamos um símbolo e um ponto do nome e também apagamos a variável (ou a reescrevemos)



Estou tentando ajudar meus leitores a entender o significado do prefixo variável e seu uso. Por favor, me dê um exemplo de como criar uma variável tão global.

Diz que os GPTs são armazenados por 4 semanas, isto é mesmo se o terminal estiver desligado?

 
psyman:

Não consigo encontrar nada na ajuda sobre o que é um prefixo variável ou por que é necessário. Por favor, me dê um exemplo de como criar uma variável tão global.

Diz que o GPT é armazenado por 4 semanas, mesmo que o terminal esteja desligado?

Eu quis dizer o prefixo no nome para poder identificar onde uma variável é própria e onde é de outra pessoa, e o prefixo pode apagar todas as variáveis de uma só vez:

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

por exemplo:

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps. você também pode armazenar/extrair informações no nome

 

Agora sabemos do que estamos falando.

= nome variável é prefixo+símbolo+período, valor = id gráfico

Por que tão complicado? Se você quiser apenas armazenar o período, você pode nomeá-lo com aidentificação do gráfico.

 
psyman:

Agora sabemos do que estamos falando.

= nome variável é prefixo+símbolo+período, valor = id gráfico

Por que é tão complicado? Se você quiser armazenar apenas um período, você pode nomearuma identificação gráfica.

estou apenas escrevendo-o como exemplo)

se você não precisa se lembrar do símbolo, não precisa se lembrar dele.

Se o nome é apenas uma identificação gráfica, como você apaga variáveis desnecessárias?
(se usado com freqüência, haverá muitas variáveis)

Se você não precisa de um prefixo - a mesma coisa, como apagar variáveis desnecessárias?

Razão: