Unisciti alla nostra fan page
- Visualizzazioni:
- 238
- Valutazioni:
- Pubblicato:
- Aggiornato:
-
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:


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
- Registrare una nuova funzione. La registrazione viene eseguita nella funzione Init() nella variabile "as" (analogamente alla registrazione delle variabili e degli array personalizzati).
- 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
Lo script carica la cronologia disponibile relativa al simbolo corrente.
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
Viene utilizzato per gestire il caricamento della cronologia nelle applicazioni su MQL5.
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.