Come controllare se un ordine è selezionato - pagina 7

 
tara:

Anche la Spagna:)
La Spagna è meridionale e Barcellona ha un clima molto mite senza freddo e caldo insopportabile, e la città stessa è molto bella e compatta, quindi a me, come moscovita, è piaciuta molto!
 

Il TS vuole approfittare di una caratteristica non documentata di MT4. La funzione OrderSelect() crea un puntatore (TC lo chiama "ordine selezionato") che è globale all'EA (script). I seguenti due script lo illustrano

Il puntatore creato da questa procedura chiamata è disponibile nella procedura chiamante:

int start()
{
   ordsel();
   Print( OrderTicket( ) );
   return(0);
}
void ordsel()
{
   OrderSelect( 1, SELECT_BY_POS, MODE_HISTORY );
   Print( OrderTicket( ) );
}

2013.02.17 02:50:48 111 EURUSD,H1: uninit reason 0
2013.02.17 02:50:48 111 EURUSD,H1: 18338793
2013.02.17 02:50:48 111 EURUSD,H1: 18338793
2013.02.17 02:50:48 111 EURUSD,H1: loaded successfully

Il puntatore creato è disponibile nella procedura chiamata:

int start()
{
   OrderSelect( 1, SELECT_BY_POS, MODE_HISTORY );
   Print( OrderTicket( ) );
   ordsel();
   return(0);
}
void ordsel()
{
   Print( OrderTicket( ) );
}

2013.02.17 02:56:10 111 EURUSD,H1: uninit reason 0
2013.02.17 02:56:10 111 EURUSD,H1: 18338793
2013.02.17 02:56:10 111 EURUSD,H1: 18338793
2013.02.17 02:56:10 111 EURUSD,H1: loaded successfully


Ma è un po' inquietante usarlo.

 
tara:
Dovresti sposarti, fratello.
Per quale motivo? Molte persone vivono qui senza registrazione e con bambini. Perché pagare tutti i tipi di tasse? Poi ho avuto tutto, quindi non c'è bisogno.
 
Ant_TL:

Beh, apparentemente tutti qui sono super cool, ma ho paura che se comincio a concentrarmi sugli aspetti di coolness di tutto questo mi prenderò un banhammer in testa da Mr FAQ, che è senza dubbio cool anche lui. Quindi, grazie a tutti coloro che hanno partecipato alla discussione, l'argomento può probabilmente essere chiuso dato che nessuno è interessato alla domanda tranne me.

Forse il nome dell'argomento era fuorviante, avrebbe dovuto chiamarsi"Come controllare se l'ordine corrente in mql4 è attualmente selezionato" o qualcosa del genere. Altrimenti, alcuni educatori hanno bisogno di formulare domande al livello di bucs.


1) Penso che sia la tua"meraviglia" che fa lacrimare gli occhi.

2) Se continui ad essere maleducato, riceverai quello che tu chiami un "banhammer" a scopo educativo.

3) Il tuo messaggio (in grassetto) è stato capito senza "sillabare" da pagina 2 e io (come per chi è nella vasca) ho già risposto di no. Non esiste un mandato del genere, se volete averne uno, occupatevene voi stessi e con largo anticipo.

4) Puoi scrivere tutti i programmi che vuoi, ma se hai un vuoto di conoscenza e vuoi riempirlo a spese della società (che è quello a cui serve questo forum), allora cerca di comportarti decentemente.

 
Mislaid:

Il TS vuole approfittare di una caratteristica non documentata di MT4. La funzione OrderSelect() crea un puntatore (TC lo chiama "ordine selezionato") che è globale all'EA (script). Come dimostrato nei seguenti due script

Ma è inquietante usarlo.

Perché non documentato e perché strano? Questo funziona sempre, tranne che per le librerie personalizzate, perché apparentemente questo "puntatore" è globale solo all'interno di un EA o di un modulo di script, e un modulo di libreria ha il suo proprio puntatore.

 
FAQ:

3) Il tuo messaggio (in grassetto) è già chiaro senza "sillabarlo" da pagina 2, e io (come per quelli del serbatoio) ho già risposto di no. Non esiste un mandato del genere, se volete averne uno, occupatevene voi stessi e con largo anticipo.

4) Potete scrivere programmi lunghi quanto volete, ma se avete una lacuna di conoscenza e volete colmarla a spese della società (che è ciò a cui serve questo forum), allora cercate di comportarvi decentemente.

