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:
114
Valutazioni:
(35)
Pubblicato:
\MQL5\Scripts\
stoken.mq5 (23.02 KB) visualizza
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Uno script con una classe per la risoluzione di espressioni matematiche e logiche date da una stringa.

Lo script contiene due classi cTokenBase e cToken, che è un membro della classe cTokenBase. Le classi non sono state inserite in un file separato, perché per la loro applicazione pratica è necessario apportare alcune modifiche alla classe cTokenBase (di cui si parla più avanti).

Sono supportate tutte le funzioni matematiche di 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 un separatore decimale (con un punto), variabili utente e array utente. Se si utilizzano variabili e array personalizzati, è necessario aggiungere funzioni per ottenere i valori di tali variabili e array.

Le funzioni per ottenere i valori delle variabili e degli array dell'utente vengono aggiunte alla classe cTokenBase; in realtà, a questo scopo viene effettuata una divisione in due classi: la classe cToken viene utilizzata senza modifiche e nella classe cTokenBase sono presenti le funzioni per ottenere i valori delle variabili e degli array.

I nomi delle variabili e degli array sono costituiti da lettere (le maiuscole non contano, così come non contano le maiuscole dell'intera espressione), gli elementi degli array sono definiti da un numero tra parentesi quadre, ad esempio: e[0], e[1], f[0], f[1].

Esempio:

Operazioni aritmetiche

Risultato delle operazioni aritmetiche

L'ordine di modifica della classe cTokenBase

1. Registrare il nome della variabile o dell'array. La registrazione viene eseguita nella funzione UsersVariables(). La funzione assegna i valori alle variabili UserVariables e UserArrays, assegnando valori stringa - elenchi di variabili attraverso il separatore ";".

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

2. Nella funzione UserFunc(stringa FuncName) aggiungere una chiamata a una determinata funzione all'argomento corrispondente della funzione.

      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 definito");
         return("0");
      }

3. Scrivere le funzioni per ciascuna variabile 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), scrivere una chiamata a una funzione specifica al primo argomento corrispondente della funzione (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 l'array "+ArrName+" non definito");
         return("0");
      }

5. Scrivere le funzioni per ciascuno degli array personalizzati:

      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]);
      }

L'ordine di utilizzo della classe

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

input string Expression="entrare nell'espressione".;

2. Nella sezione generale del modulo, dichiarare un puntatore alla classe:

cToken token;

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

   token.Init(Expression);

4. Richiamare il metodo SolveExpression() secondo le necessità.

double Value=token.SolveExpression();

Una classe può essere utilizzata per risolvere più espressioni e per ognuna di esse viene dichiarato un puntatore di classe diverso.

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 perfezionata per utilizzare qualsiasi altra funzione.


Aggiunta di nuove funzioni alla classe cToken

  1. Registrare una nuova funzione. La registrazione viene eseguita nella funzione Init() nella variabile "as" (simile alla registrazione delle variabili utente e degli array).
  2. Aggiungere il codice per il calcolo della nuova funzione alla funzione SolveFunc(string Func,string & aRes[]). Gli argomenti per il calcolo della funzione si trovano 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

scaricare la storia.mq5 scaricare la storia.mq5

Lo script carica la cronologia disponibile per il personaggio 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 organizzare il caricamento della cronologia nei programmi 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.