Come controllare se un ordine è selezionato - pagina 13

 
Ant_TL:

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 ha causato 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.


Anton, buon compleanno anche a te!
 
grell:

Abituatevi al fatto che ogni operazione di trading ha il suo ordine selezionato e non ci saranno problemi. E, sì, è stato scritto correttamente, solo un ordine può essere selezionato. Tutto il resto si risolve con gli array.

Non stavo parlando della situazione in cui la funzione B() cerca di intercettare una selezione di ordine dalla funzione A() per lavorare con essa. Bypassare la selezione dell'ordine. Il punto è diverso. Ma può essere utile.

 
tara:

Anton, buone vacanze anche a te!

Buone vacanze anche a voi!

 
FAQ:

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. una variante di tipo lastords[ticket][function] sarebbe meglio.

Mantenere tutti gli ordini in un array è appropriato per gli EA complessi della griglia, ma non per tutti gli EA. Nella mia situazione, è come sparare un cannone contro un passero. Non dimentico che si può selezionare un solo ordine. Stavo solo sottolineando che non saremmo in grado di scoprire se è stato scelto (non un ordine particolare, ma se qualsiasi ordine arbitrario è stato scelto in questo tick, cioè se un order select è stato chiamato con successo) senza alcun errore. Tuttavia, una variabile del tipo lastorder è abbastanza sufficiente per questo scopo.

 
Ant_TL:

Non stavo parlando della situazione in cui la funzione B() cerca di intercettare una selezione di ordine dalla funzione A() per lavorare con essa. Bypassare la selezione dell'ordine. Il punto è diverso. Anche se può essere utile.


Bene, fatemi un esempio di una situazione in modo che io capisca la necessità di lavorare con più di un ordine. A proposito, buone vacanze!
 
grell:

Bene, fatemi un esempio di una situazione, in modo che io capisca la necessità di lavorare con più di un ordine. A proposito, buone vacanze!

Buone vacanze anche a voi! -))

Lo porterò su appena mi viene in mente qualcosa di interessante. Situazioni in cui è difficile fare a meno di questo meccanismo. Altrimenti mi daranno subito consigli sulla programmazione "corretta". ))

 
Ant_TL:

Mantenere tutti gli ordini in un array è appropriato per gli EA complessi della griglia, ma non per tutti gli EA. Nella mia situazione, è come sparare un cannone contro un passero.


È una tua scelta se ti piace piegare una fionda per adattarla ad ogni passero e perdere tempo a regolarla. Preferisco fare un cannone per qualsiasi proiettile una volta ed essere sicuro che quando sarà necessario sparare ai passeri - allora caricheremo pallettoni e metteremo tutto in una volta :)
 
Ant_TL:

Buone vacanze anche a voi! -))

Lo porterò su appena mi viene in mente qualcosa di interessante. Situazioni in cui è difficile fare a meno di questo meccanismo. Altrimenti mi daranno subito consigli sulla programmazione "corretta". ))


Cosa c'è da cercare se si cerca di dimostrare che si tratta di una situazione di routine quotidiana. Potete lavorare con un mucchio di ordini e comunque selezionarli uno per uno senza paura di perdere di vista l'ordine. E se si tratta di un ordine, selezionarlo in un'altra funzione non è niente in confronto a cercare un gatto nero in una stanza buia.
 
grell:

Cosa c'è da trovare, se si cerca di dimostrare che questa è una situazione normale di tutti i giorni. Si può lavorare con molti ordini e comunque prenderli uno per uno senza paura di perdere di vista l'ordine. E se è un ordine, selezionarlo in un'altra funzione non è niente in confronto a cercare un gatto nero in una stanza buia.

Bene, ho incontrato questa situazione in uno dei miei EA, quando ho chiamato la mia funzione template MyTotal() per ottenere il numero di tutti gli ordini, aperti per un dato simbolo-magia. Ovviamente, l'ho usato in un ciclo in alcuni EA precedenti e quindi ho aggiunto il salvataggio e il ripristino della selezione dell'ordine corrente. E poi l'ho usato senza il ciclo, prima di orderselect ed è per questo che ho avuto l'errore. Voglio che le mie funzioni template siano universali e possano essere usate sia nei loop che fuori dai loop, quindi userò questo template con il wrapper MySelect/TickSelect, dato che comunque uso MySelect in tutti i loop invece di OrderSelect per ridurre le dimensioni del codice.

Penso che possiamo capire perché in questa particolare situazione abbiamo bisogno di gestire più di 1 ordine alla volta. Stiamo lavorando con qualche ordine nel ciclo principale, e poi chiamiamo MyTotal, che dovrebbe passare attraverso tutti gli ordini per determinare quanti ne abbiamo bisogno.

 
Correggi il tuo errore e vai a letto, domani hai una giornata impegnativa :)
Motivazione: