Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1011

 
Vitaly Muzichenko:

Ha mai funzionato o no?

Come posso fare in modo che quando si cambia un colore nei parametri di input, questo colore sia in"indicator_color1"? In questo momento, non importa come lo cambi, è l'originale

Comment(Buffer1_Color[0]);

Che ne dite di questo?

 
Сергей Таболин:

Che ne dite di questo?

 
Vitaly Muzichenko:

Ha mai funzionato o no?

Come posso fare in modo che quando si cambia un colore nei parametri di input, questo colore sia in"indicator_color1"? In questo momento, non importa come lo cambi, è quello originale.

Qualcosa può essere tracciato così:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDarkGoldenrod
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double         Label1Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   Print(PlotIndexGetInteger(0,PLOT_LINE_COLOR,0));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
File:
Test.mq5  5 kb
 
Vladimir Karputov:

Qualcosa può essere tracciato così:

Bene, ecco qui:PlotIndexGetInteger(0,PLOT_LINE_COLOR,0)

Grazie!

 

Come nell'indicatore personalizzato per ottenere dati da OnCalculate() solo serie di minuti, su qualsiasi timeframe? Sto usando CopyRates(sym,PERIOD_M1,...), qual è il modo migliore, cosa mi consigliate?

 
Vladimir M.:

Come ottenere i dati in un indicatore personalizzato da OnCalculate() di serie temporali minime, per qualsiasi timeframe? Uso CopyRates(sym,PERIOD_M1,...), qual è il modo migliore, qual è il vostro consiglio?

Se avete bisogno di più barre contemporaneamente, non troverete niente di meglio. E penso che sia meglio ricevere i valori di una barra per mezzo di CopyRates

 
Alexey Viktorov:

Se avete bisogno di più barre contemporaneamente, non troverete niente di meglio. E secondo me è meglio ottenere i valori di una singola barra tramite CopyRates

D'altra parte, non posso rimuovere OnCalculate() dall'indicatore a causa della sua inutilità. Si scopre che si ottengono gli stessi dati due volte?
 
Vladimir M.:
OnCalculate() non può essere rimosso dall'indicatore perché non è necessario. Si scopre che si ottengono gli stessi dati due volte?

È possibile farne a meno se OnTick() è presente?

 
Vladimir M.:
D'altra parte, non potete rimuovere OnCalculate() dall'indicatore perché non è necessario. Si scopre che si ottengono gli stessi dati due volte?

Beh, se non ne hai bisogno, puoi usare la seconda variante

int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   );
 
Igor Zakharov:

È possibile farne a meno se OnTick() è presente?

Dubito che sia possibile, ma non ci proverò più. E la documentazione dice:

"...L'evento NewTick viene generato solo per gli Expert Advisor quando viene ricevuto un nuovo tick per un simbolo, al cui grafico è collegato l'Expert Advisor. È inutile definire la funzione OnTick() in un indicatore o script personalizzato, poiché l'evento NewTick non viene generato per loro...".