Versione beta del libro online sulla programmazione MQL4 - di Sergey Kovalev (SK.) - pagina 3

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
Una settimana fa ho installato e provato Meta Trader per la prima volta e ho scoperto che questo terminale è molto più comodo di quelli che usavo prima (Rumus e Forex Trader). Circa due anni fa, quando ho conosciuto il Forex e ho aperto il mio primo conto demo, mi sono chiesto come automatizzare tutto. Poi ho aperto il terminale e ho visto il messaggio Autotrading nella sezione della posta. Ed eccomi qui))) Leggo intensamente il libro, e spero che presto scriverò il mio primo Expert Advisor per la mia strategia sviluppata. Non avevo assolutamente nulla a che fare con la programmazione prima, era persino difficile immaginare che avrei mai imparato a programmare))) Mentre leggevo, sono sorte delle domande, ma sono anche scomparse man mano che andavo avanti. La domanda è apparsa, ho guardato avanti e sono stato soddisfatto, perché ho visto la risposta dopo un paio di capitoli e sono tornato a leggere tutto in ordine. Sono stato particolarmente attratto dalla possibilità di testare la strategia su dati storici e regolare la strategia come risultato.
Comunque, grazie mille per il libro.
È eccellente. Sei un nuovo utente di MT. E tu non sai praticamente nulla di programmazione al momento.
Permettetemi di suggerirvi di riferire almeno due o tre volte al mese come vanno le cose (e più spesso se volete). Sarebbe estremamente interessante.
Nel frattempo, se mi permette, ho una domanda. Lei dice che è sorta una domanda che trova risposta nelle sezioni seguenti. Ho cercato di metterlo insieme in modo da evitare questa situazione. Potrebbe per favore chiarire a quale domanda si riferisce?
Una settimana fa ho installato e provato Meta Trader per la prima volta. Ho scoperto che questo terminale è molto più comodo dei miei precedenti (Rumus e Forex Trader). Circa due anni fa, quando ho conosciuto il Forex e ho aperto il mio primo conto demo, mi sono chiesto come automatizzare tutto. Poi ho aperto il terminale e ho visto il messaggio Autotrading nella sezione della posta. Ed eccomi qui))) Leggo intensamente il libro, e spero che presto scriverò il mio primo Expert Advisor per la mia strategia sviluppata. Non avevo assolutamente nulla a che fare con la programmazione prima, era persino difficile immaginare che avrei mai studiato programmazione))) Mentre leggevo, sono sorte delle domande, ma sono anche scomparse man mano che andavo avanti. La domanda è venuta fuori, ho guardato avanti e sono stato soddisfatto, come ho visto la risposta dopo un paio di capitoli e sono tornato a leggere tutto in ordine. Sono stato particolarmente attratto dalla possibilità di testare la strategia su dati storici e di correggerla di conseguenza.
Comunque, grazie mille per il libro.
È eccellente. Sei un nuovo utente di MT. E tu non sai praticamente nulla di programmazione al momento.
Posso offrirvi: di farmi sapere almeno 2 o 3 volte al mese come state andando (o più spesso, se volete). Sarebbe molto interessante.
Nel frattempo, se mi permette, ho una domanda. Lei dice che è sorta una domanda che trova risposta nelle sezioni seguenti. Ho cercato di metterlo insieme in modo da evitare questa situazione. Potrebbe per favore chiarire a quale domanda si riferisce?
Vi farò sapere i progressi naturalmente, come nella mia situazione e senza comunicazione)). Spero in un feedback costruttivo.
Grazie per il vostro tempo e la vostra attenzione.
Si prega di suddividere i seguenti messaggi in paragrafi, poiché è difficile capire ciò che viene scritto.
Ma avendo iniziato a leggere il libro, ero un po' confuso dalla struttura della costruzione del programma e poi dalla funzione int start (), che viene ripetuta ad ogni tick e se al momento della sua esecuzione conosco il prezzo dell'offerta, poi viene scritto in una variabile e viene memorizzato in essa per tutto il tempo di esecuzione, allora come farò a sapere quando il prezzo è cambiato e il programma può eseguire qualsiasi altra azione basata sul nuovo prezzo? Ho pensato che il prezzo nel mio programma sarebbe stato aggiornato da qualche codice in loop, chiedendolo costantemente.
Hai ragione a dire che perché il programma possa funzionare in tempo reale, è necessario essere informati periodicamente sul fatto di un nuovo prezzo e sul prezzo stesso.
In effetti, ci sono 2 metodi:
Il primo modo è quello di eseguire in un ciclo infinito qualche funzione e da essa richiedere periodicamente il prezzo.
Ma questo metodo ha degli svantaggi:
- Se le richieste vengono fatte spesso, il risultato è un carico pesante sul canale di comunicazione e uno spreco di risorse del PC;
- Se fai ricerche poco frequenti, potresti perdere un nuovo prezzo tra una ricerca e l'altra.
Il 2° metodo (accettato come base nella tecnologia MQ) è abbastanza diverso in quanto il lancio del codice necessario appartiene al terminale. Il terminale riceve informazioni dal server, capisce che è arrivato un nuovo tick (il fatto di un nuovo prezzo e il prezzo stesso) e sulla base di queste informazioni, il terminale avvia la funzione(). Tutto questo è descritto nella sezione Programma in MQL4.
Ora ho una domanda: mi sono reso conto che quando eseguo la funzione init chiamo la funzione di calcolo del prezzo aperto del mio ordine, e anche il calcolo della dimensione del lotto, basato sui dati del saldo del mio conto; dopo l'esecuzione init l'esecuzione inizierà la funzione start...
Non è corretto. init() e start() sono funzioni speciali. Sono chiamati dal terminale client secondo le loro proprietà (o più semplicemente, secondo le regole, condizioni sotto le quali sono chiamati per l'esecuzione). Questo è descritto nella sezione Funzioni speciali. La funzione init() viene eseguita una volta, quando il programma viene caricato nella finestra. E start() viene chiamato ad ogni tick. Questo è molto conveniente. Un tick è arrivato e ha portato un nuovo prezzo = il terminale lancia start() che viene eseguito fino all'esecuzione. Tutti i calcoli devono essere inseriti in esso - calcolo del numero di lotti, condizioni di apertura/chiusura degli ordini e tutto il resto.
Poi la cosa più sconcertante per me è dove scrivere il codice che si aspetta il prezzo di "chiusura" dell'ordine e tornare all'inizio, cioè di nuovo, calcolando il prezzo di apertura, aspettando questo prezzo, ecc. Ho guardato avanti nelle sezioni; credo di aver visto qualcosa nei titoli, che probabilmente risponderà alla mia domanda. Mi piacerà leggere la sezione degli ordini di apertura e impostazione.
A giudicare dalle vostre domande, non avete bisogno di scrivere programmi e non avete bisogno di leggere quello che state leggendo ora. In questa situazione, si raccomanda vivamente di ricominciare a leggere il libro. Con costanza e senza fare il passo più lungo della gamba. E mentre andate avanti, digitate tutti gli esempi presentati in ME ed eseguiteli sul vostro PC. E non passate alla sezione successiva finché ogni lettera del codice non sia stata compresa appieno. Cercate i concetti di Tick, Controllo, Funzione, Funzione speciale, Operatore, e in generale controllate di tanto in tanto il Dizionario dei termini.
Riferirò certamente i progressi come nella mia posizione e senza comunicazione)) Spero in un feedback costruttivo.
Grazie per il vostro feedback.
Spero che prenderai il consiglio correttamente e lo seguirai.
Allora la cosa più sconcertante per me è dove scrivere il codice in attesa del prezzo di "chiusura" e tornare all'inizio, cioè di nuovo contando il prezzo di apertura, aspettando questo prezzo, ecc. Ho guardato avanti nelle sezioni; credo di aver visto qualcosa nei titoli, che probabilmente risponderà alla mia domanda. Sto ancora leggendo la sezione degli ordini di apertura e impostazione.
A giudicare dalle domande che hai, non hai ancora bisogno di scrivere programmi e nemmeno di leggere quello che stai leggendo ora.
L'ho scarabocchiato velocemente nel vdp, ecco qui:
Init
Iniziare
Ho impostato il numero massimo di ordini aperti = 1;
Controlla quanti ordini sono aperti;
se 1 è aperto, allora chiamo la funzione per chiudere l'ordine,
Se nessun ordine è aperto, allora chiamo la funzione "calcola prezzo e numero di lotti".
--------------------------
Necessario per calcolare un prezzo di acquisto e di vendita favorevole e per calcolare il numero di lotti;
--------------------------
interrogando il prezzo corrente;
se il prezzo corrente >= prezzo d'affare da vendere,
quindi aprire un ordine di vendita pari al numero di lotti già determinato;
in caso contrario, confronta il prezzo attuale con il prezzo dell'offerta vincente;
se il prezzo corrente è <= prezzo Bid,
rispettivamente aprire un ordine di acquisto;
--------------------------
Chiama la funzione per chiudere l'ordine;
ritorna
deinit
Hai capito bene?Hai capito bene?
Beh, giusto nel complesso :) Congratulazioni a voi. È sempre bello capire qualcos'altro.
Comunque, segui il mio consiglio: devi tornare all'inizio. E ripartire dall'inizio senza saltare e saltellare, eseguendo metodicamente sul tuo PC tutti i codici suggeriti nel tutorial.
C'è un interessante indicatore ROC nel libro - l'indicatore del tasso di cambiamento del prezzo(https://book.mql4.com/ru/samples/iroc). Capisco che questo libro è un libro di testo e l'autore non è obbligato a dare codice sorgente a semi o anche a quarti, ma l'idea dell'indicatore è molto buona, e l'ho modificato un po' per rendere il ritardo ancora più debole.
Due volte manca il carattere di divisione (scomparso durante la creazione del file html?).
Il file indicatore linkato nel testo è normale.
Beh, giusto nel complesso :) Congratulazioni a voi. È sempre bello capire qualcos'altro.
Ancora, segui il mio consiglio: devi tornare all'inizio e ripartire dall'inizio senza saltare e saltare, eseguendo metodicamente sul tuo PC tutti i codici suggeriti nel tutorial.
Sì, sono d'accordo, è molto importante vedere e sentire qualsiasi risultato di ciò che si legge, è quando si fissa nella memoria a lungo termine, tanto più sotto l'influenza del contenuto emotivo, appare più di un'associazione:) A proposito, volevo anche sottolineare che per stimolare l'interesse, è necessario tornare indietro o utilizzare quei capitoli che sono più importanti, poi l'interesse stesso porterà all'obiettivo e amplierà il cerchio della conoscenza. La cosa più difficile nella nostra situazione è capire cosa è interessante man mano che si va avanti, elaborare l'ordine che sarà più efficace, come vediamo l'efficacia di tutto ciò che possediamo. Metterei in relazione il funzionamento della memoria associativa con la memoria guidata, dove un'area distribuita esiste finché c'è almeno un collegamento (associazione) ad essa, più sono i collegamenti, più è probabile che l'area non venga rilasciata, garantendo così il suo utilizzo e la sua successiva utilità. È quindi necessario rifornire costantemente lo stock di associazioni per consolidare ciò che si è letto.
P.S.: Scusa se ho esagerato:)
Il simbolo di divisione manca due volte (è scomparso durante la creazione del file html?).
Il file indicatore collegato nel testo è normale.
Sì, esiste una cosa del genere. Nel codice sorgente non sono ancora stati rilevati errori, ma i codici di testo sono incasinati in alcuni punti per qualche motivo. Risolveremo il problema.
P.S.: Scusa se ho esagerato:)
Sto già avendo difficoltà con i loop (tornerò su queste sezioni più di una volta), e poi ci sono le pecore.
Solo la mia opinione, se considerato un esempio specifico di trading (quasi raiding:)), ok, trading, poi se il lettore incontra un esempio simile alla sua idea (che non sa come implementare), egli considererà con grande interesse questo esempio e pensare come modificare e personalizzare per implementare la sua idea (penso che sai cosa voglio dire).
Ho avuto un esempio simile, ero interessato a come aprire un ordine per 1/3 del saldo. Non potete immaginare che tipo di operazioni matematiche sono state fatte nella mia testa per convertire 1/3 in dollari, in modo da ottenere la somma in lotti (0,1 o 3,5 lotti). E quanto sono stato felice quando ho visto un esempio diopenbuy.mq4, che apre un ordine di acquisto del valore del 35% dei fondi disponibili, con alcuni valori specificati di ordini stop. L'ho sfogliato, studiando ogni riga, cosa, perché e dove. Ho guardato le funzioni standard utilizzate in esso (MathFloor, MarketInfo. ....).