Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Visualizzazioni:
238
Valutazioni:
(35)
Pubblicato:
Aggiornato:
\MQL5\Scripts\
stoken.mq5 (24.04 KB) visualizza
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Script con una classe per la risoluzione di espressioni matematiche e logiche specificate tramite stringa.

Lo script contiene due classi: cTokenBase e cToken, che è un membro della classe cTokenBase. Le classi non sono state trasferite in un file separato, poiché per il loro utilizzo pratico è necessario apportare alcune modifiche alla classe cTokenBase (ne parleremo più avanti).

Sono supportate tutte le funzioni matematiche del linguaggio MQL5: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, pow, rand, round, sin, sqrt, tan.

Sono supportate le operazioni aritmetiche e logiche: ;/, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.

Gli argomenti di un'espressione possono essere numeri, compresi quelli con separatore decimale (punto), variabili utente e array utente. Quando si utilizzano variabili utente e array utente, è necessario implementare le funzioni per recuperare i valori di tali variabili e array.

Le funzioni per il recupero dei valori delle variabili e degli array definiti dall’utente vengono aggiunte alla classe cTokenBase; proprio a questo scopo è stata effettuata la suddivisione in due classi: la classe cToken viene utilizzata senza modifiche, mentre nella classe cTokenBase si trovano le funzioni per il recupero dei valori delle variabili e degli array.

I nomi delle variabili e degli array sono costituiti da lettere (la maiuscola o minuscola non ha importanza, così come non ha importanza il registro dell’intera espressione); gli elementi degli array sono identificati da un numero tra parentesi quadre, ad esempio: e[0], e[1], f[0], f[1].

Esempio:

Operazioni aritmetiche

Risultato delle operazioni aritmetiche

Procedura di modifica della classe cTokenBase

1. Registrare il nome di una variabile o di un array. La registrazione viene effettuata nella funzione UsersVariables(). All’interno della funzione vengono assegnati i valori alle variabili UserVariables e UserArrays; vengono assegnati valori di tipo stringa, ovvero elenchi di variabili separati dal separatore ";".

      void UsersVariables()
      {
         UserVariables="a;b;c;d"; // elenco delle variabili utente
         UserArrays="e;f";       // elenco degli array utente  
      } 

2. Nella funzione UserFunc(string FuncName) aggiungere la chiamata a una determinata funzione con l’argomento corrispondente.

      string UserFunc(string FuncName)
      {
         if(FuncName=="a")return(a()); 
         if(FuncName=="b")return(b());
         if(FuncName=="c")return(c());
         if(FuncName=="d")return(d());
         Alert("Funzione per la variabile "+FuncName+"non specificata");
         return("0");
      }

3. Scrivere le funzioni per ciascuna delle variabili utente:

      string a()
      {
         return("1");
      }
      string b()
      {
         return("2");
      }
      string c()
      {
         return("3");
      }
      string d()
      {
         return("4");
      } 

4. Nella funzione UserArray(string ArrName, int aIndex) aggiungere la chiamata a una determinata funzione con il primo argomento corrispondente (la variabile ArrName).

La variabile aIndex determinerà l'indice dell'elemento dell'array utente.

      string UserArray(string ArrName,int aIndex)
       {
         if(ArrName=="e")return(e(aIndex));
         if(ArrName=="f")return(f(aIndex));
         Alert("Funzione per un array"+ArrName+"non specificata");
         return("0");
      }

5. Scrivere le funzioni per ciascuno degli array utente:

      string e(int Index)
      {
         string v[]={"1","2","3","4","5","6","7","8","9"};
         return(v[Index]);
      }
      string f(int Index)
      {
         string v[]={"10","20","30","40","50","60","70","80","90"};
         return(v[Index]);
      }

Procedura di utilizzo della classe

1. Dichiarare una variabile esterna in cui l'utente inserirà l'espressione.

input string Expression="inserisci l'espressione";

2. Nella sezione generale del modulo, dichiarare una variabile puntatore al classe:

cToken token;

3. Inizializzare la classe con l'espressione specificata nella variabile Expression.

   token.Init(Expression);

4. Se necessario, chiamare il metodo SolveExpression()

double Value=token.SolveExpression();

La classe può essere utilizzata per risolvere più espressioni; per ciascuna di esse va dichiarata una propria puntatrice alla classe.

cToken token1;
cToken token2;
cToken token3;
cToken token4;

In questo caso, tutte le istanze della classe utilizzeranno le stesse variabili utente e gli stessi array della classe cTokenBase.

La classe può essere modificata per l'utilizzo di altre funzioni.


Aggiunta di nuove funzioni alla classe cToken

  1. Registrare una nuova funzione. La registrazione viene eseguita nella funzione Init() nella variabile "as" (analogamente alla registrazione delle variabili e degli array personalizzati).
  2. Aggiungere il codice per il calcolo della nuova funzione nella funzione SolveFunc(string Func, string & aRes[]). Gli argomenti per il calcolo della funzione si troveranno nell'array aRes[]. Le funzioni possono avere un numero qualsiasi di argomenti.

Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/303

downloadhistory.mq5 downloadhistory.mq5

Lo script carica la cronologia disponibile relativa al simbolo corrente.

Rainbow Multiple Moving Average (RMMA) MT5 Rainbow Multiple Moving Average (RMMA) MT5

L'indicatore Rainbow Multiple Moving Average (RMMA) MetaTrader - è un indicatore molto semplice ma visivamente informativo basato sulla media mobile standard. Disegna 66 linee di media mobile color arcobaleno del tipo e del prezzo preferito direttamente nella finestra principale del grafico. Questo indicatore è disponibile per entrambe le versioni MT4 e MT5 della piattaforma di trading.

Classe CDownLoadHistory Classe CDownLoadHistory

Viene utilizzato per gestire il caricamento della cronologia nelle applicazioni su MQL5.

Telegram To MT5 Copier Telegram To MT5 Copier

TelegramToMT5 è un Expert Advisor per MetaTrader 5 che fa da ponte tra Telegram e MT5 visualizzando i messaggi dei vostri canali, gruppi e chat private di Telegram direttamente sui vostri grafici di trading. È sufficiente creare un bot Telegram, aggiungerlo ai canali/gruppi desiderati e lasciare che l'EA mostri tutti i messaggi come commenti sul grafico in tempo reale.