Errori, bug, domande - pagina 410

 
papaklass:
Puoi tracciare gli ordini in sospeso usando la funzione OrdersTotal(). Confronta il suo valore attuale con quello precedente. Se vuoi evitare ordini multipli in sospeso, usa il flag per impostare un ordine. Se questo flag == true, significa che un ordine è già stato impostato. Resetta questo flag quando l'ordine viene attivato, cioè OrdersTotal() cambierà.

Fortunatamente, sono passato attraverso queste basi un anno fa. Ho imparato queste basi un anno fa dagli articoli dedicati alle competenze iniziali di MQL5. Il campionato ha confermato - questo schema è buono per la formazione, ma non per il commercio quotidiano. Gli articoli di Roche hanno tutti i puntini sulle i e le stanghette.

E questa non è la questione di come controllare lo stato dell'ordine. Il punto è che i parametri di trading che ho descritto sopra possono semplificare notevolmente il lavoro con gli ordini e le posizioni. Dal punto di vista di un utente individuale (cioè io), la domanda"Cosa dovrei fare? Unknown", così come lavorare con gli ordini punto per punto piuttosto che attraverso il mazzo "symbol - OrdersTotal()".

cartapesta:
Tutto quello che dovete sapere è il simbolo su cui si è verificato questo evento.

Il punto è che se mettiamo da parte i paradigmi di formazione, è più importante conoscere il biglietto dell'ordine, e non il simbolo, per lavorare con gli ordini pendenti. Per essere più precisi, lavorare con un simbolo è accettabile, ma un sacco di lavoro extra.

P.S. È la prima volta che sento parlare di "abbonamento". È una bella variante.

 
papaklass:
Non pretendo di essere la verità in prima istanza, ma la tua affermazione sull'asilo puzza di arroganza.

Non prenderla sul personale. Ho corretto questa frase prima del tuo messaggio. Sai, a volte scrivi, lo mandi, - e poi quando lo leggi correggi eventuali ambiguità in frasi secondarie.

Sull'argomento. Abbiamo approcci esattamente opposti al trading: non mi interessa quando e come una posizione si apre/chiude, perché l'EA gestisce da sola quei momenti (sposta TP, trailing stop, ecc.). Per me è importante che gli ordini pendenti coprano sempre la situazione del mercato. Ecco perché sottolineo che un'affermazione come "solo un parametro-simbolo è sufficiente per OnTrade()" non riflette tutte le strategie comuni/tipiche.

 
Interesting:

Agli sviluppatori di

La cancellazione costante delle informazioni dell'account in Win 2003 SP2 (in modalità terminale) è un bug o è stato progettato per migliorare la sicurezza?

Più precisamente, se uso alternativamente la stessa copia del programma in modalità normale e terminale con diversi account, i dati dell'account scompaiono di tanto in tanto. Apparentemente, se si lavora solo in modalità terminale con diversi account, la situazione sarà simile (non l'ho ancora verificato).


Sì, proprio così.

Quando un altro utente Windows (anche sullo stesso computer) cerca di accedere al terminale che ha salvato le password di un altro utente Windows, le password vengono forzatamente resettate. Questo viene fatto per evitare che qualcuno possa rubare le password.

 
Virty:

Sì, è una domanda semplice, e già i guru stanno discutendo. È una rottura di scatole far funzionare correttamente il tester. Per comprare 1 lotto di EURUSD al prezzo attuale, devi eseguire 3-4 controlli. Se non lo fate, il tester funzionerà, ma non correttamente e, cosa importante, silenziosamente. Ne risulterà solo un saldo negativo o qualche altra sciocchezza. Ed è buono se i controlli hanno successo. Ma se SymbolInfoTick restituisce false, non sappiamo cosa fare. Dovrei appendere il codice di errore al muro invece dei premi nel campionato?

Ho provato "equity<0.55*balance" e "free_margin<100". Non ha funzionato. Non so perché non ha funzionato. Sono davvero confuso da questi margini.

Ho lasciato if(AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)<55.0). Sembra funzionare.

Le regole del campionato sono scritte in breve, nel gergo degli sviluppatori, mentre hanno bisogno di dettagli per i dummies.

Cosa c'è da discutere? Il livello di margine = Fondi/titoli*100%, o in termini di MQL5:

AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)=AccountInfoDouble(ACCOUNT_EQUITY)/AccountInfoDouble(ACCOUNT_MARGIN)*100=
AccountInfoDouble(ACCOUNT_EQUITY)/(AccountInfoDouble(ACCOUNT_EQUITY)-AccountInfoDouble(ACCOUNT_FREEMARGIN))*100

Questi parametri sono visualizzati nel vostro terminale nella scheda 'Trade', potete controllarli. Per quanto riguarda lo stop out, guardate una discussione simile nel 2007.

Установка Stop Out - MQL4 форум
  • www.mql5.com
Установка Stop Out - MQL4 форум
 
papaklass:

Vyacheslav, la tua risposta è incoraggiante. Qualcuno sul forum ha suggerito, secondo me, una soluzione accettabile: l'abbonamento. Implementa questa sottoscrizione simile alla funzione iCustom() che ha parametri obbligatori e non obbligatori. Quando si inizializza l'EA, ogni trader deve sottoscrivere gli eventi di cui ha bisogno. Non per il numero totale di eventi, ma solo per quelli che sono critici per il loro commercio. Questo approccio (sottoscrizione) faciliterà molto lo sviluppo di EA multivaluta e ridurrà davvero il codice. Fate un esperimento con almeno due funzioni OnTrade() e OnTick(). Fare il minimo - un simbolo. Poi si può aumentare il numero di eventi (parametri). La pratica è il criterio della verità. Finché non si prova, non si capisce quali difficoltà possono sorgere.

PS L'analogia con la funzione GetLastError(), che restituisce il valore della variabile di sistema LastError, è probabilmente più appropriata di quella con la funzione iCustom(). Digita la variabile di sistema TradeEvent e, quando OnTrade() si attiva, stampa il valore di questa variabile.

È la prima volta che sento parlare di abbonamento, ma è un'ottima idea come base per un'idea (come l'abbonamento agli eventi domatori o Depth of Market).

Inoltre, l'idea di una costante basata sul tipo _Error è piuttosto interessante.

A mio parere, il simbolo dovrebbe essere trasferito necessariamente, in linea di principio, possiamo iniziare a muoversi in questa direzione ora, in modo che prima del campionato di introdurre almeno qualche innovazione in questo settore.

Yedelkin:

Il punto è che se mettiamo da parte i paradigmi di formazione, è più importante conoscere il ticket dell'ordine piuttosto che il simbolo quando si tratta di ordini pendenti. Per essere precisi, lavorare con un simbolo è accettabile, ma è un sacco di lavoro extra.

All'inizio dobbiamo implementare solo il simbolo, poi avremo il tempo di pensare a cosa e come passare in aggiunta. Sarebbe bello gestire OnTrade() e OnTick() allo stesso modo.

Sviluppando il tema della sottoscrizione, è possibile organizzare la sottoscrizione ai tick di una certa coppia.

 
Yedelkin:

Non prenderla sul personale. Ho corretto questa frase prima del tuo messaggio. Sai, a volte scrivi, lo mandi, - e poi quando lo leggi correggi eventuali ambiguità in frasi secondarie.

Sull'argomento. Abbiamo approcci esattamente opposti al trading: non mi interessa quando e come una posizione si apre/chiude, perché l'EA gestisce da sola quei momenti (sposta TP, trailing stop, ecc.). Per me è importante che gli ordini pendenti coprano sempre la situazione del mercato. Ecco perché sottolineo che un'affermazione come "solo un parametro-simbolo è sufficiente per OnTrade()" non riflette tutte le strategie comuni/tipiche.

Sono d'accordo, non lo fa. Ma tuttavia, dobbiamo partire dal simbolo, e l'ordine/biglietto di compravendita o qualcos'altro sarà aggiunto in seguito.

Renat:

Sì, proprio così.

Quando un altro utente di Windows (anche sullo stesso computer) cerca di accedere a un terminale con password salvate da un altro utente di Windows, le password vengono forzatamente resettate. Questo viene fatto per evitare che qualcuno possa rubare le password.

Capisco, grazie (è quello che pensavo, ho pensato di assicurarmene).
 
Interesting:

Prima di tutto, solo il simbolo dovrebbe essere implementato, e poi ci sarà tempo per pensare a cosa e come passare ulteriormente.

...È il simbolo che dovrebbe essere avviato, e l'ordine/biglietto di compravendita o qualcos'altro sarà aggiunto in seguito è una domanda diversa.

In generale, gli accenti sono già fissati, vorrei solo far notare che se si agisce secondo il principio "ognuno si tira la coperta addosso" (tipo "datemi solo simbolo-parametro" o "solo biglietto-parametro"), allora non si può ottenere nulla. Ecco perché la mia domanda era originariamente formulata con una configurazione minima di parametri in mente. Esattamente "configurazione minima", poiché mi aspettavo che gli utenti più avanzati avrebbero avuto i loro desideri sull'espansione/chiarimento della loro lista.

Quindi è stato un po' sorprendente che i suggerimenti di limitare a un solo parametro (parametro carattere) siano emersi, specialmente sorprendente sullo sfondo della risposta di stringo, che non ha detto nulla riguardo agli sviluppatori che hanno problemi con il numero di parametri per OnTrade() a tutti. Il problema era che "uno stesso biglietto può risultare in un cumulo di messaggi". E verranno indipendentemente dal numero di parametri inseriti per la funzione.

...L'anno scorso non sono riuscito a capire per molto tempo di quali "stampelle" parlassero periodicamente i professionisti. Ora, sulla base della discussione dell'argomento sui parametri per OnTrade() ho ottenuto una forte associazione: "stampelle" == mezze misure quando si risolve questo o quel problema. Penso che il problema dei parametri per OnTrade() sarà risolto senza di essi. Lode, come si dice, agli sviluppatori per il loro approccio complesso alla soluzione dei problemi! :)

 

Cosa significa il messaggio "pump result 0" alla fine del test?

 
MoneyJinn:

build 466: i risultati del singolo test differiscono dai risultati dell'ottimizzazione eseguita un minuto prima.

Qual è la ragione? Quali parametri aggiornati prende il tester dal mercato durante il nuovo test?

Puoi allegare i risultati?
 
Ashes:

Cosa significa il messaggio "pump result 0" alla fine del test?

Un messaggio di debug che scivola a caso. Il numero dopo il risultato della pompa corrisponde al numero all'avvio