"Errore di PositionSelect() fluttuante - pagina 3

 
Karputov Vladimir:

Ho detto sopra - non lasciatevi trasportare dagli ordini: guardate le transazioni. Ecco un breve codice che mostra QUANDO il volume della posizione cambia e che tipo di transazione è:

Ed ecco le stampe, a chiusura parziale:

Potete vedere chiaramente che non appena un evento con il tipo di transazioneTRADE_TRANSACTION_DEAL_ADD è passato, ecco che i dati di posizione nel terminale vengono aggiornati.

Sono davvero scioccato!

Lo fai apposta o non leggi quello che scrivo?

 
prostotrader:

Sono semplicemente scioccato!

Lo fai apposta o non leggi affatto quello che scrivo?

Mi sembra che lei non voglia capire che un ordine non è tutto. E la registrazione di un accordo nella storia è un segnale per il programmatore che i dati sulla posizione sono già stati modificati.
 
Karputov Vladimir:
Mi sembra che lei non voglia capire che un ordine non è tutto. Ma registrare un trade nella storia è un segnale per il programmatore che i dati di posizione sono già stati modificati.
Tutto è chiaro, grazie.
 
prostotrader:
Tutto chiaro, grazie.

Un mandato è una pulce, può firmare o meno. Sopra l'ordine c'è uno scambio. Sopra un trade c'è una posizione. I cambiamenti nei dati di posizione avvengono dopo che l'affare è stato registrato nella storia.

Quello che a volte si coglie - beh, solo il merito dei computer veloci e di Internet. Se ti piace - per caso.

Aggiunto: anche se sarà interessante sentire la risposta alla tua domanda da parte di ServiceDesk.

 
prostotrader:

1. >Senza conoscere l'algoritmo esatto (quello che ti serve dal programma), è difficile valutare se è implementato correttamente...

Pensavo che non fosse difficile capire cosa fa il programma, beh, se non è chiaro, allora

Un Expert Advisor apre una posizione nel mercato FORTS con un volume di 2 contratti; se la posizione viene aperta, viene parzialmente chiusa con un volume di 1 contratto,

allora la posizione sarà chiusa completamente. Ripetere questa procedura finché il contatore tr_cnt<50

2. Potete "eseguire" PositionSelect() un milione di volte - non cambierà nulla, perché

l'eventoTRADE_TRANSACTION_DEAL_ADD non sarà ricevuto finché non sarete nel ciclo, e quindi il terminale non aggiornerà

informazioni sulla posizione.

Beh, forse l'obiettivo del programma è corretto, ma i mezzi per raggiungerlo sono una schifezza, scusate il francesismo...

Perché è necessario controllare gli ordini storici? Devi guardare gli scambi. Vladimir ha assolutamente ragione qui!

Solo un pazzo potrebbe eseguire un tale programma sul reale...

 
Dennis Kirichenko:

Quindi, sì, l'obiettivo del programma può essere corretto, ma i mezzi per raggiungerlo sono spazzatura, scusate il francesismo...

Perché diavolo vengono controllati gli ordini storici? Devi guardare gli scambi. Vladimir ha assolutamente ragione qui!

Solo un matto farebbe funzionare un programma del genere sul mercato reale...

Capisco "professore", ma non si tratta della mia pazzia, ma dell'errore nel termine.

A proposito, eccone un altro che ho trovato (ed è dopo il LOCK!!!!!!!!!!):

2016.08.03 17:25:57.693 Test_Pos_selct (GAZR-9.16,M1)   OpenPosition: Order sent successfully for open position volume = 2.0
2016.08.03 17:25:57.703 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order resived #50278099
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Deal, based on order #50278099  done.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 1
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order #50278099  add to history.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Order #50278099  not found.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 2
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Deal, based on order #50278099  done.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position exists.
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:57.733 Test_Pos_selct (GAZR-9.16,M1)   OnTradeTransaction: Position volume: 2
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position exists
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position type: POSITION_TYPE_BUY
2016.08.03 17:25:58.613 Test_Pos_selct (GAZR-9.16,M1)   OnBookEvent: Position volume: 2
 
prostotrader:

Vedo "Professore", ma non si tratta della mia pazzia, si tratta della presenza di un errore nel termine.

A proposito, eccone un altro che è venuto fuori (ed è dopo la WORD!!!!!!!!!!):

Per favore porta il tuo codice al mio - non hai il tipo di transazione commerciale stampato. Rimuovi il controllo dell'ordine - non ne hai bisogno qui.
 

Ancora una volta, per "candidati", "medici", "professori" e "accademici".

Qualsiasi evento che arriva a OnTradeTransaction() può essere perso

Ecco perché penso che sia un errore che dopo aver ricevuto l'evento significativoTRADE_TRANSACTION_HISTORY_ADD

i dati nel terminale non vengono aggiornati!

 
Karputov Vladimir:
Per favore porta il tuo codice al mio - il tuo tipo di transazione commerciale non è stampato. Rimuovi il controllo dell'ordine - non ne hai bisogno qui.
Grazie per la vostra persistenza.
 
prostotrader:

Vedo "Professore", ma non si tratta della mia pazzia, si tratta della presenza di un errore nel termine.

A proposito, eccone un altro che è venuto fuori (ed è dopo la WORD!!!!!!!!!!):

Ho fatto un errore, non ho notato che c'erano due offerte.
Motivazione: