Tester di supporto agli script e ai consulenti MG4 - pagina 4

 

Potete tutti sbattere la testa contro il muro, o inventare l'acqua calda.... MaInteger ha ragione.

Intero:

Esattamente. Soprattutto approfittando dell'autorità della propria posizione superiore.

Tutte le lingue sono uguali, tranne quelle stravaganti. Tutti loro possono essere imparati in 21 giorni da qualsiasi idiota. Tutti i for, while, if, switch possono avere una notazione diversa, ma non fa alcuna differenza in linea di principio. Non è importante il modo in cui gli operatori sono scritti, ma l'infrastruttura con cui il linguaggio interagisce. In questo senso MT4 e MT5 sono due mondi diversi.

La differenza in tutto. A partire dal piccolo - con la numerazione delle barre nell'indicatore, in MT4 da destra a sinistra, in MT5 da sinistra a destra. Continuando con quello più significativo - la posizione aggregata e l'organizzazione dei dati storici del commercio. La più grande differenza in ciò che è spesso richiesto - nel modo di accedere ai dati delle quotazioni e degli indicatori, la copia dei dati richiede il controllo, poi l'indicizzazione da sinistra a destra, poi da destra a sinistra, il tempo della barra è incluso nel range, o no. Prendete da soli la discussione della funzione iBarShift() in CodeBase.

In MT4, per assicurare il funzionamento stabile dell'EA era sufficiente controllare il valore di ritorno di OrderSelect(), ma in MT5 è necessario fare controlli ad ogni passo, anche ai dati dell'ultimo tick. Ci sono anche alcune sottigliezze della programmazione MT5, che imparerete solo dopo aver sofferto molto, perché ci sono molte insidie.


 
Renat:

Quello che non si vede su questo forum.

Perché, non c'è responsabilità. Puoi dire qualsiasi cosa.

Le lingue sono ancora diverse. Il codice di un indicatore per cinque non funziona sempre in quattro. Non c'è abbastanza capacità
 
Vinin:
Le lingue sono ancora diverse. Il codice indicatore per il cinque non funziona sempre nel quattro. Non c'è abbastanza capacità
Meglio che i codici indicatori per il 4 funzionino ancora nel 4. E non ci sarà bisogno di funzioni
 
borilunad:
Sarebbe meglio se i codici degli indicatori per il 4 funzionassero ancora nel 4. E non ci sarebbe bisogno di funzioni.
Funzionano. A meno che non siano modificati o ricompilati
 
Vinin:
Funzionano. A meno che non li modifichiate o li ricompiliate.
Non ho cambiato nulla nel "Tema", ma quando il Terminale è stato aggiornato dalla 670a alla 711a build, è diventato lento con qualsiasi di esse nel tester, ecco perché l'ho segnalato, ma ho iniziato a sperimentare con la MA standard e ho trovato molte cose che non potevo prima per inesperienza. Ora ci lavoro e ne sono felice. Solo insoddisfatto del mio acquisto di un 8, che si chiama, l'ho preso e ho pianificato di lavorare solo su di esso, e su Vista tutto il resto. Credo che dovrò continuare con Vista finché sopravvive e poi comprarlo senza fidarmi di nessuno e lascerò che questo 8-per il sapone, i siti web ecc. :)
 
Renat:

MetaTrader 4 ha una profondità limitata della storia, timeframes separati e un accesso diretto alle barre dei simboli tramite Open/High/Low/Close/Time[xxx]. Tale accesso diretto è molto costoso da implementare in termini di risorse e di costo della CPU. Considera che ogni Expert Advisor ha la propria copia locale di questi dati per evitare conflitti con altri Expert Advisor e con il terminale stesso.

Questo non è davvero un problema dell'utente, è un vostro problema. Cioè si potrebbe dire che state spostando i problemi di accesso ai dati del terminale sull'utente.

Cioè o si alza la barra delle abilità di codifica o si ottiene un sacco di codice non valido che può essere peggiore e più inefficiente dell'accesso diretto conveniente in MT4.

In effetti, alcune delle sue soluzioni sono molto controverse.

 
TheXpert:

Questo non è davvero un problema dell'utente, è un vostro problema. Quindi si potrebbe dire che state spostando i problemi di accesso ai dati del terminale sull'utente.

Cioè, o si alza la barra delle abilità di codifica o si ottiene un mucchio di codice storto che può funzionare molto peggio e inefficace dell'accesso diretto conveniente in MT4.

In generale, alcune delle sue soluzioni sono molto controverse.


Leggi tutto il testo - c'è un ragionamento diretto per cui è impossibile utilizzarlo ulteriormente.

Affinché l'utente non ci rimproveri più tardi per i freni o l'uso eccessivo delle risorse, abbiamo dato un controllo più efficace sui dati richiesti.

Un semplice esempio: un Expert Advisor su Eurodollar M1 con una storia di 10 anni, il grafico attuale prende circa 200 mb. Nel modello MT4 dovremmo replicare (anche con parsimonia) in ogni tick 200 mb nello shadow snapshot di expert e perderemmo 200 mb di memoria. In MT5 non c'è affatto consumo di memoria per tale cache, e l'Expert Advisor molto probabilmente richiederà solo un piccolo pezzo di storia, lo metterà in un array locale e lavorerà con esso alla massima velocità.

 
Renat:

Per evitare che l'utente ci rimproveri in seguito per i ritardi o il consumo eccessivo di risorse, abbiamo dato un controllo più efficace sui dati richiesti.

Ho letto tutto il testo. Non è impossibile. Raccogliete i timeframe per i grafici, potreste raccoglierli per gli Expert Advisors allo stesso modo, e farlo in modo abbastanza efficace.

Cosa ti fa pensare che l'utente ti ucciderebbe per aver frenato?

Nel modello MT4 dovremmo replicare (anche con parsimonia) ad ogni tick 200 Mb per shadow snapshot di EA e sprecare 200 Mb di memoria. MT5 non ha alcuna spesa di memoria per una tale cache, e l'Expert Advisor probabilmente richiederà solo un piccolo pezzo di storia, lo metterà in un array locale e lavorerà con esso alla massima velocità.

Fate una cache intelligente (c'è esperienza), non tenete il resto in memoria.
 

Scrivete il vostro motore terminale con un ecosistema interno efficiente e una macchina virtuale, e poi parleremo. Abbiamo scritto le ultime quattro piattaforme in questo modo, migliorando l'architettura di volta in volta. Quindi le nostre decisioni sono giustificate dall'esperienza pratica.

Altrimenti, è impossibile rispondere al consiglio "fallo, cache intelligente, non saranno abusati, ecc.

 
Integer:

Esattamente. Soprattutto approfittando dell'autorità della propria posizione superiore.

Tutte le lingue sono uguali, tranne quelle particolarmente stravaganti. Tutti loro possono essere imparati in 21 giorni da qualsiasi idiota. Tutti i for, while, if, switch possono avere una notazione diversa, ma non cambia fondamentalmente nulla. Non è importante il modo in cui gli operatori sono scritti, ma l'infrastruttura con cui il linguaggio interagisce. In questo senso MT4 e MT5 sono due mondi diversi.

C'è una differenza in tutto. A cominciare da uno minore - la numerazione delle barre nell'indicatore, in MT4 da destra a sinistra, in MT5 da sinistra a destra.

...

La numerazione in MT5 è invertita rispetto a MT4 solo per default. Infatti, gli array possono essere invertiti in qualsiasi direzione. Vedere la documentazione: Direzione dell'indicizzazione in array, buffer e serie temporali.

Intero:

...

Continuando con il più essenziale - la posizione aggregata e l'organizzazione dei dati storici del commercio.

...

E su MT4 c'erano molti problemi perché dovevamo coprire le posizioni opposte degli strumenti inviando un ordine extra al server attraverso OrderCloseBy() che non sempre funzionava per vari motivi. Pertanto, abbiamo dovuto controllare e inviare nuovamente gli ordini, altrimenti l'intera logica del sistema di trading sarebbe stata interrotta.

In MT5, a causa della posizione aggregata, tutto è stato semplificato ad un livello accettabile. Ora, per esempio, non dobbiamo nemmeno preoccuparci di quale dovrebbe essere il livello di breakeven - questa stupida domanda è rilevante solo su MT4. Dopo tutto, il prezzo aperto di una posizione aggregata è il livello di Breakeven. Tutto è diventato più semplice con le posizioni vincenti, perché vengono chiuse automaticamente sul server senza inviare ordini aggiuntivi.

Cioè, a spese della posa aggregata, la quantità di codice è stata ridotta al livello necessario e sufficiente, così come la quantità di ordini ridondanti e di controlli richiesti per essi.

Intero:

In MT4 era sufficiente controllare il valore di ritorno di OrderSelect(), mentre in MT5 è necessario fare controlli ad ogni passo, anche ai dati dell'ultimo tick. Ci sono alcune sottigliezze in più della programmazione MT5, che imparerete solo dopo aver sofferto molto, perché ci sono molte insidie.

Nessuno sta obbligando ad usare controlli aggiuntivi in MT5, si può sperare lo stesso che in MT4 e cercare di elaborare qualsiasi cosa senza controlli, che non è stata caricata dal server correttamente o non è stata caricata affatto, ma è appena inizializzata. In questo caso la performance corrisponderà anche a MT4, cioè tutto andrà bene solo nel tester, e vedremo le assurdità sul conto demo e reale.

Cioè l'aumento del numero di controlli aggiuntivi in MT5 è destinato a garantire la qualità delle informazioni ottenute. In MT4 molti di questi controlli sono assenti, quindi in alcuni casi critici è impossibile assicurarsi che l'informazione ricevuta dal terminale, che deve essere elaborata per prendere una decisione, sia affidabile. Si può solo sperare che il terminale abbia scaricato correttamente tutto il necessario dal server, ma non c'è modo di esserne sicuri - non c'è niente per controllarne la correttezza.


In generale, un attacco alla MT5 - è solo una scusa marcia per coloro che non vogliono passare a un nuovo terminale o un'invenzione di coloro che hanno solo sentito parlare della MT5, ma non sanno dove sia.

MT4 è il terminale di ieri per creare algoritmi primitivi che sono più o meno adatti al "trading" nel tester per disegnare belle curve di equilibrio. Se non ti interessa disegnare delle belle curve di equilibrio, perché non puoi metterle in tasca e metterle sul pane, e puoi usarle solo per vantarti nel thread rustico, devi passare a MT5.

Motivazione: