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
Il looping è una delle tecniche di programmazione più pericolose. Causa errori strani e poco frequenti che sono quasi impossibili da analizzare.
Al contrario, si dovrebbe cercare di terminare un thread utente il più rapidamente possibile, invece di andare in loop. Se vuoi avere una "mano sul polso" - analizza OnTradeTransaction in MT5. MT4 non è generalmente adatto per questi giochi, perché la semplicità è peggio del furto, come si dice.
Non intendevo una realizzazione concreta, ma il principio del TS che si agita dopo qualsiasi pausa. Bene e dove c'è una terribile fissazione - non è chiaro. Come non è chiaro, perché c'è una fretta di finire un thread utente.
Dov'è il looping spaventoso lì - non è chiaro.
Chiamare OnTick da OnTick è un ciclo non banale attraverso la ricorsione:
Né è chiaro perché ci sia una fretta di terminare il thread degli utenti.
Stiamo lavorando con un modello event-driven. Quindi abbiamo bisogno di gestire l'evento corrente il più velocemente possibile per aspettare il prossimo. Il tempo trascorso nel thread è un buco nero. Più tempo passiamo nel flusso, più l'ambiente di trading è obsoleto.
Chiamare OnTick da OnTick è un ciclo non banale attraverso la ricorsione:
A quanto pare, questa è l'unica cosa che fa da deterrente.
Stiamo lavorando con un modello di eventi. Pertanto, abbiamo bisogno di gestire l'evento corrente il più velocemente possibile per aspettare il prossimo. Il tempo trascorso nel flusso è un buco nero. Più tempo passiamo nel flusso, più l'ambiente di trading con cui lavoriamo è obsoleto.
Non ci capiamo per niente. Non credo che ci possa essere alcun dialogo tra noi.
:
Dove hai visto una pausa nel tuo codice, la cui semplice presenza è l'unica ragione per scuotere il TS da zero? Tu non ce l'hai!
Dove hai visto una pausa nel tuo codice, la cui semplice presenza è l'unica ragione per scuotere il TS da zero? Non ce l'avete!
Quindi questo codice è un'illustrazione del perché il thread corrente deve essere terminato il prima possibile. Non dovreste nemmeno provare a richiedere l'ambiente di trading in OnTick:
Una volta che siamo al punto in cui le due variabili sono confrontate, non possiamo confrontarle perché l'ambiente continua a cambiare. I valori in total_1 e total_2 non sono più uguali tra loro, o sono entrambi obsoleti, o non contengono il numero di ordini esistenti, o contengono i valori corretti. È inutile combattere un ambiente di trading che cambia in OnTick, invece basta uscire da OnTick, subito dopo il ciclo for, e aspettare nuovi eventi che indicano che l'ambiente di trading è cambiato.
Quindi questo codice è un'illustrazione del perché il thread corrente dovrebbe essere terminato il più rapidamente possibile. Non si può nemmeno tentare di interrogare l'ambiente di trading in OnTick:
Una volta che siamo al punto in cui le due variabili sono confrontate, non possiamo confrontarle perché l'ambiente continua a cambiare. I valori in total_1 e total_2 non sono più uguali tra loro, o sono entrambi obsoleti, o non contengono il numero di ordini esistenti, o contengono i valori corretti. È inutile lottare con il cambiamento dell'ambiente di scambio in OnTick, invece, abbiamo solo bisogno di uscire da OnTick, subito dopo il ciclo for, e aspettare nuovi eventi che indicano che l'ambiente di scambio è cambiato.
Allora perché hai messo delle pause?
Ancora una volta, dopo qualsiasi pausa (slittamenti o ordini commerciali sincroni) TC deve essere scosso - la logica di trading deve ripartire da zero. Di conseguenza, se si usano ordini di compravendita asincroni, le pause menzionate non si verificano e c'è un'uscita dalla Event-Function in attesa di un nuovo evento. Se non ci sono operazioni asincrone, l'intera logica di trading può anche essere messa in uno script in loop.
Allora perché hai messo delle pause?
Ancora una volta, dopo qualsiasi pausa (slittamenti o ordini commerciali sincroni) il TS deve essere riavviato - la logica di trading deve ripartire da zero. Di conseguenza, se si usano ordini di compravendita asincroni, le pause menzionate non si verificano e c'è un'uscita dalla Event-Function in attesa di un nuovo evento. Se non ci sono operazioni asincrone, l'intera logica di trading può anche essere messa in uno script in loop.
Io parlerò di Thomas e tu parlerai di Yury. In breve, finiamo il nostro dialogo. Continuate a creare i vostri script in loop. Sì, funziona davvero, ma non può essere raccomandato come metodo di lavoro.
Sono interessato a conoscere la loro opinione su questa situazione in MT4, come la gestiscono?
Il ToR di Expert Advisor è quello di mantenere gli ordini pendenti e le posizioni aperte su una certa distanza fissa dal prezzo corrente su ogni tick.
Lascia che le modifiche del broker durino un po' più a lungo dell'intervallo di tempo medio tra i tick di prezzo.
Quindi, eseguiamo un ciclo inverso (in direzione decrescente di SELECT_BY_POS) e facciamo OrderModify corrispondente.
Quindi, durante questo ciclo, impacchettato in OnTick, può accadere quanto segue
Cosa fare?
La domanda è indirettamente collegata alla discussione precedente, ma questo non è per la sua continuazione (argomento chiuso). Ho bisogno di risolvere alcune sfumature non ovvie in MT4Orders per MT5. Quindi sarebbe utile sentire le opinioni sulle situazioni descritte da chi è bravo con MT4 nello specifico. E non sono l'unico che può trovarlo utile.
Risolvi il problema attraverso OnTimer - questo è probabilmente il primo suggerimento. Ma non ne abbiamo bisogno - solo OnTick.
Sono interessato a conoscere la loro opinione su questa situazione in MT4, come la gestiscono?
Il ToR di Expert Advisor è quello di mantenere gli ordini pendenti e le posizioni aperte su una certa distanza fissa dal prezzo corrente su ogni tick.
Lascia che le modifiche del broker durino un po' più a lungo dell'intervallo di tempo medio tra i tick di prezzo.
Quindi, eseguiamo un ciclo inverso (in direzione decrescente di SELECT_BY_POS) e facciamo OrderModify corrispondente.
Quindi, durante questo ciclo, impacchettato in OnTick, può accadere quanto segue
Cosa fare?
La domanda è indirettamente collegata alla discussione precedente, ma questo non è per la sua continuazione (argomento chiuso). Ho bisogno di risolvere alcune sfumature non ovvie in MT4Orders per MT5. Quindi sarebbe utile sentire l'opinione sulle situazioni descritte da chi è bravo con MT4 nello specifico. E non sono l'unico che può trovarlo utile.
Risolvi il problema attraverso OnTimer - questo è probabilmente il primo suggerimento. Ma lasciamo perdere - solo OnTick.
In primo luogo, la situazione non è standard e pochissime persone, se non nessuna, l'hanno mai risolta.
Puramente in teoria:
Non dobbiamo organizzare un ciclo inverso per OrderModify, quindi lasciamo che sia diretto.
Poi controlliamo i cambiamenti dell'elenco degli ordini
Se la quantità di ordini è cambiata, ricominceremo questo ciclo con una nuova quantità di ordini.
Un'altra domanda:
fxsaber:
È comprensibile che se sono stati aggiunti, loro o altri mancheranno. Ma se fossero semplicemente cancellati? Non saremmo in grado di andare oltre l'elenco degli ordini?