Errori, bug, domande - pagina 2313

 
Vladimir Karputov:

Ho questo problema sul mio portatile, quando un compito continua a contare sull'agente (per esempio, ho fatto un casino nel codice con la posizione di apertura e il povero agente manda e manda ordini di compravendita, ma riceve ban in risposta, ma continua a bombardare, con il risultato che tutti gli agenti hanno finito da tempo i calcoli, ma questo povero ragazzo continua a martellare e martellare).

Cioè, in breve: l'agente ha un compito dall'ultima missione, e continua a combattere con esso.

Ho avuto questo contrario oggi, dopo che gli agenti erano stati fuori uso per più di 24 ore.

Penso che ci sia un problema con l'autorizzazione e lo scambio di dati, cioè se non viene trasmesso nessun EA/history per molto tempo, il lato client si ricollega e l'agente è ancora in attesa dell'arrivo dei file.
 
fxsaber :

Quasi tre milioni di tick e solo 16K OrderSend. Ma questi ordini commerciali richiedono un terzo del tempo. E su ogni tick ci sono dei calcoli nell'Expert Advisor.

Da qui la mia domanda. Potresti eseguire il codice di OrderSend nel profiler? In quale luogo c'è un tale intoppo?

Suppongo che se si sostituisce la funzione standard con la propria, funzionerà più velocemente. Probabilmente, ci sono alcuni controlli e gesti costosi in OrderSend. Per esempio, se non ci sono funzioni History e OnTrade* nell'Expert Advisor (+ indicatori), allora formare i record/eventi appropriati è una perdita di tempo.

Capisco che per alcune persone una corsa dura molti minuti. Ma ci sono casi come sopra - unità di secondi, se si presta attenzione alla velocità di esecuzione. E qui si scopre che lancio Optimize per tre ore, e di queste un'ora è OrderSend, il cui tempo medio di esecuzione è 69 µs (vedi screenshot):

Ciao,

Hai ricevuto una risposta utile da Metaquotes?

Ho un cliente che vuole usare MT5 Strategy Tester per migliorare le prestazioni. La strategia EA può facilmente utilizzare la modalità "Solo prezzi disponibili". Tuttavia, il backtest, che richiede 1,5 secondi con MT4, è fatto in 5 secondi con MT5!

La strategia usa un trailing stop e sembra usare OrderSend () per il 90% del tempo di backtest:


 
Alain Verleyen:

Ciao,

Hai ricevuto una risposta utile da Metaquotes?

Ho un cliente che vuole usare MT5 Strategy Tester per migliorare le prestazioni. La strategia EA può facilmente utilizzare la modalità "Solo prezzi disponibili". Tuttavia, il backtest, che richiede 1,5 secondi con MT4, è fatto in 5 secondi con MT5!

La strategia usa un trailing stop e sembra usare OrderSend () per il 90% del tempo di backtest:

Tutte le risposte sono state date solo in questo thread. Sembra che qualcosa sia stato fatto.

MetaQuotes Software Corp.:
  1. Tester: tester di strategie ottimizzato e accelerato.

L'ho risolto da solo attraverso Virtual.


ZZY Mostra il tuo EA.

Библиотеки: Virtual
Библиотеки: Virtual
  • 2018.10.03
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: Virtual
 
fxsaber:

Sembra che qualcosa sia stato fatto

1930

Core 1  pass 0 returned result 99753711.00 in 0:00:03.729
Core 1  pass 1 returned result 99753711.00 in 0:00:03.432
Core 1  pass 2 returned result 99753711.00 in 0:00:03.401
Core 1  pass 3 returned result 99753711.00 in 0:00:03.354
Core 1  pass 4 returned result 99753711.00 in 0:00:03.323
Core 1  pass 5 returned result 99753711.00 in 0:00:03.385
Core 1  pass 6 returned result 99753711.00 in 0:00:03.448
Core 1  pass 7 returned result 99753711.00 in 0:00:03.369
Core 1  pass 8 returned result 99753711.00 in 0:00:03.369
Core 1  pass 9 returned result 99753711.00 in 0:00:03.385
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 35 seconds
Statistics      shortest pass 0:00:03.323, longest pass 0:00:03.729, average pass 0:00:03.419


Virtuale

Core 1  pass 0 returned result 99753711.00 in 0:00:02.231
Core 1  pass 1 returned result 99753711.00 in 0:00:01.217
Core 1  pass 2 returned result 99753711.00 in 0:00:01.217
Core 1  pass 3 returned result 99753711.00 in 0:00:01.185
Core 1  pass 4 returned result 99753711.00 in 0:00:01.170
Core 1  pass 5 returned result 99753711.00 in 0:00:01.201
Core 1  pass 6 returned result 99753711.00 in 0:00:01.186
Core 1  pass 7 returned result 99753711.00 in 0:00:01.201
Core 1  pass 8 returned result 99753711.00 in 0:00:01.185
Core 1  pass 9 returned result 99753711.00 in 0:00:01.202
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 13 seconds
Statistics      shortest pass 0:00:01.170, longest pass 0:00:02.231, average pass 0:00:01.299


La differenza è tre volte quella del 1881. Probabilmente è stato modificato da qualche altra parte. Ma l'argomento OrderSend probabilmente non è stato toccato.

 
fxsaber :

Tutte le risposte sono state date solo in questo thread. Sembra che qualcosa sia stato fatto.

L'ho risolto da solo attraverso Virtual.

Grazie per la vostra risposta.
 
Ragazzi. C'è di nuovo un errore sul sito.
Non posso rispondere ai messaggi nel marketplace dal mio telefono. La lista non appare.
In vacanza, senza computer.

 

L'ottimizzazione genera pacchetti di 128 lavori per ogni agente. È possibile formare pacchi di dimensioni diverse?

Questa è la situazione

Tutti gli agenti tranne uno hanno completato i loro compiti. E dobbiamo aspettare che l'ottimizzazione si completi a causa di un agente. Ma è stato possibile ottenere la cessazione quasi simultanea del lavoro di tutti gli agenti.

Consideriamo, per esempio, come nello screenshot, 8 agenti e 5376 compiti. 5376 / 8 = 672 compiti. Così si possono formare fasci di 336 (=672/2), 168 (672/4) o 84 (672/8) lavori in ciascuno. E poi tutti gli agenti avrebbero raggiunto il traguardo nello stesso momento.


Il valore di 128, invece, non tiene conto di questa molteplicità. Questo si traduce in tempi di ottimizzazione più lunghi se vengono utilizzati più core.

 

Volevo mettere un voto sulla KB e non ha funzionato. E a giudicare dal fatto che le pubblicazioni recenti non hanno alcuna valutazione, sembra che io non sia l'unico con questo problema.

E allo stesso tempo, voglio ammettere che il sistema di valutazione(semplice media aritmetica ) ti fa desiderare di più. Dopo tutto, un codice appena pubblicato con una valutazione a 5 stelle sarà più alto di un codice che è stato in BE per diversi anni e ha 49 valutazioni a 5 stelle e una a 4 stelle. È giusto?

Secondo me, almeno questa formula sarebbe molto più equa:

double R=Average*pow(N,0.1);

Dove:

R- la classificazione che stai cercando

Punteggio medio aritmetico

N- numero di valutazioni.

 
fxsaber:

L'ottimizzazione genera pacchetti di 128 lavori per ogni agente. È possibile formare pacchi di dimensioni diverse?

Questa è la situazione

Tutti gli agenti tranne uno hanno completato i loro compiti. E dobbiamo aspettare che l'ottimizzazione si completi a causa di un agente. Ma è stato possibile ottenere la cessazione quasi simultanea del lavoro di tutti gli agenti.

Consideriamo, per esempio, come nello screenshot, 8 agenti e 5376 compiti. 5376 / 8 = 672 compiti. Così si possono formare fasci di 336 (=672/2), 168 (672/4) o 84 (672/8) lavori in ciascuno. E poi tutti gli agenti avrebbero raggiunto il traguardo nello stesso momento.


Il valore di 128, invece, non tiene conto di questa molteplicità. Questo fa sì che il tempo di ottimizzazione aumenti se vengono utilizzati più core.

Nel complesso sono d'accordo, ma penso che sarebbe più corretto abilitare la cancellazione automatica dei lavori per gli agenti (già implementata premendo il pulsante per disabilitare l'attività degli agenti), se ci sono agenti liberi e 5 volte più lavori e ridistribuire nuovamente i lavori a tutti gli agenti, compresi quelli remoti.

 

Buon pomeriggio a tutti! Scusa per la domanda stupida. Ragazzi, potreste dirmi come fare in modo che la proprietà Pressed di un pulsante sia vera quando si clicca con il tasto sinistro e falsa quando si clicca con il tasto sinistro. Ora la situazione è tale, che non succede niente premendolo, e rilasciandolo Pressed cambia il suo valore al contrario.

Ho capito che ho bisogno di sovrascrivere i gestori di eventi CButton::OnMouseUp e CButton::OnMouseDown, ma non ho idea di dove farlo. Un suggerimento per favore. Grazie in anticipo!