Discussione sull’articolo "Come chiamare gli indicatori in MQL5"

 

Il nuovo articolo Come chiamare gli indicatori in MQL5 è stato pubblicato:

Con la nuova versione del linguaggio di programmazione MQL disponibile non solo è cambiato l'approccio alla gestione degli indicatori, ma ci sono anche nuovi modi di creare gli indicatori. Inoltre, hai una maggiore flessibilità lavorando con i buffer dell'indicatore: ora puoi specificare la direzione di indicizzazione desiderata e ottenere esattamente tutti i valori dell'indicatore che desideri. Questo articolo spiega i metodi di base per chiamare gli indicatori e recuperare i dati dai buffer dell'indicatore.

In MQL5 ci sono diversi modi per chiamare gli indicatori e sono per lo più eseguiti utilizzando le funzioni IndicatorCreate() e iCustom(). Inoltre, queste funzioni restituiscono solo l'handle dell'indicatore e, tramite esso, viene svolto ulteriore lavoro sugli indicatori. Dunque, cosa è un handle? Come gestire le funzioni IndicatorCreate() e iCustom()? E in che modo il tuo expert otterrà i dati degli indicatori? Tutte queste domande vengono trattate in questo articolo.

Creazione di un file sorgente

Per iniziare con il nostro expert, creiamo il suo file sorgente. Lo faremo più o meno come nel MetaEditor4 chiamando la procedura guidata MQL5 dal menu File -> Nuovo. Al primo passaggio, seleziona l'Expert Advisor e premi Avanti.


Autore: KlimMalgin

 
articolo utile. grazie mille.
 

Buono ++

Grazie.

 

Spiegare.

In "Ottenere l'handle dell'indicatore utilizzando IndicatorCreate()"

Creare un array

MqlParam params[];      // Array per la memorizzazione dei parametri dell'indicatore

Senza specificare il tipo, quindi modificare il tipo di array secondo necessità.

Come funziona? Può essere utilizzato per qualsiasi struttura o solo per questa? È possibile modificare semplicemente il tipo di un array esistente?

 
L'array di parametri di tipo MqlParam è necessario per la funzione IndicatorCreate() solo quando si crea un handle. Se si desidera modificare qualcosa, è necessario "uccidere" l'handle corrente utilizzando IndicatorRelease e crearne uno nuovo. L'indicatore "cambio motore" in movimento non è previsto.
 

Ma nell'articolo, nel testo.

   ***
   // Impostare il periodo della MA lenta
   params[0].type         =TYPE_INT;
   params[0].integer_value=21;
   ***

e che lo segue.

   ***
   ArrayResize(params,2);
   // Passo
   params[0].type         =TYPE_DOUBLE;
   params[0].double_value = 0.02;
   ***
non viene cancellato nulla, viene cambiato il tipo.....
 
Prendiamo il livello del catering. Un cameriere mette i piatti su un vassoio e porta l'ordine al cliente. Poi mette il cibo di un altro cliente sullo stesso vassoio e porta l'ordine a lui. Questo significa che avete lo stesso pasto dell'altro cliente?
 

Quindi, cene diverse possono essere solo sul vassoio del cameriere. Ok, farò degli esperimenti.

Sono previsti array di tipi misti, come [int][double]?

 
Silent:

Quindi, cene diverse possono essere solo sul vassoio del cameriere. Ok, farò un esperimento.

Non sono previsti array di tipi misti, come [int][double]?

Usate le strutture, vedi l'esempio nella guida - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Un altro esempio mostra come si può organizzare la propria funzione per ottenere la rappresentazione del colore RGB (Red,Green,Blue) dal tipo di colore. Per farlo, creiamo due strutture che hanno la stessa dimensione ma una composizione interna diversa. Per comodità, aggiungiamo alla struttura una funzione che restituisca il colore nella rappresentazione RGB come stringa.

#property script_show_inputs
input color          testColor=clrBlue;// impostare il colore per il test
//--- struttura per la rappresentazione del colore RGB
struct RGB
  {
   uchar             blue;          // componente di colore blu
   uchar             green;         // componente di colore verde
   uchar             red;           // componente di colore rosso
   uchar             empty;         // questo byte non viene utilizzato
   string            toString();    // funzione da ricevere come stringa
  };
//--- funzione per produrre il colore come stringa
string RGB::toString(void)
  {
   string out="("+(string)red+":"+(string)green+":"+(string)blue+")";
   return out;
  }
//--- struttura per memorizzare il colore del tipo incorporato 
struct builtColor
  {
   color             c;
  };
//+------------------------------------------------------------------+
//| Funzione di avvio del programma di script|
//+------------------------------------------------------------------+
void OnStart()
  {
//--- variabile da memorizzare in RGB
   RGB colorRGB;
//--- variabile per la memorizzazione del tipo di colore
   builtColor test;
   test.c=testColor;
//-- convertire due strutture copiandone il contenuto
   colorRGB=test;
   Print("color ",test.c," = ",colorRGB.toString());
//---
  }

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Rosh:

Utilizzare le strutture, vedere l'esempio nella guida - https://www.mql5.com/ru/docs/basis/types/casting#casting_structure:

Capisco più o meno le strutture, mi interessano gli array.

Grazie.

 
Silent:

Le strutture mi sono più o meno chiare, mi interessano gli array.

Grazie.

Creare una struttura e digitare un array di questo tipo.