OK. Illuminaci. Quale errore nel codice, o quale codice, può chiudere una posizione nel tester al prezzo di un altro strumento. Sono davvero, davvero interessato.
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Il codice è di diverse migliaia di righe. Non ha senso aggiungerlo, non ci sono variabili statiche. Ci sono delle classi. In ogni caso è un errore del tester.
Ecco il vostro errore.
In modalità debug, esegui un controllo prima di inviare un ordine di compravendita. Guarda il simbolo e i prezzi. E prova almeno in modalità "Tutte le zecche".
OK. Illuminaci. Quale errore nel codice, o quale codice, potrebbe chiudere una posizione nel tester al prezzo di un altro strumento. Sono davvero, davvero curioso.
Facilmente. Dipende direttamente dalla slavità del codice. L'ho fatto io stesso :). Sistema di controllo dell'inizializzazione delle classi di caratteri mal concepito. E in più ci sono le variabili statiche.
Comunque, non ha senso parlare oltre senza il codice scritto dalla persona di cui si chiede.
Facilmente. È una correlazione diretta con la curvatura del codice. L'ho fatto io stesso :). Sistema di controllo insufficientemente elaborato dell'inizializzazione delle classi di caratteri. E in più ci sono le variabili statiche.
Quindi non ha senso parlare oltre senza chiedervi il codice.
Puoi mostrarci un esempio di codice? Come posso chiudere una posizione in EURUSD al prezzo GPBUSD?
Se è così, non sarà un problema per voi. Te ne sarei molto grato.
È facile. La dipendenza della curvatura del codice. Anch'io ho fatto questi errori :). Sistema di controllo dell'inizializzazione delle classi di caratteri non sufficientemente ben concepito. E in più le variabili statiche.
In ogni caso, non ha senso parlare oltre senza il codice scritto dalla persona di cui si chiede.
Non c'è nessun errore nel debug, modalità di visualizzazione. La posizione non viene chiusa da un ordine di trading, ma da uno stop loss:
Molto probabilmente un errore logico nel codice, molto probabilmente qui, lo esaminerò, naturalmente, non so ancora come - nessun errore in modalità debug:
riesce a impostare uno stop per un ordine a 1,60704, 3000 pip sopra il prezzo corrente della posizione.
Il tester avrebbe dovuto proibire l'impostazione dell'arresto in questo caso.
l'ordine di cambiare lo stop viene inviato per gpbusd, la linea evidenziata, ma viene effettivamente eseguito per eurusd- quella successiva.
ci sono 2 errori.
№1. Il tuo errore. Da qualche parte nel codice. Hai impostato uno SL per una posizione EURUSD usando il prezzo GBPUSD. Il terminale non dovrebbe avere nulla in contrario.
№2. Bug nel terminale. Se questo SL viene attivato ad un prezzo che non esiste in quel momento nel flusso EURUSD, utilizzando il prezzo GBPUSD.
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...
Nuh-uh :)
OK. Illuminaci. Quale errore nel codice, o quale codice, può chiudere una posizione nel tester al prezzo di un altro strumento. Sono davvero, davvero interessato.
Il codice è di diverse migliaia di righe. Non ha senso aggiungerlo, non ci sono variabili statiche. Ci sono delle classi. In ogni caso è un errore del tester.
Ecco il vostro errore.
In modalità debug, esegui un controllo prima di inviare un ordine di compravendita. Guarda il simbolo e i prezzi. E prova almeno in modalità "Tutte le zecche".
OK. Illuminaci. Quale errore nel codice, o quale codice, potrebbe chiudere una posizione nel tester al prezzo di un altro strumento. Sono davvero, davvero curioso.
Facilmente. Dipende direttamente dalla slavità del codice. L'ho fatto io stesso :). Sistema di controllo dell'inizializzazione delle classi di caratteri mal concepito. E in più ci sono le variabili statiche.
Comunque, non ha senso parlare oltre senza il codice scritto dalla persona di cui si chiede.
Facilmente. È una correlazione diretta con la curvatura del codice. L'ho fatto io stesso :). Sistema di controllo insufficientemente elaborato dell'inizializzazione delle classi di caratteri. E in più ci sono le variabili statiche.
Quindi non ha senso parlare oltre senza chiedervi il codice.
Puoi mostrarci un esempio di codice? Come posso chiudere una posizione in EURUSD al prezzo GPBUSD?
Se è così, non sarà un problema per voi. Te ne sarei molto grato.
Puoi mostrarmi un codice di esempio? Come si chiude una posizione EURUSD al prezzo GPBUSD?
Se è così, non sarebbe un problema per voi. Vi sarò molto grato.
Forum sul trading, sistemi di trading automatico e test di strategia
Bug, bug, domande
Vladimir Karputov, 2019.03.24 05:58
È facile. La dipendenza della curvatura del codice. Anch'io ho fatto questi errori :). Sistema di controllo dell'inizializzazione delle classi di caratteri non sufficientemente ben concepito. E in più le variabili statiche.
In ogni caso, non ha senso parlare oltre senza il codice scritto dalla persona di cui si chiede.
Non c'è nessun errore nel debug, modalità di visualizzazione. La posizione non viene chiusa da un ordine di trading, ma da uno stop loss:
Molto probabilmente un errore logico nel codice, molto probabilmente qui, lo esaminerò, naturalmente, non so ancora come - nessun errore in modalità debug:
riesce a impostare uno stop per un ordine a 1,60704, 3000 pip sopra il prezzo corrente della posizione.
Il tester avrebbe dovuto proibire l'impostazione dell'arresto in questo caso.
Qui sto guardando il registro:
l'ordine di cambiare lo stop viene inviato per gpbusd, la linea evidenziata, ma viene effettivamente eseguito per eurusd- dopo.
Ecco il codice per impostare lo stop
dove
OrderSend( req, res )funzione nativa mql, non sovraccaricata.
cioè qui
dice che imposta uno stop per gbpusd e dovrebbe essere così, ma in realtà
OrderSend( req, res )imposta per eurusd
Qui sto guardando il registro:
l'ordine di cambiare lo stop viene inviato per gpbusd, la linea evidenziata, ma viene effettivamente eseguito per eurusd- quella successiva.
ci sono 2 errori.
№1. Il tuo errore. Da qualche parte nel codice. Hai impostato uno SL per una posizione EURUSD usando il prezzo GBPUSD. Il terminale non dovrebbe avere nulla in contrario.
№2. Bug nel terminale. Se questo SL viene attivato ad un prezzo che non esiste in quel momento nel flusso EURUSD, utilizzando il prezzo GBPUSD.
Qui sto guardando il registro:
l'ordine di cambiare lo stop viene inviato per gpbusd, la linea evidenziata, ma viene effettivamente eseguito per eurusd- dopo.
Ecco il codice per impostare lo stop
dove
funzione nativa mql, non sovraccaricata.
https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
A quanto pare, quando si invia una richiesta di modifica, il campo posizione ha la precedenza sul simbolo. Stampareq.position