Errori, bug, domande - pagina 1005

 
ns_k:

Buon pomeriggio!

Ibuffer degli indicatori salvano i valori tra un indicatore e l'altro o ho qualche problema con il terminale?

Ho costruito un indicatore, poi ho commentato l'algoritmo di conteggio e ho premuto compile - tutti i valori rimangono sul grafico. Penso che potrei aver bisogno di mettere di nuovo l'indicatore sul grafico per aggiornare i valori del buffer; l'ho messo con il ciclo di calcolo mancante e ha ancora gli stessi valori. Ho dovuto riavviare il terminale per liberarmene.

Per favore, commentate questo.

Grazie!

Sembra che ci siano ancora condizioni che lasciano valori già calcolati nei buffer. Non capisco quali siano esattamente queste condizioni. Il problema è sparito dopo aver riavviato il terminale. Infatti, questo è il motivo per cui non scriverei una richiesta al servizio.

In generale, forse non è un bug ma una caratteristica?

Grazie!

 
ns_k:

Sembra che ci siano condizioni in cui i valori già calcolati rimangono nei buffer. Cosa sono esattamente queste condizioni, non capisco. Dopo aver riavviato il terminale, il problema è scomparso. Infatti, questo è il motivo per cui non scriverei una richiesta al servizio.

In generale, forse non è un bug ma una caratteristica?

Grazie!

Basta azzerare i valori dell'array prima del riempimento o durante l'inizializzazione:

ArrayInitialize(buffer_data,EMPTY_VALUE);
 
ns_k:

Sembra che ci siano condizioni in cui i valori già calcolati rimangono nei buffer. Cosa sono esattamente queste condizioni, non capisco. Dopo aver riavviato il terminale, il problema è scomparso. Infatti, questo è il motivo per cui non scriverei una richiesta al servizio.

In generale, forse non è un bug ma una caratteristica?

Grazie!

I valori devono essere azzerati
 
tol64:

Prima del riempimento o durante l'inizializzazione, azzerate semplicemente i valori dell'array:

Grazie!!!
 

Sarebbe bello se il menu contestuale del clic destro potesse avere una voce separata con indicatori personalizzati

Grazie!

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

Un'altra domanda per favore :)

Qual è il modo di visualizzare i commenti nella finestra dell'indicatore piuttosto che nella finestra del grafico?

Grazie!

 
ns_k:

Come è possibile visualizzare i commenti nella finestra dell'indicatore invece che nella finestra del grafico?

Non c'è nessuna disposizione per questo comportamento. Usate gli oggetti se ne avete davvero bisogno.
 

Buon pomeriggio!

È meglio rendere la finestra delle proprietà dell'indicatore non modale,se possibile.

Grazie!

 
ns_k:

Buon pomeriggio!

È meglio rendere la finestra delle proprietà dell'indicatore non modale,se possibile.

Grazie!

E aggiungere il pulsante Applica. In altre parole, abbiamo cambiato il valore, premiamo il pulsante Applica e vedremo le modifiche senza chiudere la finestra. Sarebbe molto più conveniente.

E per la centesima volta - la possibilità di cambiare la dimensione della finestra delle proprietà.

P.S. Scrivere di più in Service Desk.

 

Non so dove sto diventando scemo, per così dire.

int OnCalculate (const int rates_total,      // size of input time series
                 const int prev_calculated,  // bars handled in previous call
                 const datetime& time[],     // Time
                 const double& open[],       // Open
                 const double& high[],       // High
                 const double& low[],        // Low
                 const double& close[],      // Close
                 const long& tick_volume[],  // Tick Volume
                 const long& volume[],       // Real Volume
                 const int& spread[]         // Spread
                 )

  {
   
   
   
   doDrawIndicator(gSymbols[0],rates_total,g1ThermB);


//Comment(rates_total);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int doDrawIndicator(string xSymbol, int xRatesTotal, double &xBuffer[])//,double &xPrice[],double &xBuffer[])
  {
   double l1Close[]; // , l2Close[];
   datetime lTime[];
   datetime lEnd,lStart;
   int copied;
   ArrayInitialize(xBuffer,0);
   lEnd=TimeCurrent();
   lStart=(TimeCurrent()/86400)*86400+3600;

   copied=CopyTime(xSymbol,Period(),lStart,lEnd,lTime);
   if(copied==-1){Print("Can't copy time",__FUNCSIG__);return(0);}
   copied=CopyClose(xSymbol,Period(),lStart,lEnd,l1Close);
   if(copied==-1){Print("Ждите...1");return(0);}

   sThermometer lT;
  // Print("rates_total=",rates_total);
   //Comment(xSymbol);
   Comment(copied);
   g1RM=new CRangeManager(1,0.2,20,xSymbol);
 
   for(int i=0;i<copied;i++)
     {
      lT=g1RM.getStateByValue(l1Close[copied-i-1]);
      if(gThermRange==Up && lT.cTemperature.State<7 || gThermRange==Down && lT.cTemperature.State>6 )
        {
         xBuffer[xRatesTotal-i-1]=lT.cTemperature.Temperature;
        }
      else
        {
         xBuffer[xRatesTotal-i-1]=0;
        }
     }

     
   delete g1RM;
   return(1);

  }

L'indicatore non si aggiorna, cioè continuo a vedere il 739 detto nell'angolo sinistro (buttato sulle minuzie, come si capisce). E non appena premo compile, l'indicatore viene aggiornato. Dove si trova l'errore nel codice?

Grazie!