Domande di OrderSend() - pagina 6

 
maryan.dirtyn:

Mi sto scervellando... lo stop non si imposta... e un sacco di errori. questo è ciò che resta dell'esperimento, e non funziona più

Se fate questo, non ci sono errori, ma lo stop-loss non è ancora impostato

risposto qui
 
Yedelkin:

A quanto pare, non ho spiegato molto bene il problema precedente. Lasciatemi provare di nuovo.

Durante l'ultimo anno, la descrizione della lista di valori di enumerazioneENUM_ORDER_TYPE_FILLING è stata cambiata almeno tre volte. La descrizione precedente era la seguente

ENUM_ORDER_TYPE_FILLING

Identificatore

Descrizione

ORDINE_RIEMPIMENTO_FOK

Un'operazione può essere eseguita solo nel volume specificato e a un prezzo uguale o migliore di quello specificato nell'ordine. Se non c'è abbastanza offerta sul mercato al momento per il simbolo dell'ordine, l'ordine non sarà evaso. Questo tipo di riempimento è usato nella modalità di esecuzione SYMBOL_TRADE_EXECUTION_INSTANT oSYMBOL_TRADE_EXECUTION_REQUEST.

ORDINE_RIEMPIMENTO_IOC

Un accordo per eseguire una negoziazione al massimo volume disponibile sul mercato entro il volume specificato nell'ordine e ad un prezzo uguale o migliore di quello specificato nell'ordine. In questo caso non verranno effettuati ordini aggiuntivi per il volume mancante. Questo tipo di riempimento può essere disponibile solo nelle modalità di esecuzione SYMBOL_TRADE_EXECUTION_MARKET eSYMBOL_TRADE_EXECUTION_EXCHANGE a seconda delle impostazioni del server di trading.

ORDINE_RIEMPIMENTO_RITORNO

Accordo per effettuare una negoziazione al massimo volume disponibile sul mercato entro il volume specificato nell'ordine e ad un prezzo uguale o migliore di quello specificato nell'ordine. In questo caso verrà effettuato un ordine aggiuntivo per il volume mancante al prezzo specificato in questo ordine. Questo tipo di riempimento è usato solo per gli ordini in sospeso (TRADE_ACTION_PENDING).

Come possiamo facilmente vedere, c'è una corrispondenza uno-a-uno tra ORDER_FILLING_RETURN e gli ordini pendenti, cioè: ORDER_FILLING_RETURN poteva essere applicato solo agli ordini pendenti e il campo type_filling di tutti gli ordini pendenti poteva essere riempito solo con il valore di ORDER_FILLING_RETURN.

Per gli ordini a mercato(action==TRADE_ACTION_DEAL) il campo type_filling dovrebbe essere stato compilato a seconda delle modalità di esecuzione impostate sul lato server.

Così avevamo un certo paradigma: se c'era un ordine pendente,ORDER_FILLING_RETURN; se c'era un ordine a mercato, ORDER_FILLING_FOK o ORDER_FILLING_IOC (a seconda del modo).

Ora abbiamo ribaltato un po' le cose, cioè:

ENUM_ORDER_TYPE_FILLING

Identificatore

Descrizione

ORDINE_RIEMPIMENTO_FOK

Questa politica di riempimento degli ordini significa che l'ordine può essere riempito solo fino al volume specificato. Se non c'è abbastanza volume dello strumento finanziario disponibile sul mercato al momento, l'ordine non sarà eseguito. Il volume richiesto può essere compilato da diverse offerte attualmente disponibili sul mercato.

ORDINE_RIEMPIMENTO_IOC

Indica l'accordo di eseguire un trade al massimo volume disponibile sul mercato entro il volume specificato nell'ordine. Se l'esecuzione completa non è possibile, l'ordine sarà riempito al volume disponibile, e il volume non riempito sarà cancellato.

ORDINE_RIEMPIMENTO_RITORNO

Questa modalità è usata solo per gli ordini ORDER_TYPE_BUY_LIMIT e ORDER_TYPE_SELL_LIMIT. In caso di esecuzione parziale l'ordine limite con il volume rimanente non viene cancellato ma rimane in vigore.

Per gli ordini ORDER_TYPE_BUY_STOP_LIMIT e ORDER_TYPE_SELL_STOP_LIMIT viene creato all'attivazione il corrispondente ordine limite ORDER_TYPE_BUY_LIMIT/ORDER_TYPE_SELL_LIMIT con il tipo di esecuzione ORDER_FILLING_RETURN.

