![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Quindi questo è il mio punto. Le mie funzioni non hanno versatilità, ognuna è strettamente dedicata alla propria attività. Anche l'acquisto e la vendita sono separati. Quindi, che i numeri d'ordine cambino, che le fermate salgano, ma il biglietto e il mago rimarranno.
Beh, ti sei fatto prendere la mano con lo slosoll:)
Beh, ti sei fatto prendere la mano con le botte:)
Non ci sono state ancora mancanze. Sono un tiranno in questo senso:)
No, non come il formaggio nel burro, ma ho fatto la mia parte di servizio come tenente colonnello. Scusa se ti ho offeso :(
No, non c'è motivo di offendersi, non devi impegnarti se ho detto qualcosa di sbagliato, ma sinceramente. :)
Mi hai frainteso. Così fa la metà delle persone per qualche motivo. Non ho bisogno nella funzione B() di elaborare quell'ordine, che è selezionato nella funzione A(). La funzione B() funziona con altri ordini, non importa quali, non ha niente a che vedere con la funzione A(); la funzione B() ha la sua propria logica. Può contare il numero di ordini, il loro profitto totale, guardare i loro commenti, TP SL, ecc. Il compito è quello di tornare dalla funzione B() alla funzione A() in modo tale che, indipendentemente da ciò che la funzione B() ha fatto con gli ordini, la logica di funzionamento della funzione A() al punto di chiamata della funzione B() da essa non sarà violata a causa del fatto che l'ordine selezionato dalla funzione A() prima che la funzione B() fosse chiamata non è più selezionato e l'ordine selezionato è un altro ordine casuale elaborato dalla funzione B() che molto probabilmente cerca anche ordini nel ciclo.
Continui a dimenticare che solo un ordine può essere selezionato alla volta. Exit = memorizza l'elenco degli ordini in un pool di risparmio (il tuo array). una variabile globale lastorder non è sufficiente. un'opzione migliore sarebbe lastords[ticket][function].
Nel mio codice, questo errore non si verifica, perché questa funzione è chiamata DOPO OrderSelect(). E il controllo nel codice è rimasto dai tempi in cui i codici venivano scritti senza una struttura comune di tutte le funzioni EA eseguibili.
Inoltre, la maggior parte delle mie funzioni contengono funzioni di gestione degli errori e sono molto attento ad evitarli. E ci sono anche una serie di funzioni che generano un errore, come la risposta che stavi cercando: "Ordine selezionato prima, o no?
P.S. A proposito, mi sono ricordato di una particolarità (può essere utile a qualcuno) di lavorare con le funzioni OrderSelect() delle librerie compilate: abbiamo selezionato un ordine (come - non principalmente), OrderTicket() - restituisce il numero di ordine selezionato. Ma se vogliamo ottenere le proprietà di questo ordine selezionato dalla funzione che si trova nella libreria compilata, non otterremo nulla. Dobbiamo selezionare di nuovo quell'ordine (di nuovo).
In effetti, ho incontrato una situazione in cui l'errore era causato da una delle funzioni di uso generale che avrebbe potuto essere utilizzata sia all'interno dei cicli di elaborazione degli ordini che al di fuori di questi cicli, cioè prima che l'ordine fosse selezionato, il che ha portato all'errore. Se vogliamo fare funzioni di servizio universale che lavorino con ordini che possono essere usati sia dopo che un ordine è stato selezionato sia prima, sia quando ci sono ordini aperti sia quando non ce ne sono, dovremmo usare un meccanismo come quello che ho citato per essere sicuri di non ottenere questo errore.
Ho già scritto in precedenza in questo thread sul fatto che la selezione dell'ordine non viene passata ai moduli di libreria e ritorno.
In effetti, ho incontrato una situazione in cui l'errore era causato da una delle funzioni di uso generale che potevano essere utilizzate sia all'interno che all'esterno dei cicli di elaborazione degli ordini, cioè prima che un ordine fosse selezionato, il che causava l'errore. Se vogliamo fare funzioni di servizio universale che lavorino con gli ordini e che possano essere usate sia dopo che un ordine è stato selezionato sia prima, sia quando ci sono ordini aperti sia quando non ci sono ordini, dobbiamo usare il meccanismo che ho menzionato nella pagina precedente per evitare questo errore.
Ho già scritto in precedenza in questo thread sul fatto che la selezione dell'ordine non viene passata ai moduli di libreria e ritorno.
Dovresti abituarti al fatto che ogni operazione di trading ha il suo ordine di selezione e non avrai problemi. E, sì, è stato scritto correttamente, solo un ordine può essere selezionato. Tutto il resto si risolve con gli array.