Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1864
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
Recentemente ho scritto un avviso:#18550. Ma può essere migliorato aggiungendo SendNotification:
Aggiungete le linee che ho evidenziato al codice sorgente, lasciatelo nella cartella Indicatori e compilatelo. Questo indicatore può essere aggiunto al grafico tutte le volte che vuoi e ricevere segnali quando diversi livelli vengono attraversati. Il codice è stato finalizzato online. Il risultato non è verificato.
Forum sul trading, sistemi di trading automatico e test di strategia
Tutte le domande dei neofiti su MQL4 e MQL5, aiuto e discussione su algoritmi e codici
GlaVredFX, 2022.01.17 18:59
Sto cercando il codice per chiudere gli ordini e se non ne vedo, aprirò un nuovo ordine.
Ma per qualche motivo, chiude solo 1 ordine e si ferma prima del prossimo segnale.
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Signal 1.1322 < clos 1.1304 ExistPosSell 0
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e: Signal 1.1322 > clos 1.1304 ExistPosBuy 1
2022.01.17 16:22:08.366 2022.01.04 08:00:00 e: Signal 1.1325 < clos 1.1306 ExistPosSell 0
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e: Signal 1.1325 > clos 1.1306 ExistPosBuy 1
2022.01.17 16:22:08.327 2022.01.04 2022.01.04 00:00:00 e: Signal 1.1326 < clos 1.1296 ExistPosSell 0
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e: Signal 1.1326 > clos 1.1296 ExistPosBuy 1
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Signal 1.1328 < clos 1.1283 ExistPosSell 0
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: close #1 buy 0.01 EURUSD at 1.13598 at price 1.12831
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e: Signal 1.1328 > close 1.1283 ExistPosBuy 1
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: open #4 buy 0.01 EURUSD at 1.13512 ok
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Segnale 1.134 < chiusura 1.135 ExistPosSell 0
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e: Segnale 1.134 > chiusura 1.135 ExistPosBuy 1
Se presti un po' più di attenzione alla tua domanda e al tuo codice, lo vedrai da solo.
La questione è che il 1 ordine più redditizio dovrebbe chiudersi su 1 barra, poi aspettare una nuova barra e chiudere di nuovo il 1 ordine redditizio. Non dovremmo chiuderli tutti in una volta.
Questo significa che chiudiamo sulla prima barra, ma non succede nulla sulla barra successiva.
Il problema è che l'1 ordine più redditizio dovrebbe chiudersi su 1 barra, poi aspettare una nuova barra e chiudere di nuovo l'1 ordine redditizio. Non dovreste chiuderli tutti insieme.
Allora dovete formulare correttamente le vostre domande. Avete solo 1 segnale. Riceverai solo 1 segnale all'apertura di una nuova barra. Se c'è solo 1 segnale, quanti ordini saranno chiusi? E solo se il segnale appare su una nuova barra. E, se non c'è nessun segnale, gli ordini saranno chiusi sulle barre successive. Di nuovo, se c'è un segnale.
Poi bisogna formulare le domande in modo corretto. Si ottiene solo 1 segnale. Ed è all'apertura di un nuovo bar. E se c'è solo 1 segnale, quanti ordini saranno chiusi? E solo se il segnale appare su una nuova barra. E, se non c'è nessun segnale, gli ordini saranno chiusi sulle barre successive. E ancora, se c'è un segnale.
In questi casi un diagramma di flusso di solito aiuta. Oppure abbiamo bisogno di descrivere l'algoritmo in dettaglio punto per punto su un pezzo di carta o in un file di testo. E solo allora capirete come scrivere il vostro codice.
Bisogno di funzione per chiudere 1 ordine aperto per primo tra tutti gli ordini disponibili. chi può condividere.
Quindi, se avete notato, l'algoritmo è scritto nel codice.
1) Appare una nuova barra
2) Se la MA è superiore al prezzo di chiusura della barra precedente, vai al punto 3, se la MA è inferiore al prezzo di chiusura, vai al punto 4.
3)Se abbiamo una posizione BUY, chiudiamo una posizione con il massimo profitto nella coppia di valute.
3.1)Se non ci sono ordini BUY aperti, apri una posizione SELL.
4) Se abbiamo una posizione BUY, chiudiamo una posizione con un profitto massimo nella coppia di valute.
4.1)Se non c'è un ordine SELL aperto, apriamo una posizione BUY.
Ora di nuovo ho una domanda, cosa c'è di sbagliato in questo codice dell'algoritmo sopra descritto:
Questo codice contiene una serie di comandi. Il terminale non sa di cosa avete bisogno, conosce solo ciò che è scritto nel codice!
Scrivere globalmente le variabili buySignal esellSignal.Un insieme di comandi è scritto nel codice. Il terminale non sa di cosa avete bisogno, conosce solo ciò che è scritto nel codice!
Ho cancellato questo messaggio perché il problema è che gli ordini non dovrebbero essere chiusi per profitto ma per tempo.
Questo perché abbiamo il profitto non sempre e non sempre dove dovrebbe essere.
Pertanto, abbiamo bisogno della funzione"Chiudi una posizione aperta all'inizio di tutte le posizioni disponibili".
Ho cancellato questo messaggio, perché il problema è che gli ordini dovrebbero essere chiusi in base al tempo e non al profitto.
Perché il profitto non è sempre lì e non sempre dove dovrebbe essere.
Pertanto, abbiamo bisogno della funzione"Chiudi una posizione aperta all'inizio di tutte le posizioni disponibili".
Ho aggiunto un esempio di apertura della posizione nel timer nel post precedente. In modo da garantire l'apertura della posizione. Potete sostituirvi la vostra funzione.
Aggiunto un esempio di apertura della posizione del timer nel post precedente. In modo che sia garantita l'apertura della posizione. Potete sostituirvi la vostra funzione.
Ma non così. È necessario monitorare il risultato di
o una vostra nuova funzione in OnTradeTransaction. E se non ci sono posizioni, entrerà. Oppure scrivere il segnale in buySignal osellSignal e processarlo in OnTimer come ho mostrato nell'esempio.