[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 324

 
TheXpert >> :

Allarme, come opzione. Commento - va bene.

Sostituire while(true) con while(!IsStopped())

In ritardo.)))

Sì, ho dimenticato IsStopped.

 
Svinozavr >> :

In ritardo.)))

Posso darti un vantaggio la prossima volta :) .

Svinozavr >> :

Scrivete il f-fi dove verrà fatto l'output e scrivete ciò di cui avete bisogno attraverso di esso.

Opzione.


 
TheXpert >> :

>> Grazie. È possibile cambiare il colore di Comment? O solo bianco?

 
TheXpert >> :
Posso darti un vantaggio la prossima volta :) .

Comunque sì, grazie, risposta molto veloce qui :)

 
Mathers >> :

Grazie. È possibile cambiare il colore di Comment? O solo bianco?

>>No, non lo so.

 

Quando non c'è bisogno di elaborare ogni tick, come posso fare in modo che il codice venga elaborato solo quando appare una nuova barra?

Sicuramente ci deve essere una funzione già pronta. Lanciami un link...


AGGIORNAMENTO

Grazie, l'ho trovato (:

//+------------------------------------------------------------------+
//|  возвращает признак появления нового бара для указанного периода |
//+------------------------------------------------------------------+
bool isNewBar(int timeFrame)
   {
   bool res=false;
   
   // массив содержит время открытия текущего (нулевого) бара
   // по 7 (семь) таймфреймам
   static datetime _sTime[7];  
   int i=6;
 
   switch ( timeFrame) 
      {
      case 1  : i=0; break;
      case 5  : i=2; break;
      case 15 : i=3; break;
      case 30 : i=4; break;
      case 60 : i=5; break;
      case 240: break;
      case 1440:break;
      default:  timeFrame = 1440;
      }
//----
   if (_sTime[ i]==0 || _sTime[ i]!=iTime(Symbol(), timeFrame,0))
      {
      _sTime[ i] = iTime(Symbol(), timeFrame,0);
      res=true;
      }
      
//----
   return( res);   
   }
 

Come posso usare lo script per impostare la mia scala sul grafico?

Le funzioni che ti dicono quale barra viene visualizzata per prima ci sono, ma come resettarla no.

 

Ciao a tutti, chi può spiegare? La funzione RefreshRates(), deve essere chiamata sempre o quando un Expert Advisor o uno script esegue lunghi calcoli, funziona automaticamente, per esempio, nelle funzioni di gestione degli errori?
Seconda domanda: ecco un esempio di codice, ho corretto un errore, ho passato un parametro all'operatore switch...

int start()
  {
      int A = 1000;
      bool B=true;       // Условие успешной работы
//--------------------------------------------------------------
    if(Bars < A)         // Недостаточно баров
    {      
      Alert("Недостаточно баров в окне инструмента.");
      return;            // Выход из start()
    }
    if( B==false)         // Критическая ошибка   
      {      
      Alert("Эксперт не работает.");     
      return;            // Выход из start   
      }
//+-------------------------------------------------------------- 
  return(0);
  }
//--------------------------------------------------------------
    int Bloc_Error(int S)    // Пользовательская ф-ия обработки ошибок
    {   
      switch( S)    
      { 
      case 3:                // Неверные параметры:
      B=false;
      return(0);                                
      }  
    }

Bene, ora c'è un altro errore, sembra che la variabile indefinita B
, non l'ho dichiarata?

bool B=true;

Questo è l'aspetto del messaggio di errore:
'B' - variabile non definita ----------------- C:\Program Files\MetaTrader - Masterforex\experts\scripts\2.mq4 (31, 7)

Ecco un'altra domanda: cosa sono questi numeri? (31, 7), sono sempre diversi per errori diversi, ho guardato le stesse voci nella directory specificata, è proprio come un nome di errore in un documento... è possibile in MetaEditor 4, da qualche parte vedere la descrizione della soluzione, per esempio, come in Expert Advisor, gli errori di esecuzione ed esecuzione corrispondono ai loro valori, dove per ogni numero una causa specifica di errore??

 
Daiver2 писал(а) >>

Ciao a tutti, chi può spiegare? La funzione RefreshRates(), deve essere sempre chiamata o quando Expert Advisor o lo script eseguono lunghi calcoli, si attiva automaticamente, ad esempio nelle funzioni di gestione degli errori?
Seconda domanda: ecco un esempio di codice, ho corretto un errore, ho passato un parametro all'operatore switch...

bene, ora c'è un altro errore, come variabile indefinita B
non l'ho dichiarato?

Questo è l'aspetto del messaggio di errore:
'B' - variabile non definita ----------------- C:\Program Files\MetaTrader - Masterforex\experts\scripts\2.mq4 (31, 7)

Da qui un'altra domanda: quali sono questi numeri? (31, 7), sono sempre diversi per errori diversi, ho guardato le stesse voci nella directory specificata, è proprio come un nome di errore nel documento... c'è da qualche parte in MetaEditor 4, da qualche parte per vedere la descrizione della soluzione, per esempio come in Expert Advisor, gli errori di esecuzione e runtime corrispondono ai loro valori, dove per ogni numero una causa specifica dell'errore?

Dovrebbe essere definito al di fuori della funzione start(), rendendolo globale. Allora la variabile sarà disponibile da qualsiasi funzione

 
Vinin >> :

Dovrebbe essere definito al di fuori della funzione start(), renderlo globale. Allora la variabile sarà disponibile da qualsiasi funzione

Lasciatemi spiegare. Start è la stessa funzione degli altri, quindi tutte le definizioni di variabili all'interno di Start non hanno effetto al di fuori di essa. La variabile può essere definita globalmente solo nel corpo dell'Expert Advisor, prima dell'init. Poi sarà visibile a tutte le funzioni.

I numeri sono il numero di riga e il numero di carattere nella riga, dove si è verificato l'errore.

Motivazione: