
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
12. Ottenere/impostare programmaticamente i limiti di valore delcursore e del campo con i pulsanti (_V_MIN, _V_MAX, _V_STEP, _DIGITS).
1. Apriamo una finestra con gli elementi con i parametri di cui sopra:
2. Scriviamo i valori di _V_MIN, _V_MAX, _V_STEP, _DIGITS e li pubblichiamo nel log:
Risultato: i valori delle proprietà dei parametri del cursore vengono registrati.
//---------------------------------------------------------------------------------------------------------------------------------------
3. Ripetiamo l'operazione con il campo con i pulsanti. A differenza dello slider, il campo ha altri confini numerici e il suo tipo di valore è double.
Risultato: ivalori delle proprietà dei parametri del campo con i pulsanti vengono visualizzati nel log.
//---------------------------------------------------------------------------------------------------------------------------------------
4. Impostare altri limiti dell'intervallo dello slider (testato per la prima volta, il risultato è sconosciuto).
Risultato: *trovato unproblema con l'intervallo in numeri negativi (risolto nella prossima versione).
Verifichiamo i limiti positivi dell'intervallo:
Risultato: i limiti dell'intervallo sono stati modificati con successo.
Punto principale: L'intervallo del cursore può essere modificato utilizzando la sua funzione.
**Importante:non è possibile modificare retroattivamente il tipo di valore del parametro da int a double o viceversa.
//-------------------------------------------------------------------------------------------------
Eseguiamo un esperimento simile con il campo di input:
Risultato: funziona come previsto. Il campo con i pulsanti accetta l'intervallo e il passo specificati. Se l'intervallo viene superato, viene segnalato un errore nel log.
//--------------------------------------------------------------------------------------------------
5. Infine, impostiamo il valore_DIGITS sul campo con i pulsanti (lo slider non funzionerà perché il suo tipo di parametro è int):
Risultato:
Risultati:
Questo conclude l'argomento.
13. Interrogazione dello stato degli elementi _GET_STATE.
Spesso si verificano situazioni in cui è necessario ottenere programmaticamente lo stato di uno o più elementi dell'interfaccia. Per risolvere questo problema viene creato l'identificatore _GET_STATE.
//--------------------------------------------------------------------------------------------------------------------
*Importante:la funzione request_GET_STATE restituisce l'indice dello stato corrente dell'elemento.
//--------------------------------------------------------------------------------------------------------------------
L'immagine seguente mostra l'elenco degli stati dell'elemento.
1. identificatori di stato :
(*nellaprossima release, il prefisso v_ sarà sostituito dal prefisso s_)
Indici inviati al log:
Proviamo a interrogare e recuperare gli stati degli elementi:
1. Aprire la finestra e ottenere lo stato iniziale del pulsante "Avvio":
Risultato: si ottiene il valore 15 corrispondente allo stato v_NEUTRAL_STATE.
2. Registriamo gli stati del pulsante alla pressione e al rilascio:
Per fare ciò:
Risultato: sull'evento premuto/rilasciato, l'indice dello stato corrente viene stampato nel log.
Promemoria:
//----------------------------------------------------------------------------------------------------------------
3. Ripetiamo la query con la casella di controllo.
1. Otteniamo lo stato della casella di controllo sull'evento di apertura della finestra:
Risultato: si ottiene il valore 15, corrispondente allo stato neutro v_NEUTRAL_STATE (dove si trova la casella di controllo).
2. Successivamente, interroghiamo gli stati della casella di controllo sull'evento di pressione e rilascio.
Per fare questo:
Risultato: otteniamo i valori 66 (v_NEUTRAL_HIGHLIGHTED) e 67 (v_ACTIVATED_HIGHLIGHTED), che significano stato neutro evidenziato e stato premuto evidenziato.
//-----------------------------------------------------------------------------------------------
Con questo si conclude la prima parte dell'argomento.
Nella seconda parte, verranno restituiti gli stati dell'elenco a discesa D_LIST, del cursore H_SLIDER e dei campi di input S_EDIT e EDIT.
13. Richiesta di stato _GET_STATE.
Parte 2: Ottenere gli stati degli elementi D_LIST, H_SLIDER, EDIT, S_EDIT.
Nell'ultima parte abbiamo visto come restituire programmaticamente gli stati del pulsante BUTTON e della casella di controllo CHECKBOX . È stata utilizzata la query _GET_STATE ed è stato mostrato l'elenco dei nomi degli stati restituiti dalle funzioni. Ci sono sei nomi in tutto, ognuno dei quali inizia con il prefisso v_. (abbreviazione di value, che sarà sostituito da s_ - abbreviazione di state).
Ricordiamo gli indici di stato:
In questo caso, i numeri di indice specifici non sono importanti. Quando l'utente deve inserire un particolare stato in una condizione, utilizza un identificatore.
Esempio 1:
Esempio 2:
//-----------------------------------------------------------------------------------------------------------------
*Molto importante:
Vi spiego la differenza essenziale tra gli stati v_NEUTRAL_STATE e v_NEUTRAL_HIGHLIGHTED, e tra v_ACTIVATED_STATE e v_ACTIVATED_HIGHLIGHTED:
v_NEUTRAL_STATE - это нейтральное состояние в котором элемент находится неопределенное время. v_NEUTRAL_HIGHLIGHTED - это нейтральное состояние в которое элемент перешел ТОЛЬКО ЧТО, после отжатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.
lo stesso vale per lo stato attivato:
v_ACTIVATED_STATE - это активированное состояние в котором элемент находится неопределенное время. v_ACTIVATED_HIGHLIGHTED - это активированное состояние в которое элемент перешел ТОЛЬКО ЧТО, после нажатия пользователя. Поэтому элемент подсвечен - HIGHLIGHTED.
Questa differenza fa la differenza.
Attualmente, il pulsante e alcuni altri elementi restituiscono solo v_NEUTRAL_STATE e v_ACTIVATED_STATE e non restituiscono gli stati HIGHLIGHTED come le caselle di controllo. Ciò significa che l'utente non ha modo di sapere se gli elementi sono stati cliccati/scliccati proprio ora o quando, un tempo indefinito. Tuttavia, nel file API l'utente può individuare il momento in cui sono stati premuti. Sì, ma questa funzione non è ancora disponibile nel resto del programma. Nella prossima versione, a tutti gli elementi interattivi verrà aggiunto il ritorno allo stato HIGHLIGHTED. In questo modo, da qualsiasi punto del programma, l'utente sarà in grado di sapere se un elemento è stato appena premuto/non premuto o se è rimasto nel suo stato per molto tempo.
//----------------------------------------------------------------------------------------------------------
Passiamo alla parte pratica:
1. Aprire le finestre:
2. Otteniamo gli stati degli elementi:
Risultato: tutti gli elementi del cnome D_LISThanno indice di stato 15 (stato neutro v_NEUTRAL_STATE). D_LIST ha restituito un errore (-1).
Motivo: la restituzione degli stati di questo elemento non è specificata nella funzione centrale. Difetto tecnico.Sarà corretto nella prossima versione.
Poiché la funzione D_LIST non restituisce ancora l'indice di stato, concentriamoci su tre elementi i cui stati sono stati ricevuti con successo: EDIT , S_EDIT e H_SLIDER.
Cosa controllare:
Abbiamo appena verificato che le funzioni EDIT, S_EDIT e H_SLIDER restituiscono un indice dello stato neutro all'apertura della finestra. Resta da verificare gli altri stati. Poiché questi tipi di elementi, in teoria, possono trovarsi solo negli stati neutro, bloccato ed evidenziato (a differenza di pulsanti e caselle di controllo, che hanno più stati), dobbiamo verificare i seguenti due possibili stati: bloccato ed evidenziato. Esiste anche un gruppo di stati"sotto il cursore", che non voglio ancora aggiungere per evitare confusione. Nelle prossime versioni creerò un prefisso speciale che aprirà un elenco individuale dei possibili stati di ogni tipo di elemento. Questo faciliterà il lavoro programmatico.
Come controlleremo il ritorno degli stati bloccati ed evidenziatiEDIT, S_EDIT e H_SLIDER:
1. Individuare la casella di controllo "Imposta un'opzione" nel file API e scrivere il blocco/sblocco degli elementiEDIT, S_EDIT e H_SLIDER all'interno del suo caso.Quindi, produrre gli stati tramite Print().
Risultato:
//--------------------------------------------------------------------------------------------------
2. Secondo compito:
Iniziare:
Risultato:
//-----------------------------------------------------------------------------------------------------
Risultati:
In generale, i risultati possono essere valutati come soddisfacenti. Gli elementi restituiscono gli indici degli stati neutri e bloccati come previsto. Tuttavia, ci sono alcune carenze:
Conclusioni:
Potenzialmente, è possibile aggiungere nuovi stati agli elementi. Ad esempio, Neutro puntato e Attivato puntato ( neutro sotto il cursore e attivato sotto il cursore), ma c'è una questione di praticità e di reale necessità dell'utente di avere queste caratteristiche. Finché non ci saranno queste esigenze, non aggiungerò nuovi stati.
Questo è il termine di questo argomento.
Passiamo ai seguenti argomenti.
Ho passato l'ultima settimana a cercare come scrivere un'interfaccia utilizzando WinForm e incorporarla nei grafici MT5. Oggi l'ho finalmente realizzato.
Un elenco generale di argomenti da considerare:
1. Orientamento nell'elenco di intellisense e selezione della funzione della finestra giusta.
2. Apertura e chiusura programmatica delle finestre.
3. Apertura di un elenco di elementi di finestra disponibili in modo programmatico.
4. Apertura di un elenco di proprietà dei singoli elementi.
5. Parsing del nome dell'elemento e della funzione wrapper della finestra.
6. Restituzione del valore di un parametro dell'elemento a una variabile del suo tipo.
7. Impostazione di valori per parametri di elementi di tipo diverso.
8. Restituzione, modifica e inoltro di valori tra parametri di elementi diversi. Considerare diversi tipi di elementi e valori e testare l'inoltro tra diversi tipi di elementi in diverse finestre.
9. Restituzione del valore precedente (_V_LAST). Quando e in quali casi è richiesto l'ultimo valore (da non confondere con il valore corrente).
10. Test per l'impostazione degli stati ON, OFF, LOCK_ON, LOCK_OFF, LOCK, UNLOCK per diversi tipi di elementi.
11. Test di binding e sincronizzazione dei valori di modifica degli elementi: ad esempio, campo di input con pulsanti e cursori. In modo che quando il valore di un elemento (manuale o software) cambia, il valore del secondo elemento cambia di conseguenza.
12. Test dell'ottenimento/impostazione da parte del software dei limiti dell'intervallo dello slider e del campo con pulsanti (proprietà _V_MIN, _V_MAX, _V_STEP, _DIGITS).
13. Test del funzionamento dell'interrogazione sullo stato dell'elemento (_GET_STATE).
14. Collegamento dei colori del testo e dei bordi ai limiti dei valori distanziati.
15. Orientamento nel file API.
16.Implementazione di una semplice logica di programma per l'aspetto delle finestre di messaggio e di avviso.
//------------------------------------------
Gli argomenti presi in considerazione sono evidenziati in giallo.
Per il momento ne rimangono alcuni da considerare:
14. Collegamento dei colori del testo e delle cornici ai limiti dei valori distanziati.
15. Orientamento nel file API.
16.Implementazione di una semplice logica di programma per l'aspetto delle finestre di messaggio e di avviso.
//------------------------------------------
Suggerisco di collegare l'argomento 14 con l'argomento 16. Il superamento dei limiti impostati dei valori dei parametri causerà prima segnali sotto forma di cambiamento di colore di parti degli elementi (testo, base, cornice, striscia, ecc.), poi l'apertura di una finestra di dialogo e quindi di una finestra di avviso. Allo stesso tempo, la finestra di avviso bloccherà le modifiche ai valori degli elementi finché non verrà chiusa manualmente dall'utente.
Inoltre, vorrei aggiungere un tema all'elenco:
17. annullare le impostazioni inserite quando l'utente fa clic sul pulsante "Annulla".
Molto tempo fa è stata sviluppata e in parte testata la tecnologia che consente di annullare le impostazioni dell'utente facendo clic sul pulsante "Annulla". Al momento, non si sa quanto la precedente funzionalità funzioni. Pertanto, è necessario eseguire un test.
A causa della sovrapposizione di argomenti, l'ordine di revisione sarà il seguente:
14. Implementazione della protezione dei confini dei parametri sfalsati:
15. Esaminiamo in dettaglio la nuova stampa del file API.
//----------------------------------------------------------------------------------------------------
Successivamente, raccoglierò tutti i bug o i difetti riscontrati e preparerò un elenco di attività per la prossima release.
Dopo la prossima versione con correzioni e aggiunte, mi concentrerò sulle tabelle, in cui vedo una delle principali direzioni di ulteriore sviluppo del motore.
Ho passato l'ultima settimana a imparare come scrivere un'interfaccia utilizzando WinForm e inserirla nei grafici MT5. Oggi ho finalmente capito come fare.
E come farete a far comunicare l'interfaccia con il vostro codice di programmazione?