Autoapprendimento del linguaggio MQL5 da zero - pagina 29

 
Реter Konow:
Hai riempito un novizio di informazioni inutili).

Se l'informazione è utile o meno sta al principiante decidere

Vasiliy Sokolov:

Ben detto, informativo, grazie

 
Alexey Viktorov:

Questo suggerisce che non dovresti ostentare i tuoi desideri in questo modo. Vladimir avrebbe anche potuto fare domande specifiche su questa o quella funzione e ricevere consigli utili, piuttosto che le sciocchezze degli "esperti" come imparare il C++ o imparare l'assembler. Si potrebbe iniziare studiando le schede perforate.

Sono a favore del fatto che TC studi secondo il suo piano e non "salti" sopra la sua testa. Tutto a tempo debito. E uno dovrebbe naturalmente imparare i MQL e nel giusto ordine. La filosofia di cui sopra (data da Vasily e da me) può aiutare a strutturare la conoscenza, ma non il vuoto. E mentre lo studente è all'inizio dell'apprendimento, deve cercare di strutturare il vuoto secondo la nostra notazione filosofica.

Tornate al libro di testo e dimenticatevi di tutte queste cose altisonanti per il momento.
 
Vasiliy Sokolov:

Andare avanti:

  • Poiché ci sono molti eventi, ci sono molti gestori di eventi. Poiché gli eventi sono chiamati in modo incoerente, anche i loro gestori di eventi sono chiamati in modo incoerente. Poiché c'è una chiamata incoerente, i gestori di eventi non possono dipendere l'uno dall'altro, e nemmeno dai dati dell'altro. L'unico costrutto che soddisfa questi severi requisiti è una funzione.
  • Le funzioni non possono dipendere l'una dall'altra. Se una funzione restituisce la somma a+b, e la seconda restituisce il prodotto a*b, allora il risultato di queste due funzioni non dipenderà dalla sequenza delle chiamate. Possiamo chiamare la prima funzione con gli argomenti 3 e 5 e ottenere 8. Poi chiama la seconda funzione con gli stessi argomenti e ottiene 24. Poi scambiatevi le chiamate. I risultati saranno gli stessi. La funzione di addizione restituirà sempre 8 con gli argomenti 3 e 5. La funzione di moltiplicazione restituirà sempre 24 con gli stessi argomenti.
  • È chiaro da quanto sopra che il gestore dell'evento può essere solo una funzione. Se si verifica un nuovo evento di tick, questo è gestito dalla funzione OnTick. Se si verifica l'evento Start (un lancio una tantum dello script), questo è gestito dalla funzione speciale OnStart.
  • Questa funzione è universale. Questa funzione può gestire non solo gli eventi. La funzione può restituire qualcosa di utile, per esempio l'ora corrente. Una funzione può eseguire calcoli complessi con gli argomenti che le vengono passati e restituire il risultato finale di questi calcoli come un unico valore. Infine, una funzione può essere un fornitore di dati: Si chiama la funzione e si ottengono da essa i dati di cui si ha bisogno, come le citazioni.
  • Internamente, MetaTrader consiste di migliaia di funzioni, di cui circa 1500 mila sono gentilmente messe a disposizione degli utenti. Queste sono funzioni molto utili. Vi permettono di controllare il tempo del sistema e di ottenere i dati di uno strumento che vi interessa. Le funzioni sono utilizzate per inviare ordini di compravendita. Potete aprire il manuale ICL e vedere che consiste di funzioni e dei loro argomenti. Quindi MetaTrader, per quanto riguarda i programmi utente, è un unico grande insieme di funzioni.
  • Le funzioni universali non sono sufficienti. Non importa quante nuove funzioni vengano aggiunte al sistema, ci sarà sempre carenza di esse. La ragione è che ognuno ha esigenze diverse. Non esiste una funzione unica per tutte le occasioni. Le caratteristiche più generiche e universali sono già incluse in MetaTrader e sono gentilmente condivise con noi. Tuttavia, le esigenze degli utenti sono infinite. MetaQuotes non può soddisfare le esigenze individuali di 100.000 utenti del loro terminale. Invece, hanno fatto qualcosa di più flessibile: hanno lasciato che gli utenti creassero da soli le caratteristiche che volevano. Gli utenti ne hanno beneficiato. Invece di usare una funzione di sistema che non è adatta a loro, possono scrivere la propria funzione che risolve perfettamente il loro problema. Nessuna funzione del sistema è perfetta a causa della sua universalità.
  • L'abilità con cui un utente è in grado di scrivere le proprie funzioni e di capire come funzionano ti dice quanto è abile un programmatore. Se capisce che un programma è un insieme disgiunto di gestori (sotto forma di funzioni) che non gestiscono in modo coerente gli eventi in arrivo, è buono. Se sa scrivere le proprie funzioni, questo è un altro vantaggio. Se può combinare il lavoro di diverse funzioni (sia le sue che quelle del sistema) in un algoritmo comune, questo è un altro vantaggio per lui.
  • Se capisci che tutto in MetaTrader (il quarto e il quinto) è in qualche modo basato su funzioni, funzioni e funzioni - tutto diventa improvvisamente chiaro. L'aiuto non è più presentato come un libro spesso con un mucchio di frammenti di codice sparsi, ma come una guida alle funzioni disponibili e a ciò che fanno. Tutto il resto, come i tipi di dati, gli array, le strutture, le classi, è irrilevante. Si tratta di sostenere le funzioni in modo che possano restituire qualcosa e accettare qualcosa.

(per ora)

Grande!!! Vasily, hai un talento naturale per l'insegnamento. Tutto è chiaro e comprensibile, soprattutto per coloro che sono a zero. Avete mai pensato di scrivere un libro simile a MQL4 Tutorial di Sergey Kovalev, solo che ora si chiamerebbe MQL5 Tutorial di Vasily Sokolov?

Pensi chequesto argomento darà uno stimolo a una tale iniziativa, vero, Vasily?

Saluti, Vladimir.

 
Vasily focalizza la tua attenzione solo su alcuni aspetti particolari, considerandoli più importanti di altri. Per esempio, Funzione o Evento. Leggete le funzioni nell'opera di S.Kovalev e troverete spiegazioni non meno (e anche più) dettagliate e accessibili, ma senza concentrarsi su di esse, a scapito delle altre aree. Pertanto, dovete leggere il libro di testo.

Sì, Vasiliy ha scritto molto bene, ma è un po' "sbilanciato" dalla sua comprensione soggettiva.

Non sto dicendo "impara da me, so come farlo bene!", sto dicendo "impara da un libro di testo e prendi bene le basi, non i miei concetti formulati frettolosamente di ciò che mi interessa ora nella materia".

P.S. Tuttavia, questo dipende da voi.
 
Реter Konow:
Vasily focalizza la tua attenzione solo su alcuni aspetti particolari, credendo che siano più importanti di altri. Per esempio, una funzione o un evento. Leggete le Funzioni nell'opera di S.Kovalev e troverete una spiegazione non meno (e anche più) dettagliata e accessibile, ma senza concentrarsi su di esse, a scapito delle altre aree. Pertanto, dovete leggere il libro di testo.

Sì, Vasiliy ha scritto molto bene, ma è un po' "sbilanciato" dalla sua comprensione soggettiva.

Non sto dicendo "impara da me, so come farlo bene!", sto dicendo "impara da un libro di testo e prendi bene le basi, non i miei concetti formulati frettolosamente di ciò che mi interessa ora nella materia".

P.S. Tuttavia, dipende da voi.

E tu, Peter, puoi proporre a te e a Vasily di fare un buon lavoro insieme e scrivere un tale libro su MQL5.

Scrivere un libro è il modo migliore per lasciare una traccia nella storia dell'umanità, in particolare nella storia della programmazione. Pensateci!

Saluti, Vladimir.

 
MrBrooklin:

Peter, propongo a te e a Vasily di fare un buon lavoro insieme e scrivere un tale libro su MQL5.

Scrivere un libro è il modo migliore per lasciare un segno nella storia dell'umanità, in particolare nella storia della programmazione. Pensateci!

Saluti, Vladimir.

Grazie per il suggerimento, ma Vasiliy mi "batte" facilmente sull'approccio classico, che è necessario in un libro del genere. Posso offrire solo una comprensione astratta di Oggetto e Ambiente nella loro interazione dinamica attraverso il prisma della programmazione, ma sarà il capitolo finale. ))))
 
Реter Konow:
Grazie per l'offerta, ma Vasily mi "batte" facilmente per un approccio classico, che è esattamente ciò di cui ho bisogno in un libro del genere. Posso offrire solo una comprensione astratta di Oggetto e Ambiente nella loro interazione dinamica attraverso il prisma della programmazione, ma sarà il capitolo finale. ))))

Capisco. Ora vorrei conoscere l'opinione di Vasily sulla mia proposta di libro.

