Wie eröffne ich einen Marktauftrag richtig? - Seite 4

 
Gennady Mazur:
Ja, ein guter Rat...

Wiederholen Sie

Wir müssen dieErgebnisse überprüfen.bestellen.

Wenn der Auftrag erteilt wird, bedeutet das nicht, dass das Geschäft bereits abgeschlossen ist.

Außerdem sollten wir auch den Status der Bestellung überprüfen und ob sie bereits in der Historie erschienen ist oder nicht.

Die Börse arbeitet nicht mit Positionen, sondern nur mit Aufträgen.

 
Gennady Mazur:

Vor kurzem habe ich ein Thema über die Wiederaufnahme von Aufträgen angesprochen. Ich dachte, ich hätte das Problem gelöst, da eine Woche lang alles reibungslos funktionierte. Aber heute bin ich nur beim Öffnen auf ein ähnliches Problem gestoßen.
Viele Aufträge wurden bei Finam eröffnet, und 9 bei Otkritie... obwohl in allen Fällen nur ein Auftrag hätte eröffnet werden dürfen.

Hier ist ein Codeausschnitt aus dem EA

    

D.h. wir können aus dem Code ersehen, dass bei erfolgreicher Operation die VariableOpenOrders steigt, die anfangs gleich 0 ist

Ist er größer als 0, sollte der Auftrag nicht weiter geöffnet werden, sondern der gesamte Auftragsstapel wird mit dem Kommentar Order1 geöffnet.

Ich überprüfe, ob es eine positive Antwort in der Funktion zum Öffnen der Bestellung gibt und ob das Bestellungs-Ticket empfangen wurde, aber aus irgendeinem Grund gibt diese Funktion false zurück, obwohl die Bestellung tatsächlich gesetzt ist.

Erläutern Sie, was falsch ist und wie man dieses Problem lösen kann.

Sagen Sie mir, für welchen Markt schreiben Sie diesen Code?
 
prostotrader:
Sagen Sie mir, für welchen Markt schreiben Sie diesen Code?
Aktienmarkt
 
Gennady Mazur:
Für den Börsenmakler.
OK, ich werde es mir ansehen...
 
Sergey Chalyshev:

Wiederholen Sie

Außerdem sollten Sie den Status der Bestellung überprüfen und feststellen, ob sie bereits in der Historie erschienen ist oder nicht.

Die Börse handelt nicht mit Positionen, sondern nur mit Aufträgen.

Nun Sergei, siehe....das ist aus der Dokumentation des Abfrageergebnisses

Deal

Ein Ticketverkauf, wenn er durchgeführt wurde. Dies wird bei einem Handelsgeschäft gemeldetTRADE_ACTION_DEAL

Bestellung

Ticketbestellung, wenn ein Ticket bestellt wurde. Benachrichtigung während eines GeschäftsvorgangsTRADE_ACTION_PENDING


Ich habe keinen schwebenden Auftrag, ich verwendeTRADE_ACTION_DEAL

Sie müssen mit Limitern arbeiten, dann ist alles richtig.... und hier ist der Einstieg vom Markt zum aktuellen Preis.
 
Gennady Mazur:

Nun Sergei, siehe....das ist aus der Dokumentation des Abfrageergebnisses

Angebot

Ticketverkauf, falls vorhanden. Zu melden bei einem GeschäftTRADE_ACTION_DEAL

Bestellung

Ticketbestellung, wenn ein Ticket bestellt wurde. Benachrichtigung während eines GeschäftsvorgangsTRADE_ACTION_PENDING


Ich habe keinen schwebenden Auftrag, ich verwendeTRADE_ACTION_DEAL

Sie müssen mit Limitern arbeiten, dann ist alles richtig.... und hier steigen Sie zum aktuellen Kurs ein.
Lesen Sie meine Antwort noch einmal, oder schreiben Sie an servicedesk.
 
Vladimir Karputov:

SetTypeFilling

SetTypeFilling

Legt die Auftragsart durch Ausfüllen fest


Sie legen fest, was Sie für richtig halten.

Übrigens, ich habe soeben die Ergebnisse des Versands der Bestellung mit den Ausdrucken überprüft

Das Ticket ergibt also in allen Fällen 0

  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:

Übrigens, ich habe soeben die Ergebnisse einer Bestellung mit den Ausdrucken überprüft

Ticket zeigt in allen Fällen 0 an

Es wurden Fortschritte erzielt ... ))



 
Gennady Mazur:

Übrigens habe ich soeben bei der Druckerei nachgefragt, was mit dem Versand der Bestellung passiert ist

Das Ticket ergibt also in allen Fällen 0

  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);

Wo sind die Rückgabecodes? Woher weiß ich, ob ein Fehler vorliegt oder nicht?

Ich habe Ihnen ein Beispiel gegeben: doppelter Schutz und die Ausgabe des Tickets und des Rückgabecodes.

 

Ich konnte kein Beispiel finden. Lassen Sie es mich so formulieren.

Wenn Sie einen Auftrag über den Markt senden, sollte der Auftrag ausgeführt oder abgelehnt werden (da Sie einen FOK-Fill haben).

Sie brauchen also nicht auf ein Ticket zu warten, sondern ein TICKET zu kaufen.

Sobald Sie ein Ticket erhalten haben, "gehen" Sie mit dem Ticket zu OnTradeTransaction()

Sie hören auf TRADE_TRANSACTION_HISTORY_ADD, weil Marktaufträge immer in die Historie gelangen.

und sehen Sie sich das Ticket an, um zu sehen, was mit der Bestellung passiert ist.