La restrizione di usare ORDER_FILLING_FOK e ORDER_FILLING_IOC solo con ordini a mercato è sparita. Inoltre non c'è alcuna restrizione nell'uso di ORDER_FILLING_FOK e ORDER_FILLING_IOC con ordini a mercato a seconda della modalità di esecuzione impostata sul server. C'è una restrizione sull'uso di ORDER_FILLING_RETURN solo con ordini limite e stop_limit .

Quindi la mia domanda è: è accettabile usare ORDER_FILLING_FOK e ORDER_FILLING_IOC per tutti gli ordini (sia a mercato che pendenti) inclusi gli ordini limit e stop_limit? Qualcuno ha capito i cambiamenti?

Sì, è un po' oscuro su questo argomento.

Se c'è piena corrispondenza tra ENUM_SYMBOL_TRADE_EXECUTION e ENUM_ORDER_TYPE_FILLING allora il secondo non è ovviamente necessario.

Quindi non c'è moralità, e molto probabilmente diversi valori diENUM_ORDER_TYPE_FILLINGsono accettabili con uno stessovalore di ENUM_SYMBOL_TRADE_EXECUTION . MQ descriverebbe qui una tabella di possibilità, ma molto probabilmente questi dati dipendono dalle impostazioni del server di gestione.

E da qui la seconda morale, quella che in fondo è necessaria:

è necessaria una funzione che restituisca una lista di opzioni valide (ENUM_ORDER_TYPE_FILLING), per il tipo di ordine richiesto (immediato o in sospeso).

Non ci sono molte opzioni lì, quindi si può infilare int tramite "|".

Se mi sbaglio, datemi un mago, dove cercare questa domanda.



 

Per risolvere questa questione, sono andato alla libreria standard (per abitudine, se non è chiaro vedere come fanno gli altri).

La funzione per l'ereditarietà conveniente è stata data lì, mentre nella classe CTrade SetTypeFilling() non è usata, il campo type_filling è inizializzato per difetto zero che corrisponde a ORDER_FILLING_FOK secondo l'enumerazione.

Questo è tutto, niente più lavoro. E ho pensato che siccome questo campo non è presente nell'interfaccia, significa che il riempimento è automatizzato nella classe.

SZY in generale, in attesa di una risposta, come risolvere il problema :)
 
Per ora, vedo una sola via d'uscita: martellare il server finché non ti dà la risposta di cui hai bisogno.
 
her.human:
Finora, vedo una soluzione: pestare il server finché non si ottiene la risposta che si desidera.

Un buon intrattenimento notturno, mi ha fatto ridere fino allo stomaco.

I cinesi hanno violato il server principale del Pentagono.

Ogni cinese ha provato una volta a digitare la password.

Tutte le altre persone hanno digitato "Mao Tse Tung".

Su 5*10^7 tentativi, il server dice che la password è "Mao Tse Tung".

 
her.human:
Per ora, vedo una sola via d'uscita: martellare il server finché non si ottiene la risposta giusta.

stupida via d'uscita.

Dovresti prima parlare con il tuo DC, scoprire quali tipi di esecuzione supportano e quali tipi di lista metaquot corrispondono ai loro tipi di esecuzione.

perché solo perché metaquotes è venuto con - 3 tipi di riempimento e 3 tipi di tempo - non significa che sono un riflesso della realtà quando si riempiono gli ordini su un broker reale.

 
sergeev:

stupida via d'uscita.

Dovreste prima parlare con il vostro DC per scoprire quali tipi di esecuzione supportano e quali tipi di liste di metaquote corrispondono ai loro tipi di esecuzione.

perché solo perché metaquotes è venuto con - 3 tipi di riempimento e 3 tipi di tempi - non significa che sono un riflesso della realtà quando si riempiono gli ordini su un broker reale.

È quello che sto dicendo, tutto dipende dalle impostazioni del server,

Ma bussare ad ogni società di intermediazione è anche un problema,

per esempio in una società di intermediazione si può ottenere un ordine per un'intermediazione reale,

ma bypassare tutto e scrivere i dilling degli interruttori nel vostro codice è eccessivo.

Se pensi di esserti già registrato con noi, puoi iniziare da zero con un vero broker o aprirli da zero,

PS siete d'accordo che il codice normale è scritto in modo unificato, per ogni affare, le eccezioni sono possibili ma in primo luogo le eccezioni confermano le regole, e in secondo luogo se ci sono eccezioni bisogna scrivere le eccezioni.

Qui risulta una tale tautologia.

 
Urain:

Questo è il mio punto, tutto dipende dalle impostazioni del server,

Ma sarebbe problematico bussare ad ogni società di intermediazione,

Se non si conosce la differenza tra i due, si può pensare che l'ordine sarà copiato in quello giusto,

ma bypassare tutto e scrivere i dilling degli interruttori nel vostro codice è eccessivo.

PS dovreste essere d'accordo che il codice normale è scritto in modo unificato, per qualsiasi tipo di commercio,

PS siete d'accordo che il codice normale è scritto in modo unificato, per ogni affare, le eccezioni sono possibili ma prima le eccezioni confermano solo le regole, e in secondo luogo se ci sono eccezioni bisogna scrivere le eccezioni. Qui risulta una tale tautologia.

Ecco come stanno le cose.

i metaquote sono incasinati con i tipi di esecuzione e i tempi di esecuzione. sono non standard nel senso che in realtà gli ordini IOC e FOK si riferiscono ai tempi di esecuzione.

Il tipo di esecuzione dell'ordine era adeguatamente chiamato AON. ma è stato poi rimosso.

Guarda la specifica FIX che FC usa ed esegue gli ordini

FIX 4.4 : TimeInForce <59> field

Type: char

Used In
Description

Specifies how long the order remains in effect. Absence of this field is interpreted as DAY. NOTE not applicable to CIV Orders.

Valid values:
0 = Day (or session)
1 = Good Till Cancel (GTC)
2 = At the Opening (OPG)
3 = Immediate or Cancel (IOC)
4 = Fill or Kill (FOK)
5 = Good Till Crossing (GTX)
6 = Good Till Date
7 = At the Close

Ho segnato i tipi che hanno preso meta quote a se stessi. Ma come potete vedere sono tutti in un gruppo del tag TimeInForce <59>.

E ora per favore ditemi come il broker che piazza le offerte al mercato elaborerà la put di tipo IOC e il tempo GTD nell'ordine MT. Perché questo è un solo campo, non due diversi.

Pertanto, ogni broker penserà da solo cosa fare con il riempimento e quale tipo usare e come ritirare l'ordine.


L'unica salvezza è la differenza tra l'ordine a mercato e l'ordine pendente, cioè alcuni tipi di esecuzione degli ordini sono utilizzati solo per gli ordini pendenti e altri per quelli a mercato. In generale, dovremmo esaminare questo punto e discuterne.


Il nome All-Or-Nothing si trova in un altro tag, ExecInst <18>, che non viene passato a MetaTrader in alcun modo. È implicitamente assunto (probabilmente) per il tipo FOK

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

Alex prendi in mano questo argomento per favore. Purtroppo sono un fluttuante su questi temi.

Fai dei suggerimenti alla SD, parla con loro.

Dobbiamo mettere l'argomento in un certo ordine.

Quello che abbiamo ora non è affatto utilizzabile per la programmazione professionale.

 
Urain:

Alex, occupati di questo argomento per favore. Purtroppo sono un po' un nuotatore su questi argomenti.
Date suggerimenti alla sd, parlate con loro.
Dobbiamo mettere in ordine l'argomento.
Non sono sicuro che quello che abbiamo ora sia adatto alla programmazione professionale.

O sono stupido o i miei sci non si muovono.

Voi stessi vedete che ogni mese methaquotes si collega a una nuova borsa o mercato.
Da cui concludo che in questo stato di cose i loro programmatori agganciano MT e FIX senza problemi (o con qualche sforzo con limitazione di uno di loro).
Così possono combinare i tipi di tempo FOK e GTC, il che significa che è improbabile che cambino qualcosa nel prossimo futuro, dato che il lavoro è in corso.
Allo stesso tempo (capisco), che per lo scambio il ponte da MT può impostare solo due tipi - AON o Partial. E inventato in MT Return - probabilmente va a Partial.

In generale, i problemi di interazione FIX broker e server MT si trovano nel piano di abilità e comprensione progerie al broker, che fanno ponti da MT ai loro fornitori. E non credo che metaquotes cambierà nulla, perché hanno lungo e attivamente promuovere la piattaforma per i mercati, e quindi la struttura interna del server MT abbastanza coerente con le realtà.