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
Grazie mille, sto elaborando gli errori, arriva il messaggio - prezzo sbagliato, e non riesco a capire cosa c'è di sbagliato.
poi aggiungere anche una linea
all'inizio della funzione - cancellare il buffer degli errori: a volte è possibile leggere l'errore di "qualcun altro", e in questo modo il buffer degli errori sarà cancellato all'inizio della funzione.
Questo non è richiesto, ma se i programmi per il mondo reale, è altamente auspicabile fare tutto il più correttamente possibile.
Buona fortuna.
poi aggiungere anche una linea
all'inizio della funzione - cancellare il buffer degli errori: a volte è possibile leggere l'errore di "qualcun altro", e in questo modo il buffer degli errori sarà cancellato all'inizio della funzione.
Questo non è richiesto, ma se i programmi per il mondo reale, è altamente auspicabile fare tutto il più correttamente possibile.
Buona fortuna.
Sì, grazie, è quello che faccio nel software reale.
Brava gente, potete dirmi perché questa funzione restituisce 0 anche se non ci sono ordini aperti. Non dovrebbe esserci un qualche tipo di errore?
Restituisce l'importo totale degli ordini aperti e in sospeso.
Stai ancora scrivendo per ordinare?
-- Usare nomi che iniziano con un trattino basso e un doppio trattino basso è una cattiva forma. Preferisco usare un underscore alla fine.
-- Perché la stringa _Type_Order? Irrealmente imbarazzante, credo. Allora dovrebbe essere citato. Perché se scrivi "Vendere" o "vendere" non funzionerà.
-- Se vuoi fare un errore, fai un errore:
ERROR = -1;
Meglio ancora.
--
Perché rompere? Supponiamo che un millisecondo fa l'ordine sia stato chiuso da TP - perché non dovremmo chiudere il resto? Questo è meglio:
--
La linea è peggio che inutile, è dannosa. È questo che deve aver voluto dire?
--
Cioè, se un ordine improvvisamente non si chiude, "lascia andare il volante, chiudi gli occhi e comincia a gridare".
Non c'è bisogno di chiudere gli altri? Non c'è bisogno di riprovare?
-- Perché c'è un ritorno di errore qui? Sarebbe molto più appropriato restituire, per esempio, true se tutti sono riusciti a chiudere e false se no.
Questo è tutto per ora.
-- Usare nomi che iniziano con un trattino basso e un doppio trattino basso è una cattiva forma. Preferisco usare un underscore alla fine.
Usando nomi che iniziano con trattini bassi all'interno delle funzioni, elimino il rischio di sovrascrittura delle variabili. Così, posso usare gli stessi nomi in start() ma senza underscore, il che aumenta la trasparenza del codice.
- Perché _Type_Order è una stringa? Irrealmente scomodo, imho. Allora dovrebbe essere dato. Perché se scriviamo "Vendere" o "vendere" non funzionerà nulla.
Hai ragione, naturalmente. Tuttavia, usare una stringa aumenta la trasparenza del codice e con la quantità di codice che ho al momento, non c'è bisogno di una sottolineatura. Quando incontrerò davvero questo problema, lo farò, ma per ora non è necessario. Scrivo semplicemente VENDERE o COMPRARE.
Ha certamente ragione, grazie.
La funzione IsTradeContextBusy() informa solo sull'occupazione dei thread, IsTradeAllowed() è un po' più ampia
Cioè, se improvvisamente l'ordine non può essere chiuso, "lasciate andare il volante, chiudete gli occhi e cominciate a gridare"?
sì, per il periodo di debug è
Perché dovrebbe esserci un ritorno di errore? Sarebbe molto più appropriato restituire true se tutto può essere chiuso e false se no.
Grazie, mi sembra di aver capito qual è l'errore. Controllerò e riferirò.
L'errore era il seguente:
la variabile bool _Result non è inizializzata, quindi conterrà false; quindi, poiché nessuna delle condizioni è stata soddisfatta, non abbiamo cambiato la variabile _Result, e contiene già false. E la funzione procede alla gestione degli errori che in realtà non si sono verificati.
Ho aggiustato la funzione e la sto postando qui, penso che qualcuno possa trovarla utile.
PS ai moderatori. Ho creato un tale ramo per caso - un completo autotutorial su come chiudere correttamente gli ordini. Forse dovrebbe essere rinominato come - come chiudere correttamente gli ordini con esempi.
PPS Grazie mille a tutti coloro che hanno partecipato. Probabilmente ci saranno altre domande.
L'errore era il seguente:
la variabile bool _Result non è inizializzata, quindi conterrà false; quindi, poiché nessuna delle condizioni è stata soddisfatta, non abbiamo cambiato la variabile _Result, e contiene già false. E la funzione procede alla gestione degli errori che in realtà non si sono verificati.
Ho aggiustato la funzione e la sto postando qui, penso che qualcuno possa trovarla utile.
PS ai moderatori. Ho creato un tale ramo per caso - un autotutorial completo su come chiudere correttamente gli ordini. Forse dovrebbe essere rinominato come - come chiudere correttamente gli ordini con esempi.
PPS Grazie mille a tutti coloro che hanno partecipato. Probabilmente ci saranno altre domande.
Se guardate il CodeBase e leggete attentamente il forum - ci sono più di cento esempi di chiusura dell'ordine corretto, ma questo non significa che tutti i rami debbano essere rinominati in una volta sola. Ci sono abbastanza eroi.
L'errore era il seguente:
La variabile bool _Result non è inizializzata, quindi conterrà false; quindi, poiché nessuna delle condizioni è stata soddisfatta, non abbiamo cambiato la variabile _Result, e contiene già false. E la funzione procede alla gestione degli errori che in realtà non si sono verificati.
Ho aggiustato la funzione e la sto postando qui, penso che qualcuno possa trovarla utile.
PS ai moderatori. Ho creato un tale ramo per caso - un completo autotutorial su come chiudere correttamente gli ordini. Forse dovrebbe essere rinominato come - come chiudere correttamente gli ordini con esempi.
PPS Grazie mille a tutti coloro che hanno partecipato. Probabilmente ci saranno altre domande.
IMHO: Questa funzione non è chiara nella sua logica. Se è per un tester, è troppo inutile, se è per il mondo reale, gli errori dovrebbero essere gestiti. Il valore restituito non ha alcun significato perché state dicendo a livello esterno (a livello di chiamata) che la chiamata è finita con un errore, state perdendo l'errore stesso, beh, l'esperto ha scritto nel log - come conta?
Cosa sarebbe meglio: (di nuovo, IMHO)
1. Leggere e salvare il numero di errore.
2. Dividete gli errori in risolvibili e non risolvibili. Per fare questo, dovremmo creare un gestore - quegli errori, alla comparsa dei quali l'ordine può essere chiuso (un thread è occupato, fallimento della connessione ..., ecc) dovrebbero essere gestiti immediatamente sul posto. Ho fatto così (prima gli errori irrecuperabili, e poi quelli che possono essere "aggiustati"):
3. Quando si verifica un errore intrattabile, restituire non un flag di errore, ma il suo numero, in modo che questa situazione possa essere gestita in un modulo esterno. Quando si analizza il risultato di un'operazione:
Buona fortuna.
SZ su pausa/continua
la questione è discutibile. Se ci sono ancora ordini, allora quando viene attivato un take/stop la numerazione dell'ordine cambierà - cioè l'ordine sarà ancora selezionato: si seleziona per numero d'ordine, non per biglietto. Se l'ordine non è selezionato, significa che non c'è nessun ordine. Poiché non si controlla ogni volta il numero di ordini, il ciclo sarà vuoto per un certo numero di volte.