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

 
Artyom Trishkin:

E a opção certa é, bem, muito simples...

Então, o que é isso?

 
Andrey Sokolov:

Então, qual deles?

Tão simples :)

Se não houver dados, saia até o próximo tique.

 
Boa tarde, é possível registrar um sinal em MT4 a partir de uma conta demo? Obrigado.
 
Artyom Trishkin:

Tão simples :)

Se não houver dados, saia até o próximo tique.

Não, eu escrevi que os cálculos e exibições são necessários de imediato.

Se houver problemas com a solução existente, penso que, como alternativa, pode-se escrever uma função de cálculo de bollinger, não parece ser difícil. Mas por enquanto e o que temos funciona.

 
Olá! Como posso saber o preço futuro do objeto gráficoOBJ_TREND? Por exemplo, temos um raio à direita e precisamos saber em cada novo bar o valor deste raio. obrigado!
 
MakarFX:

Esta estrutura deve ser

Eu fiz isso, funcionou. Obrigado

 
Andrey Sokolov:

Não, eu escrevi que cálculos e exibições são necessários imediatamente.

Se houver problemas com a solução existente, então eu acho que, como opção, você pode escrever uma função para calcular o bollinger, não parece complicado. Mas, por enquanto, o existente funciona.

O indicador, se projetado corretamente, sempre calcula primeiro todo o histórico. O que você tem?

 
Artyom Trishkin:

O que você tem?

Eu não entendo a pergunta.

 
Pessoal, ajudem-me a fazer um alerta para um indicador. Quero testar uma combinação de diferentes indicadores, mas preciso de uma função de alerta. Preciso que o alerta seja mostrado apenas uma vez quando a seta aparecer. Se não for difícil, por favor, ajude-me a escrever esta função, eu não posso fazê-lo, os alertas aparecem um minuto inteiro ou o tempo todo, até mesmo o mt4 fica pendurado.
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

    int limit=rates_total-prev_calculated-2;
   if(limit<1) return(0);
   for(int i=limit;i>=0;i--)
     {
     
      // Снимем показания индикатора
     double in1b = iCustom(NULL,0,"in1",1,i); // индикатор 1 стрелка вверх
     double in1s = iCustom(NULL,0,"in1",0,i); // индикатор 1 стрелка вниз
      
     
     
     double in2b = iCustom(NULL,0,"in2",0,i); // индикатор 2 стрелка вверх
     double in2s = iCustom(NULL,0,"in2",1,i); // индикатор 2 стрелка вниз
    
    Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n"
    +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s));
     
    if(in1b > 2147483647 && in2b > 2147483647) // индикатор стрелка вверх
           {
           Sell[i]=low[i];
                      
          
          // Alert(Symbol()+"BUY";
              
           
           
           
         
           }
   
     if(in1s > 2147483647 && in2s > 2147483647) // индикатор стрелка вниз
           {
            Buy[i]=high[i];
            
              // Alert(Symbol()+"SELL М"+Period());
              
              
           
           }
         
   
     }
   
     
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
jarikn:
Pessoal, ajudem-me a fazer um alerta para um indicador. Quero testar uma combinação de diferentes indicadores, mas preciso de uma função de alerta. Preciso que o alerta seja mostrado apenas uma vez quando a seta aparecer. Se você não for difícil, por favor, ajude-me a escrever esta função, não posso fazê-lo, os alertas aparecem um minuto inteiro ou o tempo todo, até mesmo o mt4 congela.

Tente isto, parece funcionar

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   datetime show_alert=time[1];
   int limit=rates_total-prev_calculated-2;
   if(limit<1) return(0);
   for(int i=limit;i>=0;i--)
     {
     
      // Снимем показания индикатора
      double in1b = iCustom(NULL,0,"in1",1,i); // индикатор 1 стрелка вверх
      double in1s = iCustom(NULL,0,"in1",0,i); // индикатор 1 стрелка вниз
      
      double in2b = iCustom(NULL,0,"in2",0,i); // индикатор 2 стрелка вверх
      double in2s = iCustom(NULL,0,"in2",1,i); // индикатор 2 стрелка вниз
    
      Comment("in1v = "+DoubleToString(in1b)+"\n" +"in1n = "+DoubleToString(in1s)+"\n"
      +"in2v = "+DoubleToString(in2b)+"\n" +"in2n = "+DoubleToString(in2s));
     
      if(in1b > 2147483647 && in2b > 2147483647) // индикатор стрелка вверх
        {
         Sell[i]=low[i];
         if(show_alert!=time[i])
           {
            Alert(Symbol()+"BUY М"+Period()); show_alert=time[i];
           }
        }
   
      if(in1s > 2147483647 && in2s > 2147483647) // индикатор стрелка вниз
        {
         Buy[i]=high[i];
         if(show_alert!=time[i])
           {
            Alert(Symbol()+"SELL М"+Period()); show_alert=time[i];
           }
        }
     }
     
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Razão: