Il mio approccio. Il nucleo è il motore. - pagina 99
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
In breve, ogni volta che si cambia il valore di un parametro utente, questo valore dovrebbe essere convertito in una variabile unificata e immediatamente salvato in un array di byte condiviso, che si può poi convertire in uint e scrivere nella risorsa.
Dovete avere un parametro utente all'interno della struttura di unione. Quando si cambia il parametro, la struttura cambierà con un cambiamento simultaneo dell'array int
i[2] è una risorsa utente che viene letta da un altro programma.
Con una linea cc.width = 200 cambierete:
- Il parametro responsabile della larghezza,
- La struttura che contiene questo parametro,
- L'array della risorsa che viene letta dall'altro programma.
E non c'è nessuna conversione e copia qui, solo la mappatura.Posso cambiare le funzioni wrapper nel file Connection Properties e convertire ogni valore utilizzabile nella variabile corrispondente dell'unione, e fare un array di byte al volo. Ma, i valori di testo che devono essere passati, convertiti in array di byte usandoStringToChar().
Tuttavia, questo rimuove il punto di usare un'unione. Dopo tutto, se devocomunque usareStringToChar(), perché non assemblare tutto in una stringa e poi tradurre l'intera stringa in byte usandoStringToChar()?
Dovete avere un parametro utente all'interno della struttura di unione. Quando si cambia il parametro, la struttura cambierà con un cambiamento simultaneo dell'array int
i[2] è una risorsa utente che viene letta da un altro programma.
Con una linea cc.width = 200 cambierete:
- Il parametro responsabile della larghezza,
- La struttura che contiene questo parametro,
- L'array della risorsa che viene letto da un programma di terze parti.
E non c'è nessuna conversione o copia qui, solo la mappatura.Vasily, dimentichi che stiamo parlando di una comunicazione a due vie. Nel mio motore, posso legare tutto alle unioni, ma non posso essere responsabile del codice utente. Posso solo inventare dei wrapper e metterli nei plugin.
Dov'è la garanzia che l'utente userà anche i sindacati? Così, quando chiama le mie funzioni wrapper, devo prendere io stesso il suo valore e fare il cast a una delle mie variabili dalle mie unioni all'interno del suo file plugin.
Posso cambiare le funzioni wrapper nel file Connection Properties e convertire ogni valore utilizzabile nella variabile corrispondente dell'unione, e fare un array di byte al volo. Ma, i valori di testo che devono essere passati, convertiti in array di byte usandoStringToChar().
Tuttavia, questo rimuove il punto di usare un'unione. Dopo tutto, se devocomunque usareStringToChar(), perché non assemblare tutto in una stringa e poi tradurre l'intera stringa in byte usandoStringToChar()?
Perché avrete un doppio parsing. Converte tutto in una stringa, è molto lento. Poi si analizza la stringa in un array, il che è molto veloce. Poi lo assemblate di nuovo in una stringa - è molto veloce. Poi si analizza la stringa nei tipi giusti - questo è molto lento.
Ok, ma che dire dei testi?
Devono essere convertiti in byte tramiteStringToChar(). Non si può usare l'unione, giusto?
Sì, bisogna tradurli, ma è veloce, a differenza del parsing.
Per esempio:
Ecco la funzione wrapper nel file del plug-inConnection Properties:
Questa funzione si chiama così:
Cioè, l'utente imposta il valore diClose[2] in una cella della tabella.
Quindi, all'interno della sua funzione wrapper nel suo programma, posso rappresentare il valore(Close[2]) come un array di char.
Ma, nella stessa cella, l'utente può inviare il valore "Ciao! :)", e allora cosa fare?
Oh, Peter, hai iniziato con il linguaggio di programmazione sbagliato. Avresti dovuto imparare qualcosa di non strettamente digitato.
In generale, ti ho capito, hai inventato il tuo linguaggio non tipizzato basato su MQL. Hai aggirato la sua rigida digitazione usando le stringhe. Questa è una manovra!
Oh, Peter, hai iniziato con il linguaggio di programmazione sbagliato. Avresti dovuto imparare qualcosa di non strettamente digitato.
In generale, ti ho capito, hai inventato il tuo linguaggio non tipizzato basato su MQL. Hai aggirato la sua rigida digitazione usando le stringhe. Questa è una manovra!
Si,)) Una mossa con un cavaliere!
Se state usando una tabella, dovete decidere se volete che i dati nella tabella siano strettamente numerici o testuali. Se testo, si passa in stringhe. Se è reale, la vostra funzione deve assomigliare a questa: