Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1240

 
Come aumentare il numero di parametri ottimizzabili nel tester? Forse ci sono dei modi virtuali in MQL, forse in Python o da qualche altra parte? Datemi qualche indicazione, per favore...
 
Vladimir M.:
Come aumentare il numero di parametri ottimizzati nel tester? Forse ci sono dei modi virtuali in MQL, forse in Python o da qualche altra parte? Datemi qualche suggerimento, per favore...

OnTester()

 
Vladimir Karputov:

Prendete un esempio dal riferimento! Quante volte? Non usate i vostri costrutti inventati se non capite molto del loro significato. Usare i costrutti standard - capire come funzionano. Dopo di che, buttate i vostri costrutti nella spazzatura.


E usa 'MQL Wizard' per generare un modello.

Codice

e risultato


Vladimir, ho la sensazione che stiano cercando di parlare tra un muto e un sordo.

  1. Ho usato il modello'MQL Wizard'.
  2. Perché si preoccupa delle mie costruzioni? Non sono peggio dei tuoi, soprattutto per le mie esigenze!

if(rates_total - prev_calculated > 1)

Quando eseguo l'indicatore rates_total = ХХХХ (diciamo ХХХХ = 1000), prev_calculated = 0, rates_total - prev_calculated (1000 - 0 = 1000) è maggiore di 1! La condizione ha funzionato!

Prossimo

if(prev_calculated == 0)

Quando si avvia l'indicatore, prev_calculated = 0. La condizione ha funzionato!

E poi spiegami come il tuo differisce

      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];

dal mio

            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];

considerando che il mioArraySetAsSeries è impostato su true?

Perché i vostri candelabri sono resi e i miei no?

Sono quasi 2 settimane che ti chiedo di spiegarmelo! Non c'è bisogno di mandarmi a leggere la documentazione! La conosco quasi a memoria. Dimmi solo perché? O mi spieghi, o mi dici che non lo sai, o mi dici che non vuoi rispondere!

Oh merda, hai dimenticato il titolo di questo thread?

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


Che ne dite di questo? Avete tutti gli indici assegnati a un indice zero nei buffer.

            barsBuffer1[i] = newCandles_Open[i];
            barsBuffer2[i] = newCandles_High[i];
            barsBuffer3[i] = newCandles_Low[i];
            barsBuffer4[i] = newCandles_Close[i];
 
Сергей Таболин:


È quello che sto cercando di insegnarti: io continuo a darti degli esempi, ma tu continui a sbattere la testa contro il muro.

Per l'ultima volta: buttate i vostri disegni nella spazzatura e usate quelli standard. Poi potete chiedere: come disegnare (per esempio, le cinque candele più a destra del grafico) secondo le vostre regole. Ma non prima di aver cestinato i vostri costrutti, non prima di aver smesso di usare l'incremento del prefisso invece dell'incremento del postfisso...

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


Esempio

//+------------------------------------------------------------------+
//|                                                 Draw Candles.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot USDJPY
#property indicator_label1  "USDJPY"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double   Buffer1[];
double   Buffer2[];
double   Buffer3[];
double   Buffer4[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Buffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Buffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Buffer3,INDICATOR_DATA);
   SetIndexBuffer(3,Buffer4,INDICATOR_DATA);
//--- the 0 (empty) value will mot participate in drawing
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//---
   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[])
  {
   if(rates_total<10)
      return(0);
//---
   int limit=prev_calculated-5;
   if(prev_calculated==0)
     {
      limit=rates_total-5;
      for(int j=0; j<limit; j++)
        {
         Buffer1[j]=0.0;
         Buffer2[j]=0.0;
         Buffer3[j]=0.0;
         Buffer4[j]=0.0;
        }
     }
   for(int i=limit; i<rates_total; i++)
     {
      if(i<rates_total-5)
        {
         //--- затираем всё, что левее пяти свеч (сюда попадаем при рождении нового бара)
         Buffer1[i]=0.0;
         Buffer2[i]=0.0;
         Buffer3[i]=0.0;
         Buffer4[i]=0.0;
         continue;
        }
      //--- четыре левые свечи будут перерисовываться на каждом тике - это не оптимально,
      //--- но пригодится в будущем (если для них потом подсовывать тики)
      //--- пятая свеча (она же самая правая на графике) реагирует онлайн на изменение текущих цен
      Buffer1[i]=open[i];
      Buffer2[i]=high[i];
      Buffer3[i]=low[i];
      Buffer4[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Risultato:


File:
 
Vladimir Karputov:

È quello che sto cercando di insegnarti: io continuo a darti degli esempi, ma tu continui a sbattere la testa contro il muro.

Per l'ultima volta: buttate i vostri disegni nella spazzatura e usate quelli standard. Poi potete chiedere: come disegnare (per esempio, le cinque candele più a destra del grafico) secondo le vostre regole. Ma non prima di aver buttato via i vostri costrutti, non prima di aver smesso di usare l'incremento del prefisso invece dell'incremento del postfisso...

Cos'hai contro di essa? Perché non lo capite? Uso spesso questo ciclo, per esempio

for(int i PositionsTotal(); i-- > 0)

e non c'è nessun problema.........

 
Alexey Viktorov:

Cos'è che non ti piace di lui? Perché non lo capite? Io, per esempio, uso spesso questo ciclo

for(int i PositionsTotal(); i-- > 0)

e non c'è nessun problema.........

Che ne dici di provare a leggerlo invece di correre a rispondere? Tu usi (come molti) postfix. E il tuo esempio è postfissato. Non bisogna affrettarsi a rispondere invece di pensare.

 
Youri Lazurenko:
Carico della CPU al 100% e dopo pochi minuti di lavoro il computer si blocca (processore phenom II x4 955 (4 core, 3,2 GHz), il cooler è a ricambio). Dopo due volte ho deciso di non rischiare più. Come deve essere interpretato questo?

Controlla il tuo computer con Aida64 o Linx - se non ci sono problemi con i test della CPU e della memoria e la temperatura è nei limiti normali, allora controlla l'HDD. Generalmente sembra l'alimentatore, se non è stato cambiato per molto tempo, è probabile che sia il problema. Il terminale funziona bene sul secondo phenom.

 
Buon pomeriggio colleghi, sapete se c'è un tale simbolo a forma di trattino orizzontale in una palla, non riesco a trovarlo :-(