Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1535

 
Artyom Trishkin:

E l'opzione giusta è, beh, molto semplice...

Allora, che cos'è?

 
Andrey Sokolov:

Allora, quale?

Così semplice :)

Se non ci sono dati, esce fino al prossimo tick.

 
Buon pomeriggio, è possibile registrare un segnale in MT4 da un conto demo? Grazie.
 
Artyom Trishkin:

Così semplice :)

Se non ci sono dati, esce fino al prossimo tick.

No, ho scritto che i calcoli e le visualizzazioni su di essi sono necessari contemporaneamente.

Se ci saranno problemi con la soluzione esistente, penso che, come alternativa, si può scrivere una funzione di calcolo di bollinger, non sembra difficile. Ma per ora e quello che abbiamo funziona.

 
Ciao, come posso conoscere il prezzo futuro dell'oggetto graficoOBJ_TREND? per esempio, abbiamo un raggio a destra e abbiamo bisogno di sapere ad ogni nuova barra il valore di questo raggio. grazie!
 
MakarFX:

Questa struttura dovrebbe essere

L'ho fatto e ha funzionato. Grazie

 
Andrey Sokolov:

No, ho scritto che i calcoli e le visualizzazioni sono necessari immediatamente.

Se ci saranno problemi con la soluzione esistente, allora penso che, come opzione, si può scrivere una funzione per calcolare la bollinger, non sembra complicato. Ma per ora quello esistente funziona.

L'indicatore, se implementato correttamente, calcola sempre prima l'intera storia. Che cosa avete?

 
Artyom Trishkin:

Che cos'hai?

Non capisco la domanda.

 
Ragazzi, aiutatemi a creare un allarme per un indicatore. Voglio testare una combinazione di diversi indicatori, ma ho bisogno di una funzione di avviso. Ho bisogno che l'avviso venga mostrato solo una volta quando appare la freccia. Se non sei difficile per favore aiutami a scrivere questa funzione, non posso farlo, gli avvisi appaiono un minuto intero o tutto il tempo, anche mt4 si blocca.
//+------------------------------------------------------------------+
//| 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:
Ragazzi, aiutatemi a creare un allarme per un indicatore. Voglio testare una combinazione di diversi indicatori, ma ho bisogno di una funzione di avviso. Ho bisogno che l'avviso venga mostrato solo una volta quando appare la freccia. Se non sei difficile per favore aiutami a scrivere questa funzione, non posso farlo, gli avvisi appaiono un minuto intero o tutto il tempo, anche mt4 si blocca.

Prova questo, sembra funzionare

//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+