[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 5

 
Roman.:

Non escludete la possibilità che il primo ordine si trasformi in un ordine a mercato e, di conseguenza, non sia possibile rimuoverlo con questo ciclo sugli ordini limite?

Sto eseguendo una visualizzazione. Nel momento in cui l'ordine dovrebbe essere cancellato, rimane in sospeso. So come impostare il numero magico ma non riesco a cancellare il primo dei due ordini in sospeso.
 
Roman.:

A quanto pare per questo - qualche post sopra :-))) - "Il modo più semplice per determinare quale ordine di due chiudere è il numero magico. Assegnate loro dei numeri diversi quando li impostate. Nell'esempio che hai mostrato sopra manca questo controllo. Inoltre al posto di ticket scrivere OrderTicket()."

OrderTicket() otterrà probabilmente il biglietto dell'ultimo ordine in sospeso, io ho bisogno del penultimo.
 
Andreev:

OrderTicket() otterrà probabilmente un ticket dell'ultimo ordine in sospeso, e io ho bisogno del penultimo.

Se stai piazzando due ordini in sospeso, è probabilmente più facile dare al primo un 1 e al secondo un 2. ))

Allora, sia tu che l'Expert Advisor non sarete confusi dai numeri.

 

alex12, è già buono per iniziare a scrivere qualcosa. Un sacco di errori, ma comunque non male.

1. Entrambi gli errori di compilazione sono perché nello stesso start() si definiscono due volte le variabili locali SL e TP. Dovete definirli una volta all'interno della funzione, altrimenti causerà un errore.

Rimuovete il tipo double nel secondo calcolo di entrambe le variabili e l'errore scomparirà. Ma non è tutto.

2. Siete sicuri di aver bisogno di variabili esterne globali con gli stessi nomi? Il problema è che la variabile SL definita all'interno della funzione è diversa dalla variabile globale con lo stesso nome. Se volete che sia esattamente la stessa variabile dell'esterno (extern), togliete il doppio dappertutto.

3. La condizione if() è di solito una condizione logica, anche se semplici calcoli non sono vietati dalla sintassi. E tu non hai una condizione logica.

Esercitatevi prima su programmi semplici, come i calcoli con output. Allora capirete la sintassi.

 
Andreev:

OrderTicket() probabilmente otterrà il biglietto dell'ultimo ordine in sospeso, e io ho bisogno del penultimo.

Hai bisogno di ricordare il tempo in cui l'ordine è stato piazzato e poi confrontare il tempo nel ciclo e cancellare l'ordine più vecchio, quindi - guarda questo e inseriscilo nel tuo EA.
 
Mathemat:

alex12, è già buono per iniziare a scrivere qualcosa. Molti errori, ma comunque non male.

1. Entrambi gli errori di compilazione sono perché nello stesso start() si definiscono due volte le variabili locali SL e TP. Dovete definirli una volta all'interno della funzione, altrimenti causerà un errore.

Rimuovete il tipo double nel secondo calcolo di entrambe le variabili e l'errore scomparirà. Ma questo non è tutto.

2. Siete sicuri di aver bisogno di variabili esterne globali con gli stessi nomi? Il problema è che la variabile SL definita all'interno della funzione è diversa dalla variabile globale con lo stesso nome. Se volete che sia esattamente la stessa variabile dell'esterno (extern), togliete il doppio dappertutto.

3. La condizione if() è di solito una condizione logica, anche se semplici calcoli non sono vietati dalla sintassi. E semplicemente non avete una condizione logica.

Esercitatevi prima su programmi semplici, come i calcoli con output. Allora capirete la sintassi.

Grazie mille.
 
Roman.:

Ricorda il tempo di immissione degli ordini, poi anche nel ciclo confronta il tempo - cancella il più vecchio, così - guarda qui e collegalo al tuo EA.

Grazie per il link! Lo studierò :) Ho una buona idea con il tempo, così come con il numero magico e il tipo di ordine (bylimit o selllimit). Ma probabilmente non mi avete capito bene. Il mio problema non è segnare l'ordine, ma come rimuoverlo. Sono solo in grado di cancellare l'ultimo ordine pendente, non importa come definisco il penultimo ordine.
 

Andreev:

Grazie per il link!!! Ci darò un'occhiata :) Con il tempo, così come il numero di magik e per tipo di ordine (bylimit o selllimit) - buona idea. Ma probabilmente non mi avete capito bene. Il mio problema non è segnare l'ordine, ma come rimuoverlo. Sono solo in grado di cancellare l'ultimo ordine pendente, non importa come definisco il penultimo.


Se prendi almeno uno dei consigli che ti sono stati offerti (mago, tipo, tempo di impostazione), non avrai problemi a cancellare esattamente l'ordine che la tua strategia di trading implica. ))

Usate due criteri nella vostra selezione, per esempio tempo di installazione e tipo o tipo e magik.

 
Andreev:

Grazie per il link!!! Ci darò un'occhiata :) Con il tempo, così come il numero magico e per tipo di ordine (bylimit o selllimit) è una buona idea. Ma probabilmente non mi avete capito bene. Il mio problema non è segnare l'ordine, ma come rimuoverlo. Sono solo in grado di cancellare l'ultimo ordine pendente, non importa come definisco il penultimo ordine.

Sto correggendo il mio codice secondo i vostri termini - ora lo posterò qui.
 
Andreev:

OrderTicket() otterrà probabilmente un ticket dell'ultimo ordine pendente, e io ho bisogno del penultimo.


Ricalcola ad ogni tick il numero di ordini pendenti.

Se ce ne sono meno, significa che un ordine pendente è diventato un ordine a mercato.

Tutti quelli rimanenti (che sono diventati inutili) possono essere cancellati.

Motivazione: