Come si apre correttamente un ordine a mercato? - pagina 4

 
Gennady Mazur:
Sì, un buon consiglio...

Ripetere

Dobbiamo controllare irisultati.ordine.

Se l'ordine viene effettuato, non significa che l'affare sia già stato fatto.

Inoltre, dovremmo anche controllare lo stato dell'ordine e se è già apparso nella storia o no.

Lo scambio non funziona con le posizioni, solo con gli ordini.

 
Gennady Mazur:

Recentemente ho sollevato un argomento sulla riapertura degli ordini. Pensavo di aver risolto il problema, dato che tutto funzionava molto bene per una settimana. Ma oggi ho riscontrato un problema simile solo all'apertura.
Si sono aperti molti ordini su Finam, e 9 su Otkritie...anche se solo un ordine avrebbe dovuto aprirsi in tutti i casi.

Ecco uno snippet di codice dall'EA

    

cioè possiamo vedere dal codice che se l'operazione ha successo, aumenta la variabileOpenOrders, che inizialmente è uguale a 0

Se è superiore a 0, non dovrebbe esserci un'ulteriore apertura dell'ordine, ma l'intera pila di ordini viene aperta con il commento Ordine1.

Controllo se c'è una risposta positiva nella funzione che apre l'ordine e se il biglietto d'ordine è stato ricevuto, ma per qualche motivo questa funzione restituisce falso, anche se l'ordine è effettivamente impostato.

Spiegare cosa c'è di sbagliato, come risolvere questo problema?

Mi dica, per quale mercato sta scrivendo questo codice?
 
prostotrader:
Dimmi, per quale mercato stai scrivendo questo codice?
Mercato azionario
 
Gennady Mazur:
Per l'agente di cambio.
OK, darò un'occhiata...
 
Sergey Chalyshev:

Ripetere

Oltre a questo, si dovrebbe anche controllare lo stato dell'ordine e se è già apparso nella storia o no.

Lo scambio non si occupa di posizioni, ma solo di ordini.

Bene Sergei, vedi ....questo è dalla documentazione del risultato della query

Deal

Un affare di biglietti, se è stato eseguito. Questo è riportato durante una transazione commercialeTRADE_ACTION_DEAL

ordine

Ordine del biglietto, se è stato piazzato un biglietto. Notificato durante un'operazione commercialeTRADE_ACTION_PENDING


Non ho un ordine pendente, usoTRADE_ACTION_DEAL

Devi lavorare con i limitatori, poi tutto è corretto.... ed ecco l'entrata dal mercato al prezzo attuale.
 
Gennady Mazur:

Bene Sergei, vedi ....questo è dalla documentazione del risultato della query

affare

Accordo sui biglietti, se esiste. Da riportare su una tradeTRADE_ACTION_DEAL

ordine

Ordine del biglietto, se è stato piazzato un biglietto. Notificato durante un'operazione commercialeTRADE_ACTION_PENDING


Non ho un ordine pendente, usoTRADE_ACTION_DEAL

Devi lavorare con i limitatori, allora tutto è corretto.... e qui stai entrando dal mercato al prezzo corrente.
Rileggi la mia risposta o scrivi a servicedesk.
 
Vladimir Karputov:

SetTypeFilling

SetTypeFilling

Imposta il tipo di ordine riempiendo


Stabilite voi ciò che ritenete opportuno.

A proposito, ho appena controllato i risultati dell'invio dell'ordine con le stampe

quindi il biglietto dà 0 in tutti i casi

  bool res=false;
  res=OrderSend(Request,Results);
  if(res)
  {
    Print(_Symbol+" Test True order "+(string)Results.deal);
    if(Results.deal>0) return(true);
    else return(false);
  }
    Print(_Symbol+" Test False order "+(string)Results.deal);
  return(false);
 
Gennady Mazur:

A proposito, ho appena controllato i risultati dell'invio di un ordine con le stampe

Il biglietto mostra 0 in tutti i casi

Sono stati fatti dei progressi... ))



 
Gennady Mazur:

A proposito, ho appena controllato con le stampanti i risultati dell'invio dell'ordine

quindi il biglietto dà 0 in tutti i casi

  bool res=false;
  res=OrderSend(Request,Results);
  if(res)
  {
    Print(_Symbol+" Test True order "+(string)Results.deal);
    if(Results.deal>0) return(true);
    else return(false);
  }
    Print(_Symbol+" Test False order "+(string)Results.deal);
  return(false);

Dove sono i codici di ritorno? Come faccio a sapere se c'è stato un errore o no?

Vi ho dato un esempio: doppia protezione e l'uscita del biglietto e il codice di ritorno.

 

Non sono riuscito a trovare un esempio. Mettiamola così.

Quando invii un ordine attraverso il mercato, l'ordine dovrebbe essere eseguito o rifiutato (dato che hai un riempimento FOK).

Quindi non c'è bisogno di aspettare un biglietto, ma di ottenere un BIGLIETTO.

Una volta ricevuto un biglietto, si "va" a OnTradeTransaction() con il biglietto

si ascolta TRADE_TRANSACTION_HISTORY_ADD perché gli ordini di mercato arrivano sempre alla storia

e guardare il biglietto per vedere cosa è successo all'ordine.

Motivazione: