L'uso di variabili non inizializzate (o incomplete) (soprattutto le strutture) è un errore molto comune nella programmazione.
Cavolo, questa è l'unica risorsa in lingua russa dove (1) ti fanno il lavaggio del cervello e (2) ti senti grato per questo :))
Da 1,5 anni so che le variabili devono essere inizializzate; da 1,5 anni uso deliberatamente l'espressione "variabile di tipo struttura"; ma da 1,5 anni assegno valori solo a campi separati (obbligatori) della variabile di tipo Mqltraderequest, perché il Manuale di riferimento dice che "i campi obbligatori devono essere specificati per ogni operazione commerciale"....
papaklass: Renat, sarebbe bello se tu (MQ) pubblicassi un articolo o una serie di articoli su "lavorare con la memoria e le variabili". In generale, qual è il modo corretto di lavorare con la memoria e le variabili? Dopo la squalifica di diversi EA al Campionato a causa dell'elevato consumo di memoria, questi articoli sarebbero appropriati. Rosh ha scritto in qualche thread che gli utenti dovrebbero ordinare gli articoli a cui sono interessati, ma non ho trovato questo thread, quindi scrivo qui.
Sì, sarebbe interessante leggere un articolo su questo argomento. È molto interessante il motivo per cui al campionato alcuni partecipanti avevano esperti che utilizzavano così tanta memoria e come si può evitare una situazione del genere. Io non ho avuto questi problemi, ma è tutto casuale. Non so perché non mi succede, ma vorrei sapere cosa fare se succede.
Что общего между трейдингом, скайдайвингом, фьючерсами, Гавайями, переводами и шпионами? Мы тоже не знали, пока не пообщались с дисквалифицированным участником Ацуси Яманака (alohafx). Его кредо - ''Life is Good! - Жизнь прекрасна!'', и с этим трудно не согласиться. Было интересно узнать, что расстояние между разными континентами - не помеха в общении участников нашего Чемпионата.
Perché quando si stringe l'S/L a 5 (dovrebbe essere 5 pips)
Ho quanto segue
È necessario controllare i livelli di stop(SYMBOL_TRADE_STOPS_LEVEL) per un simbolo prima di inviare una richiesta di negoziazione. Lo SL/TP non deve essere più vicino di questa distanza dal prezzo corrente per chiudere. L'esempio per ottenere questa proprietà:
int StopLevel_Distance=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);
double SL=... // ottenere il nuovo SL tramite calcolo//--- controllare il livello di Stop Loss calcolatoif(SL>SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point)
SL=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-StopLevel_Distance*_Point;
//... modificare SL per la posizione
Grazie, ma né il mio SL né il mio TP vengono eseguiti. Nel compilatore "Terminal" sono elencati come "0.00" o "0.0" Comunque è impossibile dare uno stoploss generale per tutti gli ordini. Inoltre non sono ancora riuscito a modificare i valori dei parametri "dall'esterno", cioè senza modificare il codice nell'editor.
Per il resto funziona benissimo! E i commenti sono di grande aiuto!
Grazie per questa guida passo-passo. Ho alcune domande, che spero tu possa aiutarmi a risolvere.
Ho seguito alla lettera le tue istruzioni, ma non sono riuscito a raggiungere il risultato desiderato. Prima di tutto, sto lavorando con l'ultima versione di Meta Trader 5.00, Build 6.55 (6 giugno 2012). Ho notato diverse differenze, la prima delle quali è che il modello della procedura guidata MQL5 ha delle opzioni in più rispetto a quanto indicato nelle tue note. In ogni caso, mi sono assicurato che il programma sia esattamente come lo avete descritto. L'ho compilato. Nessun problema. Zero errori. Sono riuscito a inserire tutti e 5 i punti di interruzione del debug come suggerito nelle tue note nella subroutine OnTick. Facendo clic sul pulsante verde Esegui, non succede nulla. L'esecuzione del programma non arriva a questo punto. Perché? Cosa succede? Se inserisco i breakpoint di debug all'inizio della sub OnInit, ad esempio, adzHandle=iADX9Null,0,ADX_Period), allora va tutto bene. Le schede STEP di debug si accendono e posso eseguire un singolo passo di questo controllo fino alla fine della sub OnInit. Tuttavia, dopo di ciò, di nuovo niente. In breve, non riesco a raggiungere la sub OnTick. Cosa sta succedendo e perché? Si tratta di un bug noto nel funzionamento del sistema Meta Trader? Come posso risolvere questo problema e andare avanti?
Spero che quanto sopra spieghi il problema che ho avuto, e spero che possiate capire cosa sta succedendo e che possiate aiutarmi.
Ho digitato tutto il codice man mano che procedevo e non ho ottenuto alcun errore di compilazione alla fine, quindi deve essere stato spiegato bene. Un buon esercizio per chi usa per la prima volta il sistema metatrader5/mql5.
Potrei aver bisogno di fare qualche ottimizzazione per far andare il grafico verso l'alto :D
Mi è piaciuto molto lo stile di codifica di questo articolo, molto facile da leggere e seguire. Ho solo una richiesta se non ti dispiace, puoi anche dare un esempio di come implementare i trailing stop con questo esempio?
L'uso di variabili non inizializzate (o incomplete) (soprattutto le strutture) è un errore molto comune nella programmazione.
Cavolo, questa è l'unica risorsa in lingua russa dove (1) ti fanno il lavaggio del cervello e (2) ti senti grato per questo :))
Da 1,5 anni so che le variabili devono essere inizializzate; da 1,5 anni uso deliberatamente l'espressione "variabile di tipo struttura"; ma da 1,5 anni assegno valori solo a campi separati (obbligatori) della variabile di tipo Mqltraderequest, perché il Manuale di riferimento dice che "i campi obbligatori devono essere specificati per ogni operazione commerciale"....
Renat, sarebbe bello se tu (MQ) pubblicassi un articolo o una serie di articoli su "lavorare con la memoria e le variabili". In generale, qual è il modo corretto di lavorare con la memoria e le variabili? Dopo la squalifica di diversi EA al Campionato a causa dell'elevato consumo di memoria, questi articoli sarebbero appropriati. Rosh ha scritto in qualche thread che gli utenti dovrebbero ordinare gli articoli a cui sono interessati, ma non ho trovato questo thread, quindi scrivo qui.
Perché quando si stringe l'S/L a 5 (dovrebbe essere 5 pips)
Ho quanto segue
Perché quando si stringe l'S/L a 5 (dovrebbe essere 5 pips)
Ho quanto segue
È necessario controllare i livelli di stop(SYMBOL_TRADE_STOPS_LEVEL) per un simbolo prima di inviare una richiesta di negoziazione. Lo SL/TP non deve essere più vicino di questa distanza dal prezzo corrente per chiudere. L'esempio per ottenere questa proprietà:
Grazie, ma né il mio SL né il mio TP vengono eseguiti. Nel compilatore "Terminal" sono elencati come "0.00" o "0.0" Comunque è impossibile dare uno stoploss generale per tutti gli ordini. Inoltre non sono ancora riuscito a modificare i valori dei parametri "dall'esterno", cioè senza modificare il codice nell'editor.
Per il resto funziona benissimo! E i commenti sono di grande aiuto!
Grazie ancora,
locan BBS
Pubblicato il nuovo articolo Guida passo-passo alla scrittura di un Expert Advisor in MQL5 per principianti:
Autore: olowsam
Ciao Olowsam,
Grazie per questa guida passo-passo. Ho alcune domande, che spero tu possa aiutarmi a risolvere.
Ho seguito alla lettera le tue istruzioni, ma non sono riuscito a raggiungere il risultato desiderato. Prima di tutto, sto lavorando con l'ultima versione di Meta Trader 5.00, Build 6.55 (6 giugno 2012). Ho notato diverse differenze, la prima delle quali è che il modello della procedura guidata MQL5 ha delle opzioni in più rispetto a quanto indicato nelle tue note. In ogni caso, mi sono assicurato che il programma sia esattamente come lo avete descritto. L'ho compilato. Nessun problema. Zero errori. Sono riuscito a inserire tutti e 5 i punti di interruzione del debug come suggerito nelle tue note nella subroutine OnTick. Facendo clic sul pulsante verde Esegui, non succede nulla. L'esecuzione del programma non arriva a questo punto. Perché? Cosa succede? Se inserisco i breakpoint di debug all'inizio della sub OnInit, ad esempio, adzHandle=iADX9Null,0,ADX_Period), allora va tutto bene. Le schede STEP di debug si accendono e posso eseguire un singolo passo di questo controllo fino alla fine della sub OnInit. Tuttavia, dopo di ciò, di nuovo niente. In breve, non riesco a raggiungere la sub OnTick. Cosa sta succedendo e perché? Si tratta di un bug noto nel funzionamento del sistema Meta Trader? Come posso risolvere questo problema e andare avanti?
Spero che quanto sopra spieghi il problema che ho avuto, e spero che possiate capire cosa sta succedendo e che possiate aiutarmi.
Grazie.
Cordiali saluti
Kishor
Ehi, ottimo articolo,
Ho digitato tutto il codice man mano che procedevo e non ho ottenuto alcun errore di compilazione alla fine, quindi deve essere stato spiegato bene. Un buon esercizio per chi usa per la prima volta il sistema metatrader5/mql5.
Potrei aver bisogno di fare qualche ottimizzazione per far andare il grafico verso l'alto :D
Tutto il meglio, e grazie!!!
Mike
Ciao,
Mi è piaciuto molto lo stile di codifica di questo articolo, molto facile da leggere e seguire. Ho solo una richiesta se non ti dispiace, puoi anche dare un esempio di come implementare i trailing stop con questo esempio?
Grazie mille!