In questo momento sto studiando il suo articolo "Universal Trading Expert Advisor: Working with Custom Trailing Stops (Part 6)".

Sinceramente, Vladimir.

 

Continua a

Era chiaro dal post sopra che il focus era sulle funzioni. Tutto era dedicato a loro e a nient'altro che a loro. Si potrebbe pensare che questo sia un ovvio pregiudizio soggettivo o qualche arcana "filosofia". Tuttavia, qui non c'è nessuna filosofia. E tale attenzione alle funzioni non è casuale. Il punto è che nella programmazione, la funzione è di fondamentale importanza. Inoltre, la funzione è una nozione molto importante e fondamentale in matematica. Negli anni '20 del secolo scorso, Alonzo Church sviluppò un sistema di calcolo basato sulle funzioni. Questo è stato chiamato lambda-calculus. Questo sistema formalizzò la nozione di calcolabilità e legò strettamente i calcoli del computer e la matematica. I principali programmatori del mondo svilupparono i cosiddetti linguaggi di programmazione funzionale basati sul lambda-calculus, in cui le funzioni occupano il posto principale. Per esempio, nel linguaggio di programmazione funzionale Haskell, non c'è nemmeno un ciclo for o qualcosa di simile. Invece, si propone di chiamare una funzione in modo speciale, ricorsivamente, per calcolare il valore desiderato. Si può dimostrare che con solo le funzioni e nessun incarico, è possibile scrivere un linguaggio di programmazione completo alla Turing. Questo è un linguaggio che permetterebbe di scrivere tutto ciò che è possibile in qualsiasi altro linguaggio turing-completo, come un linguaggio procedurale o OOP.

MQL non è un linguaggio funzionale, ma piuttosto un linguaggio procedurale, estensibile per classi, con una tipizzazione rigorosa e una ricca API orientata al soggetto (sotto forma delle stesse funzioni, oh sorpresa). D'altra parte, la teoria delle funzioni si basa su una solida base matematica, offre modelli semplici ed efficaci di utilizzo di qualsiasi linguaggio di programmazione dove ci sono funzioni, quindi non è almeno lungimirante abbandonare le funzioni e le basi matematiche dietro di esse. Ecco perché faccio così tanta attenzione alle funzioni. Non importa quanto bene capite la struttura dell'array, non importa se fate un errore con qualche tipo di dati. Questo può essere rapidamente aggiustato e corretto. Ma se non capite le funzioni e come sono collegate, non diventerete nemmeno un programmatore medio.

Così, per imparare a progare normalmente, cioè linearmente nel tempo per espandere la funzionalità del vostro programma, dovete imparare quanto segue:

  • Rappresentare chiaramente (se non completamente, ma chiaramente necessario) il modello di eventi di MetaTrader 4.5.
  • Sapere come lavorare con le funzioni del sistema. Riassumono i loro risultati nelle loro funzioni. Combinate le chiamate delle funzioni di sistema nelle vostre funzioni.
  • Essere capaci e appassionati di scrivere le proprie funzioni.
  • Essere in grado di capire le catene di chiamate di funzioni: per esempio quando la funzione a() chiama la funzione b(), e b() chiama c() ed e() chiama la funzione c().
  • Sapere come scrivere funzioni pulite e capire perché dovreste scrivere funzioni pulite. Più tardi spiegherò cos'è una funzione pura.

Le funzioni sembrano semplici. "Cosa c'è da imparare? Basta leggere un paragrafo qui, ed è tutto. E poi gli array, per, mentre..." - No, non lo sono. Le funzioni sembrano semplici (e questo va bene). Ma perché possano davvero risolvere compiti in modo efficiente, le funzioni devono avere certe proprietà ed essere combinate tra loro in un certo modo. Come fare tutto questo lo scriverò probabilmente più tardi.

 
MrBrooklin:

Capisco. Ora vorrei conoscere l'opinione di Vasily sulla mia proposta di libro.

Attualmente sto studiando il suo articolo "Universal Trading Expert Advisor: Working with Custom Trailing Stops (Part 6)".

Sinceramente, Vladimir.

No. Non ci sarà nessun libro. Forse alcuni articoli. Ma non nel tempo più vicino, di sicuro.

 
MrBrooklin:

Peter, posso suggerire a te e a Vasily di fare un buon lavoro insieme e scrivere un tale libro su MQL5.

Non credo. Le mie opinioni con Peter sono troppo diverse. Puoi dare un'occhiata ad alcuni dei nostri codici per vedere quanto sono diversi).

Motivazione: