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

 
Seric29:

Ho un'idea per scrivere una funzione che prenda e sposti un array. La domanda è come rendere questa funzione in modo che essa stessa determini quale tipo di array sia unidimensionale o bidimensionale, in modo da non dover specificare negli argomenti ogni volta che l'array è bidimensionale o regolare. Allo stesso tempo, voglio applicare un modello, in modo da non dover specificare il tipo di array.

Come posso fare in modo da non dover specificare quale tipo di array?

Fare un sovraccarico:

template<typename T>
void MoveArray(T &array1[][]) // 2ух мерный.
{
// тело
}
template<typename T>
void MoveArray(T &array1[])// одномерный.
{
// тело
}
 
Ilya Prozumentov:

Sovraccarico da fare:

La seconda dimensione può essere dinamica?
 
Alexey Viktorov:
La seconda dimensione può essere dinamica?

Non è dinamico, è solo scritto come un argomento ricevuto, basta mettere le parentesi quadre.

 

Come posso implementare in un ciclo (o in qualche altro modo) l'enumerazione delle possibili varianti di condizione?


Per esempio, ci sono 2 indicatori MA e MACD, cioè rappresentano 3 possibili varianti di condizione:

1 opzione - if(iMA ...) {...};

2° scenario - if(iMACD ...) {...};

variante 3 - if(iMA ... iMACD ...) {...};


È facile combinare i parametri di input, ma come combinare le condizioni? Questo è particolarmente utile se ci sono più di 2 indicatori o formule


Dare link ad esempi, se disponibili

 
Alexandr Sokolov:

Come implementare in un ciclo (o in qualche altro modo) l'enumerazione delle possibili varianti di condizione?

Se ho capito bene, la risposta si trova nel topic.

 

Ciao di nuovo, di nuovo non capisco qualcosa di ovvio.

Quindi come passare un array a una funzione?

double b[5]={1,2,3,4,5};
void OnStart()
  {
//---
Func(b[]);

  }
//+------------------------------------------------------------------+
void Func(double &a[])
      {
         Alert(a[3]);
      }

Errori:
']' - espressione prevista
'b' - conversione dei parametri non consentita

Supponiamo che io sappia come eliminare il primo errore:

Func(b[3]);

Ma allora cosa, passerà solo il terzo elemento? Non ha senso.
Come posso passare l'array nel suo insieme?
Grazie.

 
Mikhail Sobolev:

Ciao di nuovo, di nuovo non capisco qualcosa di ovvio.

Quindi come passare un array a una funzione?

Errori:
']' - espressione prevista
'b' - conversione dei parametri non consentita

Supponiamo che io sappia come eliminare il primo errore:

Ma allora cosa, passerà solo il terzo elemento? Non ha senso.
Come posso passare l'array nel suo insieme?
Grazie.

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

Si prega di spiegare la meccanica di inizio variabile


Sembra che ci siano informazioni su questo linkhttps://www.mql5.com/ru/docs/basis/function/events, ma o non le capisco o non le ho trovate. Non riesco a capire qual è il valore predefinito all'inizio e come cambia man mano che i cicli negli indicatori passano


Per esempio so che return() all'interno della funzione OnCalculate() assegna il valore di ritorno alla variabile prev_calculated e sarà usato nei calcoli alla prossima chiamata di OnCalculate(), cioè al prossimo tick


Per favore, descrivete con le stesse semplici parole la meccanica della variabile inizia all'interno della funzione OnCalculate()

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 

Buon pomeriggio.

Potete dirmi perché la funzione OnTick non scrive i dati nel file usando questo codice:

//=== scrivere i dati nel file ===

h1=FileOpen("test_bar.csv",FILE_CSV|FILE_WRITE|FILE_READ,",");

FileSeek(h1, 0, SEEK_END);

FileWrite(h1, TimeToStr(Time[1],TIME_DATE|TIME_MINUTES),i,Open[1],High[1],Low[1],Close[1], Parabola57Up, ");

FileClose(h1);


E questo durante i test di storia. Quando l'Expert Advisor lavora online, continua a registrare.

Grazie

 
Alexandr Sokolov:

Come posso implementare in un ciclo (o in qualche altro modo) l'enumerazione delle possibili varianti di condizione?


Per esempio, ci sono 2 indicatori MA e MACD, cioè rappresentano 3 possibili varianti di condizione:

1 opzione - if(iMA ...) {...};

2° scenario - if(iMACD ...) {...};

variante 3 - if(iMA ... iMACD ...) {...};


È facile combinare i parametri di input, ma come combinare le condizioni? Questo è particolarmente utile se ci sono più di 2 indicatori o formule


Datemi qualche link di esempi se li avete.

Voglio fare un'auto-ottimizzazione, ma non solo attraverso i parametri di input degli indicatori. Lo capisco

Ma come fare illoopingdelle condizioni? Per esempio, ci sono 3 indicatori (non consideriamo la selezione dei parametri di input nel ciclo per semplicità) e sono 7 possibili combinazioni di condizioni/combinazioni

Per esempio, le prime tre condizioni hanno un indicatore
1) if(indicatore #1 ...) {...};
2) if(indicatore #2 ...) {...};
3) if(indicatore #3....) {...};

Le seconde tre condizioni su due indicatori sono
4) if(#1 ... && #2 ...) {...};
5) if(#1 ... && #3 ...) {...};
6) if(#2 ... && #3 ...) {...};

E nell'ultima settima condizione tutti e tre gli indicatori disponibili
7) if(#1 ... && #2 ... && #3 ...) { ...};

E se è anche possibile, sarebbe bene mettere in loop l'enumerazione delle condizioni logiche. Per esempio, non scrivere && || > < == e così via, ma loop

. Sarebbe bello se potessimo scrivere ogni possibile variante manualmente e l'EA combinasse e controllasse tutte le possibili varianti dei parametri di input, indicatori combinati o individuali e condizioni logiche.