Praticamente MQL. Pulsante di panico, parte I [Corso di programmazione]
Benvenuti al secondo episodio di MQL Practically! Nella seconda parte del nostro corso, ricominceremo da un foglio bianco e scriveremo una nuova applicazione passo dopo passo. Conosceremo gli elementi che ogni programmatore utilizza nel suo lavoro quotidiano, come funzioni, operatori logici e loop, che è ciò di cui ognuno di voi deve aver sentito parlare, ma non sapevamo cosa sia. Fortunatamente, nella nostra serie, diamo la teoria gustosa e senza esagerare, e ci concentriamo su ciò che è più importante, ovvero programmazione in pratica.
Questa settimana scriveremo la prima parte dell'applicazione "pulsante antipanico"il cui nome credo spieghi già molto. Il compito del nostro programma sarà, dopo aver premuto un pulsante, chiudere immediatamente tutte le posizioni aperte e gli ordini, quando un sudore freddo appare sulla nostra fronte, il mondo diventa silenzioso e l'immagine si restringe a un piccolo campo nebuloso con un tasso tremolante di un dollaro che scorre dopo uno dei simpatici tweet di uno dei i nostri politici preferiti.
Tiriamoci le maniche e accendiamo MetaEditor
Iniziamo creando un file di tipo vuoto nell'editor Perizie detto Panic Button.mq4. Il file sarà nella directory MQL4 \ Esperti. Quindi, metti tutti i file che ti servono oggi nelle cartelle giuste.
Primi personaggi
Cambiamo il codice della nostra applicazione, cioè il file Panic Button.mq4 dal catalogo Esperti. Informiamo il compilatore che usiamo l'ultima sintassi del linguaggio MQL4 digitando:
Tre volte "e"
#includere
Usando la parola chiave #includere possiamo allegare altri file sorgente al tuo codice. Nel file Przydatne_funkcje.mqh abbiamo preparato la funzione necessaria nella parte seguente:
bool Zamknij_pozycje_i_zlecenia (bool tylko_ten_instrument)
Per poter utilizzare il codice aggiuntivo, dobbiamo aggiungerlo al nostro file digitando #includere e il percorso di accesso. Esattamente come nella casella qui sotto.
# Import
parola chiave # Import tuttavia, ci consente di utilizzare librerie esterne. Le librerie sono algoritmi separati e compilati che condividono le loro funzioni e risorse con altri programmi. Di seguito importiamo una libreria chiamata Biblioteka_panic_button.ex4che contiene elementi grafici e funzioni per il nostro pulsante. Tra elementi # Import inseriamo un elenco di definizioni di funzioni che la libreria dovrebbe fornirci.
L'importazione della libreria corretta ha il seguente aspetto:
ingresso
Dopo aver aggiunto i file e le librerie di origine, possiamo procedere alla creazione delle funzioni del nostro programma. Iniziamo aggiungendo la seguente riga:
elemento ingresso informa il compilatore che stiamo creando un parametro che sarà disponibile nella finestra delle impostazioni dell'applicazione e il suo valore dipenderà dalla scelta dell'utente. Il parametro che abbiamo creato prende il valore di tipo bool czyli vero lub falso. L'abbiamo chiamato Tylko_ten_instrument e usando questo nome potremo riferirci al suo valore in futuro, che ci aiuterà a decidere se chiudere tutte le posizioni o solo la posizione dello strumento su cui è in esecuzione il nostro programma.
Prima funzione
Aggiungiamo il seguente snippet di codice al nostro file:
Il precedente record significa che creiamo una funzione chiamata OnInitquesto restituirà i valori del tipo int, questo è un numero intero. Le funzioni restituiscono valori utilizzando una parola chiave ritorno.
Abbiamo detto che usando la parola ritorno la nostra funzione restituisce valori sotto forma di numeri interi. Allora, che cos'è un record misterioso? INIT_SUCCEEDED ? Per la nostra comodità nella lingua ci sono molti valori definiti automaticamente e INIT_SUCCEEDED è solo uno di loro. Sotto il suo nome c'è un numero intero, noto al compilatore come "tutto è ok".
funzione OnInit () fa parte dell'API MQL, ovvero una funzione disponibile come parte della lingua. Le funzioni API MQL sono contrassegnate nel codice on violaceo. Dopo aver avviato l'applicazione, il nostro algoritmo chiamerà automaticamente la funzione OnInit () e lo farà solo una volta, all'inizio, per permetterci di eseguire le operazioni necessarie per gestire e gestire il nostro programma.
Il contenuto della funzione
Tra le parentesi di ogni funzione, inseriamo le istruzioni che una determinata funzione dovrebbe eseguire. La nostra funzione OnInit () contiene già un'istruzione - ritorno INIT_SUCCEEDED;
Espandiamo la funzione della funzione OnInit (), ricordando di codice ritorno INIT_SUCCEEDED; è sempre rimasto nella parte inferiore della funzione, perché vogliamo chiamarlo solo quando tutte le altre istruzioni hanno esito positivo.
Operatore condizionale se
Il codice sopra, usando un operatore condizionale if, controlla se l'ambiente per i nostri esperimenti è sicuro e lavoriamo su un account demo.
Costruzione dell'operatore if è sempre molto simile Un record tra parentesi dopo l'operatore, cioè il record IsDemo () == falso chiamiamo un'espressione condizionale. È un'espressione logica che può restituire uno dei due valori: vero lub falso. Quando l'espressione condizionale restituisce un valore vero questo sarà il codice tra le parentesi che appaiono direttamente dopo l'operatore if.
Il simbolo == in un'espressione condizionale pone una domanda se il valore alla sua sinistra è uguale al valore sulla destra. Perché la funzione IsDemo () restituirà il valore falsoquando abilitiamo il programma sull'account live, la nostra espressione condizionale, nel suo insieme, restituirà il valore veroperché il valore a sinistra del simbolo == corrisponde al valore a destra. Quando viene soddisfatta un'espressione condizionale, verrà eseguito un codice tra le parentesi operatore if e il programma restituirà le informazioni sul fallimento con l'aiuto dell'operatore ritorno e valore generato automaticamente sotto il nome INIT_FAILED.
Disegniamo un pulsante
Disegniamo il nostro pulsante usando la funzione Przycisku_utworz_sie (int x, int y, bool wybieram_niebieski)che proviene dalla libreria precedentemente importata. La funzione accetta due parametri con un tipo di dati int (numeri interi) con i nomi x e yche fungono da coordinate della posizione del pulsante sul grafico rispetto all'angolo in alto a destra della finestra.
Inoltre, la funzione assume un parametro di tipo bool (vero lub falso) chiamato wybieram_niebieski. Poiché la nostra applicazione sarà in grado di operare in due modalità, per l'intero account o uno strumento, il nostro pulsante avrà il colore appropriato in base alle impostazioni selezionate.
Ci piace ify
Determiniamo che vogliamo che il pulsante sia blu quando funziona in modalità strumento singolo e rosso per l'intero account. Attiveremo la colorazione del pulsante aggiungendo la seguente istruzione alla funzione OnInit ():
Per fare in modo che l'algoritmo determini il colore del pulsante, per iniziare, definiamo la variabile bool detto blu e assegniamo un valore ad esso falso. Quindi usiamo l'operatore condizionale ifche controlla il parametro delle impostazioni dell'applicazione Tylko_ten_instrument è stato impostato dall'utente su un valore vero. In questo caso, viene eseguito il codice che imposta il valore della variabile blu anche su vero. Una variabile preparata in questo modo blu possiamo servire la funzione Przycisku_utworz_sie (..) aggiungendo la seguente riga di codice alla funzione OnInit ().
Ultima funzione (per oggi)
Quando il programma termina o qualcosa cambia nelle impostazioni, verrà chiamata la funzione API MQL nulla OnDeinit(const int ragione).
Usando la funzione OnDeinit () eseguiamo operazioni che sono necessarie per terminare correttamente il programma. Nel nostro caso, dopo aver disattivato l'algoritmo, è necessario rimuovere il pulsante utilizzando la funzione precedentemente importata dalla libreria Przycisku_bye_bye ().
Notare che c'è una parola davanti al nome della funzione nulla. Significa che la nostra funzione non restituirà alcun valore.
Aggiungi il punto e virgola, strofina le mani e premi Compila
Dopo la compilazione riuscita, il codice che abbiamo scritto oggi disegnerà un pulsante sul grafico e gli darà un aspetto adatto a seconda della configurazione immessa dall'utente nella finestra delle impostazioni. Congratulazioni, abbiamo completato la prima fase della creazione della nostra applicazione, abbiamo creato un'interfaccia utente.
La prossima settimana svilupperemo il nostro programma per l'elaborazione degli ordini e aggiungeremo alcuni gadget interessanti.