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
Igor, il desiderio di imparare il linguaggio MQL5 non è perso, al contrario, aumenta solo. Sono combattuto, perché sono così stupido e non riesco a capire le cose semplici con questo operatore di loop. La cosa principale è che senza l'operatore di loop il codice funziona perfettamente, ma con il loop è un casino completo. Andrò in fondo a questa storia in ogni caso. Tuttavia ho molto meno tempo per lo studio autonomo da quando il periodo di quarantena è finito e ho rari momenti per studiare la lingua al lavoro. Per lo più studio la lingua la sera e la notte tardi.
Ho bisogno di risolvere 2 compiti per arrivare finalmente a scrivere il codice Trailing Stop:
Vladimir, ti stai addentrando in cose strane. Ti è stato dato un modello: https://www.mql5.com/ru/forum/352460/page58#comment_18726492 L'hai ignorato e hai deciso di andare avanti con il tuo ingegno. Questa via è difficile e può richiedere anni. Sulla tua strada, studia C, C++, Rust, C#, polimorfismo, ereditarietà, dereferenziazione dei puntatori, conversione dinamica dei tipi: Controlla o guida. Dovete prendere la via più breve per raggiungere l'obiettivo. Se volete il trailing, scrivete trailing. Non c'è bisogno di studiare C e C++ per farlo. Tutto questo come elettivo, se vuoi.
La situazione con il ciclo for è illustrativa. È una costruzione potente che deve essere applicata al posto giusto. Avete una rete e un algoritmo ausiliario. Ecco perché non c'è un'enumerazione di posizioni, non ci sono maghi, quindi non si ha questo ciclo. Naturalmente, tutto funzionerà anche senza, ma il ciclo ti fa sentire solo il petrolio. Ma si cerca ostinatamente di usarlo, sembra essere un fine in sé: usare il più e il più possibile, avere il più possibile.
Vladimir, stai entrando in una sorta di routine. Ti è stato dato un modello: https://www.mql5.com/ru/forum/352460/page58#comment_18726492 L'hai ignorato e hai deciso di andare avanti con la tua mente. Questa strada è difficile e può richiedere anni. Sulla tua strada, studia C, C++, Rust, C#, polimorfismo, ereditarietà, dereferenziazione dei puntatori, conversione dinamica dei tipi: Controlla o guida. Dovete prendere la via più breve per raggiungere l'obiettivo. Se volete il trailing, scrivete trailing. Non c'è bisogno di studiare C e C++ per farlo. Tutto questo come elettivo, se vuoi.
La situazione con il ciclo for è illustrativa. È una costruzione potente che deve essere applicata al posto giusto. Avete una rete e un algoritmo ausiliario. Ecco perché non c'è un'enumerazione di posizioni, non ci sono maghi, quindi non si ha questo ciclo. Certo, tutto funzionerà anche senza, ma il loop ti fa sentire solo il petrolio. Ma tu cerchi ostinatamente di usarlo, quindi sembra essere un fine in sé: puoi usare il più possibile di tutto e di qualsiasi cosa da tenere in magazzino.
Ciao, Vasily!
Grazie per esserti unito tempestivamente all'argomento e per avermi indirizzato come sempre sulla strada giusta. Ora lasciatemi spiegare tutto in un ordine:
Vasily, ti sono estremamente grato per la guida e la critica costruttiva! Esprimo anche la mia gratitudine a tutti i partecipanti di questo tema che mi hanno aiutato nel mio auto-studio del linguaggio di programmazione MQL5 da zero.
L'autoapprendimento continua. Da continuare.
Saluti, Vladimir.
Buon pomeriggio a tutti!
Se volessi aggiungere qualcosa di interessante, penso che l'idea di "autoformazione in MQL5 da zero" non sia del tutto corretta. Se una persona è uno 0 nella programmazione, deve prima imparare a programmare. Se l'obiettivo è quello di imparare a programmare in MQL da zero, una persona deve prima impararea programmare in C, almeno le basi, e poi imparare a scrivere in MQL, perché MQL è in realtà C, ma è specializzato per un certo compito, una persona non capisce come funzionano i loop, e già cerca di scrivere programmi. È come cercare di imparare il latino senza conoscere il russo...
Un'altra cosa è che il C non è un linguaggio molto amichevole per imparare la programmazione, è semplice, ma è troppo conciso, è difficile per un principiante leggere e capire il codice senza avere una comprensione di base di algoritmi, tipi di dati, algebra booleana. In C tre caratteri in una riga possono significare diverse stringhe in un altro linguaggio.
Per imparare a programmare semplicemente da zero, per la base, per imparare a parlare con un computer in un (non importa quale) linguaggio, consiglierei di iniziare con Pascal, il libro più facile per iniziare con esso (2-3 settimane a proprio agio), poi C (lì dopo Pascal max settimana con diligenza, padroneggiare la sintassi, intendo le competenze linguistiche di base!) e poi prendere linguaggi specializzati come MQL, perché MQL è C, che ha una piccola torsione e semplificazione, dato che è progettato per un singolo compito e il compilatore conosce l'ovvio. E C a sua volta è una specie di Pascal compresso RAR, ma Pascal è quasi inglese =).
Ora, per quanto riguarda i loop:
Quando ho imparato la programmazione, mi ha aiutato l'analogia con le somme in algebra, dove si specifica il valore iniziale di n, il valore finale di n e la formula con questo n da calcolare.
Ciao Andrey, sono completamente d'accordo con te sulla base. Non ce l'ho e non l'ho mai avuto. Ma come dice il proverbio - Mosca non è stata costruita in una volta sola! Grazie per i vostri consigli e suggerimenti!
Saluti, Vladimir.
Sì, sono d'accordo - anche i suoi codici sono buoni! Ti stai agitando per niente. Prendete il vostro tempo per sistemare il codice senza fretta e questo è tutto. È tutto elementare qui - seleziona e traina: (quanto più facile - solo il tuo argomento di scegliere la posizione NEED... :-))
Oltre a questo, includere i file - significa che sono nel vostro codice anche come funzioni e questo è tutto.
Grazie, Roman, per i codici e i link! Sto affrontando i codici con calma e sicuramente non ho fretta da nessuna parte!
Sinceramente, Vladimir.
Buona giornata e buon umore a tutti!
Continuo a studiare il linguaggio di programmazione MQL5 . Oggi, come promesso, pubblico per far vedere a tutti il codice del template Expert Advisor pensato per scrivere un trailing stop. A causa del fatto che il codice del modello EA si è rivelato piuttosto ingombrante, abbiamo dovuto ridurre il più possibile i commenti. La versione completa dell'Expert Advisor con commenti dettagliati su ogni riga di codice, in una presentazione accessibile ad uno studente del 1° grado di una scuola di programmazione, sarà pubblicata successivamente sotto forma di file con nome di lavoro Trailing_Stop.mq5 così per non produrre un altro "footcloth" sul sito.
Prima di pubblicare il codice, l'EA è stato testato nel tester di strategia . Non sono stati individuati problemi. L'EA utilizza un sistema di contabilità della posizione di compensazione. Questo sistema contabile implica che contemporaneamente può esserci una sola posizione aperta sul conto per lo stesso simbolo (strumento finanziario).
Al momento, l'Expert Advisor ha la capacità di:
Inoltre, l'EA ha un modello preinstallato, gentilmente fornito da Vasily Sokolov, che verrà riempito con il codice durante il processo di autoapprendimento.
UN AVVERTIMENTO!!!
L'Expert Advisor è sviluppato secondo il piano di autoapprendimento per un conto demo e solo per scopi didattici! Non progettato per fare trading su un conto reale e realizzare un profitto!
Con i migliori saluti, Vladimir.
Buona giornata e buon umore a tutti!
Continuo a studiare il linguaggio di programmazione MQL5. Ieri ho scritto il codice di Stop Loss a Breakeven per le posizioni Sell e Buy. Sto incollando il codice senza ancora alcun commento. Pubblicherò la versione completa dell'Expert Advisor con una descrizione dettagliata di ogni linea di codice, in una forma accessibile agli alunni del primo anno della scuola di programmazione, più tardi nel file con il titolo di lavoro Trailing_Stop.mq5. Prima di pubblicare il codice, abbiamo controllato le prestazioni dell'Expert Advisor nel tester delle strategie. Non sono stati trovati problemi.
Saluti, Vladimir.
Buona giornata e buon umore a tutti!
Continuo a studiare il linguaggio di programmazione MQL5. Oggi, come promesso, sto incollando il codice del modello del mio Expert Advisor progettato per scrivere un trailing stop. A causa del fatto che il codice del template EA è abbastanza ingombrante, ho dovuto ridurre i commenti il più possibile. La versione completa dell'Expert Advisor con commenti dettagliati su ogni linea di codice, in una forma accessibile per uno studente di scuola di programmazione di 1° grado, sarà pubblicata più tardi come un file con il nome di lavoro Trailing_Stop.mq5, al fine di non produrre un altro spoilage.
...
Molto bene. L'idea principale è ben catturata. Soprattutto mi piace il processo di sviluppo:
Buona giornata e buon umore a tutti!
Continuo a studiare il linguaggio di programmazione MQL5. Ieri ho scritto il codice per lo Stop Loss a Breakeven per le posizioni Buy e Sell.
Cioè tutto è corretto. Non è necessario risolvere il problema tutto in una volta in un solo posto. Dovresti risolverlo gradualmente, proprio come hai fatto tu. In primo luogo, si descrive la logica di base nella funzione OnTick e le funzioni di base come OpenBUY, OpenSELL, TickUP, TickDown.
Poi, quando questo codice di base è debuggato, compilato e funziona entro le sue capacità, si inizia a descrivere le altre funzioni. Questo può essere fatto il giorno dopo o anche una settimana. Questo significa che non è necessario cambiare il codice principale. Penso che possiate capire perché.
Ora dovete affinare questo modo di sviluppare: continuate a scrivere funzioni, collegando la funzionalità attraverso di esse al codice esistente. Il programma esistente dovrebbe funzionare correttamente. La complessità non dovrebbe aumentare. Le funzioni da aggiungere devono restituire risultati semplici e chiari. I loro nomi dovrebbero essere altrettanto semplici e chiari per voi. Se non ci riuscite, potrebbe essere perché avete bisogno di scrivere non una ma due o anche tre funzioni per risolvere il problema. All'inizio, il quadro generale dell'applicazione sarà difficile da definire. Ecco perché è meglio chiedere consiglio a colleghi più esperti. Con il tempo, imparerete a sviluppare tali modelli per conto vostro.
Con il passare del tempo,avrete bisogno di usare sempre più costrutti linguistici all'interno delle funzioni per renderle adatte alle vostre esigenze.A questo punto, gradualmente e soprattutto, estenderete organicamente la vostra conoscenza dei costrutti del linguaggio, imparerete i loop, le matrici e persino a lavorare con i puntatori.
In effetti, avete già imparato la parte più difficile della programmazione, anche se non avete ancora consolidato il materiale che avete imparato. Tutto quello che dovete fare ora è ripeterlo molte volte per consolidarlo. Da qui non ci sarà nulla di fondamentalmente nuovo, tutto è lo stesso: Modello generale -> Descrizione dei nomi delle funzioni e dei loro parametri-> Scrittura del contenuto di queste funzioni -> Disposizione di queste funzioni nell'unità centrale. Questo è tutto. Non resta che perfezionare l'abilità ed essere coerenti. Varie costruzioni aggiuntive che si iniziano ad usare come i loop e gli array sono solo dettagli, a volte fatti in modo intelligente, ma niente di più che dettagli.
Poiché non c'è limite alla perfezione, aggiungerò qualche altro commento sul codice:
Ho evidenziato in giallo due posti non banali.
1) Notate che il codice è ripetuto nel primo if e nel successivo else. L'unica differenza è nell'ultima riga e nell'azione finale (OpenBUY, OpenSell).
2) Le condizioni per entrare nel blocco else non sono ovvie. Non sono visibili a causa dell'abbondanza di ?? Infatti, dipendono solo dall'ultima linea:
Questo è un segno sicuro che qui manca una funzione.
Dobbiamo scrivere una funzione che restituisca vero se il tempo di apertura della posizione corrisponde a quello dato (la scriverò più tardi)
Molto bene. Il punto principale è catturato correttamente. Mi è piaciuto soprattutto il processo di sviluppo:
Cioè tutto è giusto. Non è necessario risolvere il problema tutto in una volta in un solo posto. Lo fai gradualmente, come è successo nel tuo caso. In primo luogo, si descrive la logica di base nella funzione OnTick e le funzioni di base come OpenBUY, OpenSELL, TickUP, TickDown.
Poi, quando questo codice di base è debuggato, compilato e funziona entro le sue capacità, si inizia a descrivere le altre funzioni. Questo può essere fatto il giorno dopo o anche una settimana. Questo significa che non è necessario cambiare il codice principale. Credo che possiate capire perché.
Ora dovete affinare questo modo di sviluppare: continuate a scrivere funzioni, collegando la funzionalità attraverso di esse al codice esistente. Il programma esistente dovrebbe funzionare correttamente. La complessità non dovrebbe aumentare. Le funzioni da aggiungere devono restituire risultati semplici e chiari. I loro nomi dovrebbero essere altrettanto semplici e chiari per voi. Se non potete farlo, può essere che abbiate bisogno di scrivere non una ma due o anche tre funzioni per risolvere il problema.
Per far sì che una funzione esegua i compiti previsti,alla fine avrete bisogno di usare sempre più costrutti linguistici all'interno di tali funzioni. È allora che gradualmente e soprattutto, organicamente, estenderete la vostra conoscenza delle costruzioni del linguaggio, imparerete i loop, gli array e persino il lavoro con i puntatori.
Ciao, Vasily! Grazie mille per i vostri suggerimenti tempestivi e il vostro supporto. I vostri commenti sul ruolo delle funzioni e sui principi di costruzione del codice del programma mi hanno aiutato molto nell'apprendimento del linguaggio di programmazione MQL5:
Ora che le informazioni nella mia testa sono strutturate, è più facile capire il codice scritto non solo da me, ma anche da altri programmatori. Spero che questo argomento sia un buon aiuto per coloro che stanno iniziando ad imparare il linguaggio di programmazione MQL5 da zero.
Saluti, Vladimir.