Quale altro mandato non c'è? Io non ho nessuna lacuna di conoscenza, questa è la tua fabbricazione. Ho attirato l'attenzione su un problema, che credo sia una lacuna nel meccanismo di lavoro con gli ordini in mql4, tutto qui. Se un certo numero di funzioni lavora con un ordine evidenziato, dovrebbe essere possibile controllare se un ordine è evidenziato o no, in modo da non generare un errore. Capisco che si possano escogitare delle stampelle, memorizzare la selezione degli ordini in una dozzina di posti, passare un parametro per non sbagliare, e così via.

FAQ:

2) Se continuate ad essere maleducati, otterrete sicuramente quello che chiamate un "banhammer" a scopo educativo.

Il fatto che il tuo amico Bori sia stato scortese con me per diverse pagine è evidentemente passato per i tuoi occhi attenti. Lei è selettivo.

 
Ant_TL:

Quale altro mandato non c'è? Io non ho nessuna lacuna nella mia conoscenza, questa è la vostra finzione. Ho indicato il problema, che credo sia una lacuna nel meccanismo di lavoro con gli ordini in mql4, tutto qui. Se alcune funzioni lavorano con un ordine selezionato, dobbiamo essere in grado di controllare se un ordine è selezionato o no, in modo da non generare un errore. Capisco che possiamo fare delle stampelle, ricordare di selezionare un ordine in una dozzina di posti, inviare un parametro per non fare un errore, e così via.

Non c'è nessuna lacuna in mql4. Lo stato dell'ordine selezionato può cambiare durante qualsiasi operazione con gli ordini: aprire/chiudere, prendere/fermare, eseguire/cancellare un ordine in sospeso, o chiudere parzialmente un ordine. Quindi non abbiamo bisogno di memorizzare e trasmettere nulla. Non bisogna mai contare sul fatto che lo stato non sia cambiato. Un ordine può essere selezionato, ma non è più lo stesso.
 
Mislaid:
Non c'è nessuna lacuna in mql4. Lo stato di un ordine selezionato può cambiare durante qualsiasi operazione con gli ordini: aprire/chiudere, prendere/fermare, eseguire/cancellare un ordine in sospeso, o chiudere parzialmente un ordine. Pertanto, non dobbiamo memorizzare e trasmettere nulla. Non bisogna mai contare sul fatto che lo stato non sia cambiato. Un ordine può essere selezionato, ma non è più lo stesso.

Ho indicato una situazione specifica: abbiamo un ciclo principale che lavora con gli ordini. E ci sono un certo numero di funzioni ausiliarie che vengono utilizzate in questo ciclo, che lavorano anche con gli ordini. La logica del ciclo principale non deve essere interrotta dopo la chiamata di queste funzioni. Questo significa che se una funzione ausiliaria influisce sul lavoro con gli ordini, dovrebbe ricordare lo stato del "puntatore" al momento della sua chiamata e restituirlo allo stato in cui era quando ha finito. Ma non può farlo senza stampelle e generando errori. Questa è esattamente una lacuna.

Infatti, come ho scritto nel primo post, ignorare la necessità di controllare lo stato del "puntatore" nelle funzioni ausiliarie può portare a errori difficili da individuare.

 
Ant_TL:

Ho indicato una situazione specifica: abbiamo un ciclo principale che lavora con gli ordini. E ci sono un certo numero di funzioni ausiliarie che vengono utilizzate in questo ciclo, che lavorano anche con gli ordini. La logica del ciclo principale non deve essere interrotta dopo la chiamata di queste funzioni. Questo significa che se una funzione ausiliaria influisce sul lavoro con gli ordini, dovrebbe ricordare lo stato del "puntatore" al momento della sua chiamata e restituirlo allo stato in cui era quando ha finito. Ma non può farlo senza stampelle e generando errori. Questa è esattamente una lacuna.

Infatti, come ho scritto nel primo post, ignorare la necessità di monitorare lo stato del "puntatore" nelle funzioni ausiliarie può portare a errori difficili da individuare.

Supponiamo che tu abbia passato la tua EA a qualcuno. Non sai se ha altri EAs che lavorano, forse commercia le sue stesse mani.

Forse avete finito questo EA e iniziate a scriverne uno nuovo. Questo è il punto in cui il vecchio si guasta.

 
Mislaid:

Supponiamo che tu abbia passato la tua EA a qualcuno. Non si sa, forse ha altri EAs che lavorano, commercia le sue stesse mani.

Forse avete finito questo EA e iniziate a scriverne uno nuovo. È lì che il vecchio si guasta.

Come? Cosa ha a che fare questo con chi ho dato l'Expert Advisor? Pensate che lo stato del "puntatore" sia influenzato da qualche azione di altri EA e del terminale? Il "puntatore" (il biglietto dell'ordine attualmente selezionato) è una variabile di livello del modulo. Sarebbe bello potervi accedere senza la possibile generazione di un errore 4105, che è quello che ho scritto per tutto questo tempo