Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1800
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Qual è il DecreaseFactor nel consulente MT standard su mashcats?
È strano, i pulsanti sono lì ora. E il disordine del codice, perché è una bozza. Comunque, ho già fatto una versione funzionante, l'ultima cosa che resta è cancellare i pulsanti, qui di nuovo è iniziato questo schifo: la funzione di cancellazione non trova nessuno dei 4 oggetti.
Cliccando sul pulsante si creano tutte le linee:
Se il pulsante viene premuto - cancella:
Che mucchio di stronzate è scritto, mi dispiace.
E non c'è bisogno di guardare gli eventi. Non funzionano affatto nel tester. Dovete guardare lo stato.
UPD. Non modesto, naturalmente, ma se avessi ascoltato i miei suggerimenti per una volta, avresti già fatto tutto da tempo. In modo corretto e senza le stampelle di un multipiano.
Ma ognuno sceglie l'abisso in cui vuole immergersi.
Per usare il debug nel tester, imparate a scrivere in MQL5. Lì tutto funziona.
Non c'è rinominazione di oggetti. Pensatelo come la sostituzione di un oggetto esistente con uno nuovo.
Questo non può essere. Il tuo codice sembra un casino di cose. Questo è probabilmente il motivo per cui si verificano dei lag con i pulsanti. Come ti ho detto prima, inizia con qualcosa di semplice. Non complicare troppo le cose. E complicarlo gradualmente quando il semplice comincia a funzionare e si ha fiducia in esso.
E come faccio a vedere gli stati se sono attivati da un evento (da un clic)? Sì, ma sto scrivendo in mql4, è lo stesso che dire "impara a scrivere in c# dove funziona il debug".
"Corretto e senza stampelle a più piani. "Quindi nascondere gli oggetti è solo una stampella.
Tutto quello che ho fatto, tutto funziona https://gist.github.com/satorkain/0cf7a8df8ec1f4b3191defd04c94a418
Cliccando sul pulsante vengono create tutte le linee in una volta, poi vengono nascoste e ne rimane solo una a seconda della posizione del pannello dei pulsanti. Altre linee sono nascoste/mostrate a seconda della posizione del cursore rispetto al prezzo.
P.S.
Se non fosse stato per mql4 storto non avrei dovuto inventarmi questa assurdità con gli oggetti nascosti, tutto avrebbe dovuto funzionare la prima volta con la cancellazione/rinominazione degli oggetti.
E come faccio a vedere gli stati se sono attivati da un evento (da un clic)? Sì, ma io scrivo in mql4, è lo stesso che dire "impara a scrivere in c# dove funziona il debug".
"Corretto e senza stampelle a più piani. "Quindi nascondere gli oggetti è solo una stampella.
Tutto quello che ho fatto, tutto funziona https://gist.github.com/satorkain/0cf7a8df8ec1f4b3191defd04c94a418
Cliccando sul pulsante vengono create tutte le linee in una volta, poi vengono nascoste e ne rimane solo una a seconda della posizione del pannello del pulsante. Altre linee sono nascoste/mostrate a seconda della posizione del cursore rispetto al prezzo.
P.S.
Se non fosse stato per lo storto mql4, non avrei dovuto inventare questa assurdità di nascondere gli oggetti, tutto avrebbe dovuto funzionare la prima volta anche con la cancellazione/rinominazione degli oggetti.
Nascondere un oggetto è solo il metodo raccomandato dallo sviluppatore. E c'è una proprietà speciale per questo. Per vedere lo stato, dovete guardare la proprietà "State" del pulsante.
Ciò che è storto qui è la vostra logica e la sostituzione di nozioni - prendete i mezzi raccomandati dagli sviluppatori come una stampella, e prendete la costante creazione/cancellazione vorace di oggetti come puro codice, ma questo è esattamente ciò che è una stampella, bypassando il metodo veloce raccomandato.
A proposito, per rendere rapidamente un oggetto in cima a tutti gli altri, dovete renderlo invisibile, e immediatamente visibile - questo ridefinirà la sua posizione nella lista degli oggetti, e sarà in cima.
ZS. E anche lì, sul git, hai pubblicato il codice con un C-meno. Completamente incline all'errore. Una sola linea non viene creata e tutto crolla. Questo è stato immediatamente evidente. Si creano linee nel gestore di eventi - per cosa? A cosa vi serve OnInit()? L'hai creato, ne hai controllato il successo, hai impostato una bandiera e l'hai nascosto. In OnDeinit() avete cancellato gli oggetti creati dal vostro programma. Avete anche bisogno del prefisso del nome per questo.
Mostri e nascondi solo nel gestore di eventi - non ci dovrebbe essere nessun edificio. Per il suo caso - esattamente.
Mi vergognerei di pubblicare una cosa del genere in pubblico dominio su git. Ma questo è per me.
E tu? È giusto che la gente se ne approfitti?
Nascondere un oggetto è esattamente il metodo raccomandato dallo sviluppatore. E c'è una proprietà speciale per questo. Per vedere lo stato, dovete guardare la proprietà "State" del pulsante.
Ciò che è storto qui è la vostra logica e la sostituzione di nozioni - prendete i mezzi raccomandati dagli sviluppatori come una stampella, e prendete la costante creazione/cancellazione vorace di oggetti come puro codice, ma questo è esattamente ciò che è una stampella per bypassare il metodo rapido raccomandato.
A proposito, per rendere rapidamente un oggetto in cima a tutti gli altri, dovete renderlo invisibile, e immediatamente visibile - questo ridefinirà la sua posizione nella lista degli oggetti, e sarà in cima.
ZS. E anche lì, sul git, hai pubblicato il codice con un C-meno. Completamente incline all'errore. Una volta che una linea non viene creata, tutto crolla. Questo è stato immediatamente evidente. Si creano linee nel gestore di eventi - per cosa? A cosa vi serve OnInit()? Lo si crea, si controlla il suo successo, si imposta una bandiera e lo si nasconde. In OnDeinit() avete cancellato gli oggetti creati dal vostro programma. Avete anche bisogno del prefisso del nome per questo.
Mostri e nascondi solo nel gestore di eventi - non ci dovrebbe essere nessun edificio. Per il suo caso - esattamente.
Mi vergognerei di pubblicare una cosa del genere in pubblico dominio su git. Ma questo è per me.
E tu? È giusto che la gente se ne approfitti?
Vorace di creare 1 linea di 4 come necessario? :) E se ci sono 200 linee? Sarà economico crearli tutti insieme secondo la vostra logica? E come è stato concepito dagli sviluppatori è noto solo a loro, e concepito in un modo molto poco intuitivo. Come se non fosse necessario nulla di incredibile o illogico. Come potevo sapere che avrei dovuto lavorare con gli oggetti solo in questo modo e non in un altro? Forse da un libro di testo su mql4? Dubito che questo punto sia spiegato lì.
Almeno, funziona come previsto :) È tra parentesi nel titolo (pubblico), quindi non è ancora completo, ma sì, non c'è un controllo per creare oggetti, sistemiamolo. E l'ho postato su git solo perché non riuscivo a ricordare incollare bin. Vergogna? Git è stato creato per le persone per imparare, scambiare esperienze, condividere codice, funzionante o no, non fa differenza, chiunque può fare un fork e apportare modifiche se non è soddisfatto di qualcosa.
Ecco, 250 oggetti sono stati creati e conservati in memoria per la durata dell'Expert Advisor. Questo è ciò che intendo per "logica non intuitiva". Per esempio, nel tutorial su OnInit(), si può leggere solo che la funzione viene elaborata durante l'inizializzazione dell'Expert Advisor/indicatore.
Lasciate che vi dica un segreto. Potete creare fino a 1.000 oggetti o più, purché non abbiate una "calcolatrice". Ma può anche farlo. Una calcolatrice è un computer con 4GB di RAM. Tutto ciò che è al di sotto è "la calcolatrice della nonna"... :) Così si possono creare oggetti tutti insieme o uno alla volta. Non fa differenza. Ma senza fanatismo.
In questo modo, tutto funziona per tutti se lo si fa con saggezza!...
Voracità di creare 1 linea di 4 come necessario? :) E se ci sono 200 linee? Sarebbe economico crearli tutti insieme secondo la sua logica? E come è stato concepito dagli sviluppatori è noto solo a loro, e concepito in un modo molto poco intuitivo. Come se non fosse necessario nulla di incredibile o illogico. Come potevo sapere che avrei dovuto lavorare con gli oggetti solo in questo modo e non in un altro? Forse da un libro di testo su mql4? Dubito che questo punto sia spiegato lì.
Almeno, funziona come previsto :) È tra parentesi nel titolo (pubblico), quindi non è ancora completo, ma sì, non c'è un controllo per creare oggetti, sistemiamolo. E l'ho postato su git solo perché non riuscivo a ricordare incollare bin. Vergogna? Git è stato creato per le persone per imparare, scambiare esperienze, condividere codice, funzionante o no, non fa differenza, chiunque può fare un fork e apportare modifiche se non è soddisfatto di qualcosa.
Ecco, 250 oggetti sono stati creati e conservati in memoria per la durata dell'Expert Advisor. Questo è ciò che intendo per "logica non intuitiva". Puoi leggere nel tutorial, per esempio, a proposito di OnInit(), che la funzione viene elaborata durante l'inizializzazione di un EA/indicatore.
Potete creare tutti gli oggetti di cui avete bisogno allo stesso tempo. All'epoca MT non era molto sviluppato in termini di disegno di buffer di indicatori, dovevamo disegnare 400 candele visibili con linee di tendenza, per una candela abbiamo bisogno di 5 linee, 400*5=2000, più un oggetto per ogni candela e così via. In totale abbiamo circa 2500 oggetti. Ha funzionato senza alcuna ottusità.
Non capite bene la logica del lavoro con gli oggetti, ma sapete come argomentare. È meglio fare il contrario.
Voracità di creare 1 linea di 4 come necessario? :) E se ci sono 200 linee? Sarebbe economico crearli tutti insieme secondo la sua logica? E come è stato concepito dagli sviluppatori è noto solo a loro, e concepito in un modo molto poco intuitivo. Come se non fosse necessario nulla di incredibile o illogico. Come potevo sapere che avrei dovuto lavorare con gli oggetti solo in questo modo e non in un altro? Forse da un libro di testo su mql4? Dubito che questo punto sia spiegato lì.
Almeno, funziona come previsto :) È tra parentesi nel titolo (pubblico), quindi non è ancora completo, ma sì, non c'è un controllo per creare oggetti, sistemiamolo. E l'ho postato su git solo perché non riuscivo a ricordare incollare bin. Vergogna? Git è stato creato per le persone per imparare, scambiare esperienze, condividere codice, funzionante o no, non fa differenza, chiunque può fare un fork e apportare modifiche se non è soddisfatto di qualcosa.
Ecco, 250 oggetti sono stati creati e conservati in memoria per la durata dell'Expert Advisor. Questo è ciò che intendo per "logica non intuitiva". L'unica cosa che si può leggere nel tutorial, per esempio, su OnInit(), è che la funzione viene elaborata durante l'inizializzazione dell'Expert Advisor/indicatore.
Benvenuti. Cercherò di spiegarlo in russo semplice.
State andando a pesca.
Oppure puoi prendere subito tutto quello che ti serve dalla dispensa (OnInit), pescare senza correre e, quando arrivi a casa, mettere tutto nella dispensa e nel frigorifero (OnDeinit).
Potresti averlo saputo qui sul forum. Bisogna solo ascoltare e sentire quello che ti viene detto a volte.
Altrimenti si fa una domanda, si ottiene una risposta, si dice "stronzate" e si fa come si crede.
Bisogna prima pensare alla domanda, fare domande, e poi iniziare l'editing.
Sapete che la cosa più semplice nella programmazione è stampare il codice? E la parte del leone dello sviluppo è pensare alla logica.
Mi dispiace di tirare fuori questo argomento una seconda volta.
Ma c'è un problema che non posso ancora risolvere, cioè
aprire una serie di ordini (uno dopo l'altro) sulla stessa candela.
Ho bisogno di impedire all'EA di aprire un nuovo ordine sulla stessa candela.
Ho pensato di risolverlo usando Sleep(), ma Makar ha detto che sarebbe stato meglio non fermare il processo.
Il codice ora assomiglia a questo:
Ho bisogno che l'EA non sia in grado di aprire un nuovo ordine sulla stessa candela.