Discussione sull’articolo "Manuale MQL5: Controlli della finestra secondaria dell'indicatore - Pulsanti" - pagina 7
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
È così sicuro che il suo articolo sia perfetto?
Mi fa molto piacere che lo abbia letto.
Sarò lieto di rispondere a tutte le domande nell'apposito thread.
===
Per evitare inutili fraintendimenti, non ho nulla contro Anatoly! Complimenti a lui per l'articolo! Ma è necessario rispondere alle domande...
Mi scusi, per caso la sto distraendo dallo scrivere un altro tutorial o una ricetta?
In caso contrario, continuiamo a parlare del tuo articolo sul controllo nella sottofinestra dell'indicatore. Quindi, proponi una soluzione di massa (o un'idea) su come realizzare un comodo menu in un indicatore. Bene, lo scopo dell'articolo è molto valido! Ma come può un programmatore "principiante" utilizzare tutto questo arsenale? Dove collocare le funzioni personalizzate? Dimostratelo con un esempio. E allo stesso tempo spiegare cosa è necessario correggere nel codice per utilizzare, ad esempio, 5 pulsanti? Consideratela una domanda da principiante.
No, non lo sei. Non sto ancora scrivendo nulla. Devo riposare almeno un giorno all'anno. Riposare e basta non è interessante, soprattutto non per molto tempo. )
Non è una decisione di massa e non ne ho scritto. Non attribuiamo a qualcosa che non è successo. Già all'inizio della discussione è stato detto che questa non è una soluzione universale, ma un caso particolare. A mio parere, è un buon esempio per un principiante per esercitarsi. E non per ottenere una soluzione già pronta gratuitamente e correre, con la bocca aperta in un ampio sorriso, incontro al sole. ) Avete capito? Vorrei un esempio così semplice e chiaro proprio all'inizio dell'apprendimento della programmazione. Soprattutto quando questo è il primo linguaggio di programmazione della vostra vita e prima di allora l'attività di tutta la vostra vita era in un campo completamente diverso, in nessun modo collegato ad esso.
Per creare 5 pulsanti, in questo caso, dobbiamo modificare la dimensione degli array ed escludere gli elementi non necessari quando dichiariamo gli array per i nomi degli oggetti-pulsanti, il testo visualizzato nei pulsanti e gli stati dei pulsanti.
Esiste un array di stati dei pulsanti, quindi lo stesso principio può essere utilizzato per verificare quale pulsante è stato premuto e, invece di cambiare semplicemente il colore del pulsante, eseguire qualche altra azione (richiesta dall'utente). Può trattarsi, ad esempio, di funzioni di trading (e non solo): cancellazione di tutti gli ordini in sospeso, chiusura di tutte le posizioni, ecc. Le idee sono infinite. E se non ci sono idee, allora avete scelto il tipo di attività sbagliato. )
Per implementare tutto ciò, è necessario creare un altro array, che sarà inizializzato con gli identificatori di un'enumerazione personalizzata (anch'essa da creare), ad esempio con il nome ENUM_SCRIPT. Gli identificatori verranno poi richiamati, ad esempio: SCRIPT_01 =0, SCRIPT_02 =2, ecc. Sempre nel ciclo, quando si controlla se il pulsante sul pannello è premuto, è necessario determinare quale identificatore è legato al pulsante premuto e lo stato attuale del pulsante, per poi passare la funzione corrispondente al programma per l'esecuzione.
Non mostrerò di proposito un esempio di codice. Lasciate che sia un compito a casa per i principianti. )
Ho apportato le modifiche come mi hai detto:
E questo è ciò che ho ottenuto sullo schermo:
Come posso risolvere il problema? (Sono un principiante)
Ho apportato le modifiche come mi hai detto:
E questo è ciò che ho ottenuto sullo schermo:
Come posso risolvere il problema? (Sono un principiante)
In questo modo:
Oh, fantastico! Funziona.
Ma non capisco come collegare le mie funzioni ai pulsanti. Mostratemi un esempio.
Oh, fantastico! Funziona.
Ma non capisco come collegare le mie funzioni ai pulsanti. Mostratemi un esempio.
Bene, continuiamo il gioco del "principiante" iniziato da voi. )
A che punto sei bloccato? Mostrate un tentativo di comprensione del punto attuale. Creare un'enumerazione con cinque identificatori e un array ai cui elementi devono essere assegnati tali identificatori.
Che cosa facciamo adesso?
Che cosa facciamo adesso?
Questo è il tipo di array di cui avete bisogno:
//--- Script ENUM_SCRIPT buttons_scripts[NUMBER_BUTTONS_HEIGHT][NUMBER_BUTTONS_WIDTH]= { {SCRIPT_01,SCRIPT_02,SCRIPT_03,SCRIPT_04,SCRIPT_05} };Quindi è necessario scrivere una funzione come questa:
...e collocare questa funzione in questa parte del codice:
E poi si può pensare a come ottimizzare il codice, se necessario. :)
Questo è il modo in cui lo faccio io.
Il programma che ha attivato il tracciamento all'avvio lo disattiva quando si scarica. Il programma che rimane sul grafico e ha bisogno del tracciamento, controlla se è abilitato e, se è disabilitato, lo abilita.
È auspicabile fornire la propria variante sugli esempi di Expert Advisor e di codice dell'indicatore contenuti nel mio post alla pagina precedente, per escludere l'ambiguità delle affermazioni.
Non è necessario controllare costantemente se qualcuno ha disabilitato il tracciamento degli eventi del mouse. Per essere più precisi, se ci si vuole proteggere da qualsiasi situazione, si può controllare, ma mi sembra eccessivo.
Forse dovremmo suggerire agli sviluppatori di generare CHARTEVENT_CHART_CHANGE quando CHART_EVENT_MOUSE_MOVE cambia? In questo modo sarebbe possibile ripristinare elegantemente l'impostazione necessaria quando l'Expert Advisor è in esecuzione.
Per ora ho questa variante:
Ho creato un indicatore, ma con un parametro: run with EnableMouseDetect = true - controlla il tracking, false - stampa solo il numero di eventi, se il tracking è abilitato.
------------------
Ora ci ho pensato ancora un po' e devo convenire che questa opzione non funziona. Se si esegue prima un programma che traccia il mouse (abilita il tracciamento), poi il secondo (vede quello che è già abilitato) e poi si cancella il primo, si disabilita il tracciamento e il secondo rimane senza niente. In altre parole, dobbiamo trovare una sorta di semaforo per segnalare che il tracciamento è necessario.
E alla luce delle ricerche condotte qui (sul carico del processore) una stampella del genere non è necessaria.
Propongo quindi di votare la mia proposta agli sviluppatori, e l'argomento può essere chiuso.