Errori, bug, domande - pagina 399

 

papaklass, grazie per la risposta!

Esempio (probabilmente mi ripeterò):

Lotto minimo = 1,0; passo minimo del lotto = 0,1. La quotazione inizia a scendere, il trader cerca di chiudere una posizione lunga di 10,1 lotti. Nel caso di un mercato di notizie, l'ordine ORDER_FILLING_AON potrebbe non essere eseguito. È più ragionevole usare RDER_FILLING_CANCEL. Il trade Sell opposto viene eseguito parzialmente (di 10,0 lotti). La parte rimanente della posizione lunga (0,1 lotto) continua a subire perdite. Non può essere chiuso perché il lotto minimo del trade = 1,0 lotto. Cioè, per uscire completamente dal mercato, il trader deve:

1. Per incorrere in perdite evidenti comprando almeno 1,0 lotto.

2. Prova ad eseguire un'operazione di vendita di 1,1 lotti con il parametro ORDER_FILLING_AON.

Quindi, in termini di senso comune, inserire ORDER_FILLING_CANCEL eORDER_FILLING_RETURN impone un requisito rigoroso per i valori del lotto minimo e dell'incremento minimo del lotto, devono essere uguali.

Un altro esempio.

C'è una posizione lunga con 1,0 lotto e SL/TP sono impostati. Il trader cerca di fare una negoziazione inversa (vendita) in un volume di 1,1 lotti con SL/TP specificato (per la vendita).

Supponiamo che tale volume sia disponibile sul mercato e la posizione risultante sarebbe - vendere un volume di 0,1 lotti con un SL/TP specificato (per la vendita).

Ma non c'è questo volume e abbiamo ORDER_FILLING_CANCEL? Otterremo un errore di SL/TP sbagliato. Quindi, diciamo modestamente, la saggezza è quella di inviare SL/TP = 0 nei cross trade con il parametro ORDER_FILLING_CANCEL.

So che molti programmatori di MQL5 sono persone intelligenti, ma credo che sarebbe bene avere un articolo da parte degli sviluppatori che spieghi l'algoritmo di verifica della correttezza degli ordini.

Ripeterò la mia domanda. Esiste un tale articolo? Se no, sperate che appaia presto?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
papaklass:

Quando un ordine viene eseguito, il volume della posizione rimanente non può essere inferiore al minimo.

Come può essere così sicuro?

Un post sopra ha dato un esempio (il primo) di un caso in cui tale situazione è possibile.

O il server ha uno speciale caratteristica che impedisce di chiudere parzialmente un ordine in modo che il resto sia inferiore al lotto minimo. Dove è scritto esplicitamente questo nella documentazione?

 
voix_kas:

Come può essere così sicuro?

Un post sopra ha dato un esempio (il primo) di un caso in cui tale situazione è possibile.

O c'è una funzione speciale sul server la caratteristica Oppure, c'è un codice speciale che impedisce di chiudere parzialmente un ordine per mantenere il saldo sotto il lotto minimo. Dove è scritto esplicitamente questo nella documentazione?

Questo è esattamente ciò che è scritto sul server (come ultima risorsa). Forse anche il terminale reagirà in tempo per evitare un'operazione palesemente errata.

Per tutte le regole logiche è impossibile fare la transazione in volume inferiore al minimo e tale transazione che cambierà/esporrà il volume di un articolo a quello che è inferiore al lotto minimo.

 
Interesting:

Questo è esattamente ciò che è specificato sul server (come autorità finale). Forse il terminale reagirà anche in tempo per evitare un'operazione palesemente errata.

Per tutte le regole logiche, non è possibile eseguire una transazione con un volume inferiore al lotto minimo e una tale transazione che cambierà/esporrà il volume della posizione a quello che è inferiore al lotto minimo.

Cosa e dove è scritto esattamente "sul server..."?

C'è una cosa negativa nei vostri messaggi: la speculazione. Mi dispiace per l'opposizione diretta. :-)

Dammi un link specifico nella documentazione dove è esplicitamente scritto: è vietato eseguire parzialmente un trade in modo che il saldo sia inferiore al lotto minimo.

 
voix_kas:

Cosa esattamente e dove dice "sul server..."?

C'è una cosa negativa nei suoi post: la speculazione. Mi dispiace per l'opposizione diretta. :-)

Datemi un link specifico nella documentazione dove è esplicitamente scritto: proibire l'esecuzione parziale di un trade in modo che il saldo sia inferiore al lotto minimo.

Prova da Alpari (se non sbaglio il loro lotto minimo è 0,10) con uno script senza controlli per aprire un lotto di 0,01.

Vedere cosa restituisce la risposta (informazioni nella struttura) su questo conto.

Puoi anche provare ad eseguire l'Expert Advisor con 0,01 lotti nello Strategy Tester sui conti del 2010.

Dopo di che continueremo la conversazione sostanziale su cosa e dove è possibile.

voix_kas:

Dammi un link specifico nella documentazione, dove è chiaramente scritto: è vietato eseguire parzialmente un trade in modo che il saldo sia inferiore al lotto minimo.

Un atomo di idrogeno può essere più piccolo di un atomo di idrogeno. probabilmente sì, ma non sarebbe più il nostro universo o le "nostre" leggi fisiche...

E quale sezione della documentazione dovrebbe dire questo in "ABC" o "Fondamenti di matematica"?

Mi dispiace per l'opposizione diretta. :-)

Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 
Interesting:

Prova su Alpari (se non mi sbaglio, hanno un lotto minimo di 0,10) con uno script senza controlli per aprire un lotto di 0,01.

