Discussione sull’articolo "Guida Step-By-Step alla scrittura di un Expert Advisor in MQL5 per Principianti" - pagina 7

 
Renat:

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.
 
Innanzitutto, il consumo di memoria è legato alle chiamate agli indicatori. Prima di creare maniglie di decine di indicatori su diversi simboli/tpimframes, pensate a quanto pagherete per questo. Posso consigliare l'articolo Ridurre il consumo di memoria per gli indicatori ausiliari e leggere l'intervista di uno dei partecipanti squalificati - Intervista con Atsushi Yamanaka (alohafx).
Интервью с Ацуси Яманака (alohafx) - Automated Trading Championship 2011
  • championship.mql5.com
Что общего между трейдингом, скайдайвингом, фьючерсами, Гавайями, переводами и шпионами? Мы тоже не знали, пока не пообщались с дисквалифицированным участником Ацуси Яманака (alohafx). Его кредо - ''Life is Good! - Жизнь прекрасна!'', и с этим трудно не согласиться. Было интересно узнать, что расстояние между разными континентами - не помеха в общении участников нашего Чемпионата.
 

Perché quando si stringe l'S/L a 5 (dovrebbe essere 5 pips)

Ho quanto segue

File:
Capture.PNG  8 kb
 
statarb:

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 calcolato
if(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 ancora,

locan BBS

.locan.BBS:

 

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!

 
Grazie mille per la splendida guida!