Vedere cosa viene restituito su questo account nella risposta (informazioni nella struttura).

Puoi anche provare ad eseguire l'Expert Advisor con 0,01 lotti nello Strategy Tester sui conti del 2010.

Dopo di che continueremo la conversazione sostanziale su cosa e dove è possibile.

Mi dispiace per l'opposizione diretta. :-)

Caro signore, lei ha letto la mia domanda.

Non sto chiedendo se è possibile fare un trade con un volume inferiore al lotto minimo impostato su un particolare conto/tipo di conto. Certo che no.

La mia domanda è la seguente: dal punto di vista del concetto di MQL5, è accettabile eseguire un trade con un lotto parziale inferiore al lotto minimo consentito (naturalmente, stiamo parlando di ORDER_FILLING_CANCEL eORDER_FILLING_RETURN).

E non stiamo parlando di conclusioni empiriche, ma di specifici requisiti/limitazioni nel "motore" MQL5, che sono stati ufficialmente pubblicati.

 
voix_kas:

Caro signore, lei ha letto la mia domanda.

Non sto chiedendo se è possibile fare un trade con un volume inferiore al lotto minimo stabilito in un particolare conto/tipo di conto. Certo che no.

La mia domanda è la seguente: dal punto di vista del concetto di MQL5, è accettabile eseguire un trade con un lotto parziale inferiore al lotto minimo consentito (naturalmente, stiamo parlando di ORDER_FILLING_CANCEL eORDER_FILLING_RETURN).

E non stiamo parlando di conclusioni empiriche, ma di specifici requisiti/limitazioni nel "motore" MQL5 che sono stati ufficialmente pubblicati.

Ho appena controllato manualmente, tutto si chiude bene. Ho aperto buy 0.21 lot e chiuso sell 0.2 lot, buy 0.01 lot rimane sul mercato anche se il minimo è 0.1 lot. L'ho controllato sul quadruplo e anche lì non ci sono errori nella chiusura parziale.
 
papaklass:

Quando un ordine viene eseguito, il volume della posizione rimanente non può essere inferiore al volume minimo. Sarà un multiplo del volume minimo, ma non meno.

Fammi un esempio di come puoi cambiare una posizione di 0,01 lotti, con il lotto minimo possibile di 0,1. Allora risponderai alla tua stessa domanda.

La sua interpretazione è chiara. Ma guardate la documentazione:

SYMBOL_VOLUME_MIN Volume minimo per una compravendita

SYMBOL_VOLUME_STEP Passo minimo di variazione del volume per concludere un accordo

Cioè, nel nostro esempio sono possibili scambi (e quindi ordini) con un volume di 0,1, 0,11, 0,12 .... ecc.

e impossibile sono 0,09, 0,08, 0,07 ... ecc.

Esattamente accordi, nulla è detto circa il volume di posizione.

Ecco un esempio: abbiamo comprato 1,0 lotti, lo chiudiamo parzialmente con vendere 0,95 (questo corrisponde alle condizioni di granulazione del volume), la posizione rimanente è di 0,05 lotti. E non possiamo chiuderlo ora.

Dovremmo prima aumentare la posizione ad almeno 1,05 (un ordine non può essere inferiore a 0,1) e poi chiuderla completamente.

È assurdo che non si possa chiudere completamente una posizione aperta.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
sergey1294:
Ho appena controllato manualmente e si chiude perfettamente. Ho aperto una posizione di acquisto con 0,21 lotti e chiuso una posizione di vendita con 0,2 lotti. 0,01 lotti sono rimasti sul mercato anche se il minimo era 0,1 lotti. Ho controllato anche sul 4. Anche lì non ci sono errori di chiusura parziale.

La posizione rimanente di 0,01 lotti è chiusa da un trade opposto dello stesso volume?

Cioè, un'operazione di vendita con un volume di 0,01 passa (ovviamente, chiudendo completamente la posizione aperta)?

 
voix_kas:

Caro signore, lei ha letto la mia domanda.

Non sto chiedendo se è possibile fare un trade con un volume inferiore al lotto minimo impostato in un particolare conto/tipo di conto. Certo che no.

La mia domanda è questa: dal punto di vista del concetto MQL5, è accettabile eseguire un trade con un lotto parziale inferiore al lotto minimo accettabile? (Naturalmente, stiamo parlando di ORDER_FILLING_CANCEL eORDER_FILLING_RETURN).

Non stiamo parlando di conclusioni empiriche, ma di specifici requisiti/restrizioni in MQL5 che sono stati ufficialmente pubblicati.

La risposta è semplice - non è possibile e non è ammissibile, in tutte le condizioni (altrimenti è in SD subito. E non solo "noi" saremmo indignati come tester della parte client, ma anche i broker che stanno testando la parte server).

Rispondendo alla parte tecnica della tua domanda, ti rispondo che il controllo esiste nella parte client (terminale e tester), e senza dubbi nella parte server.

Il controllo della parte client è necessario in primo luogo, per trovare preventivamente ogni sorta di violazione delle condizioni e delle regole di trading, e in secondo luogo, per ridurre il carico sul server e prevenire "attacchi" con richieste errate (il terminale non invierà semplicemente una richiesta al server se rileva una violazione delle regole di trading o un errore evidente nella richiesta).

A sua volta, il server (come ultima istanza) controllerà necessariamente anche la correttezza della richiesta di scambio (compresa la correttezza delle conseguenze previste dell'esecuzione di questa richiesta).

Motivazione: