Aktienmarkt. Bestände. Geschwindigkeit der Ausführung von Handelsaufträgen. - Seite 14

 
Dmitriy Skub #:
Das gilt für die Gemeinkosten. Aber was die Arbitrage betrifft?

in Bezug auf die Kosten, versteht sich.

Sie zahlen für das Leerverkaufen der Aktie

 
Dmitriy Skub #:
Das gilt für die Gemeinkosten. Und was die Arbitrage betrifft?

Das ist klassische Arbitrage:

Kauf(keineswegs Verkauf) von Aktien und gleichzeitiger Verkauf von Futures in Aktiengröße.

exp_data.fut_equity = long(exp_data.fut_contr * exp_data.fut_contr_size);

=

exp_data.spot_equity = long(exp_data.spot_lot * exp_data.spot_lot_size);
exp_data.fut_equity = exp_data.spot_equity


Wenn Sie eine Aktie leerverkaufen, schaltet Opener den Zähler bei 23% p.a. ein.
 

Aber ich frage mich, was passiert, wenn request.action = TRADE_ACTION_PENDING; durch request.action = TRADE_ACTION_DEAL in der Bestandsstruktur ersetzt wird;


ulong SpotSetOrder(const long vol, const double price, const ulong magic, const int dir)
{
  MqlTradeRequest request = {}; 
  MqlTradeResult  result = {};
//--- Fill structure
  request.magic = magic;
  request.symbol = Symbol();
  request.volume = double(vol); 
  request.type_filling = ORDER_FILLING_RETURN;
  request.type_time = ORDER_TIME_DAY;
  request.action = TRADE_ACTION_PENDING;
  request.price = price;
  request.comment = "Отложенный ордер";
  if (dir == BUY) request.type = ORDER_TYPE_BUY_LIMIT;
   else
  if (dir == SELL) request.type = ORDER_TYPE_SELL_LIMIT;
   else return(0);
  if(OrderSend(request, result) == true)
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE))
    {
      return(result.order);
    }
    else Print("Ордер не размешен на Бирже!");
  }
  else Print("Ордер не отправлен!");
  return(0);
}


Wird der Auftragschneller ausgeführt oder nicht?

 
prostotrader TRADE_ACTION_PENDING; durch request.action = TRADE_ACTION_DEAL in der Bestandsstruktur ersetzt wird;



Wird der Auftragschneller ausgeführt oder nicht?

Wenn Sie den aktuellen Marktpreis angeben, wird er nicht schneller sein. Es kann jedoch zu einem Ausrutscher kommen. Jedenfalls habe ich es bei den Demo-Öffnern beobachtet.

 
Alexey Viktorov #:

Wenn Sie den aktuellen Preis des Bechers angeben, glaube ich nicht, dass er noch schneller steigen wird. Aber es kann zu Ausrutschern kommen. Zumindest habe ich das im Demomodus beobachtet.

TRADE_ACTION_PENDING - setzt einen Handelsauftrag zur Ausführung eines Geschäfts zu bestimmten Bedingungen (Pending Order )

TRADE_ACTION_DEAL - einen Handelsauftrag für die sofortige Ausführung eines Geschäfts zu den angegebenen Parametern erteilen (einen Marktauftrag erteilen)

Es scheint, dass der Auftrag TRADE_ACTION_DEAL schneller ausgeführt werden sollte.

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

TRADE_ACTION_PENDING - Platzieren Sie einen Handelsauftrag, um einen Handel zu bestimmten Bedingungen auszuführen (Pending Order )

TRADE_ACTION_DEAL - setzt einen Handelsauftrag zur sofortigen Ausführung eines Geschäfts mit bestimmten Parametern (Put Market Order)

Es scheint, dass der Auftrag TRADE_ACTION_DEAL schneller ausgeführt werden sollte.

Es gibt keine Möglichkeit, auf einen Auftrag zu verzichten. Sofortige Ausführung bedeutet nur zum aktuellen Kurs. Später können wir eine Liste der Aufträge nach Positions-ID erhalten, aber die Eigenschaften werden nicht alle sein. Ich weiß nicht mehr, was noch fehlt, aber sicher nicht der Preis der Bestellung.

Hier haben wir eine schwebende Position in der Demo. Dieser Code

/********************Script program start function*******************/
void OnStart()
 {
  int posTotal = PositionsTotal();
  ulong posTicket = PositionGetTicket(0);
  long posID = PositionGetInteger(POSITION_IDENTIFIER);
  HistorySelectByPosition(posID);
  int ordTotal = HistoryOrdersTotal();
  for(int i = 0; i < ordTotal; i++)
   {
    ulong ordTicket = HistoryOrderGetTicket(i);
    Print("тикет ордера ", ordTicket,
          " время ", (datetime)HistoryOrderGetInteger(ordTicket, ORDER_TIME_SETUP), 
          " цена ", HistoryOrderGetDouble(ordTicket, ORDER_PRICE_OPEN),
          " установлен ", EnumToString((ENUM_ORDER_REASON)HistoryOrderGetInteger(ordTicket, ORDER_REASON)));
   }
 }/*******************************************************************/

Ergebnis

2022.04.08 09:30:28.996 !00 (EURUSD,M1) тикет ордера 178273170 время 2022.03.21 18:28:09 цена 0.0 установлен ORDER_REASON_EXPERT

Dies ist kein Forex...


Hinzugefügt:

Nun ja, ich habe es wohl nicht sofort verstanden...

In diesem Fall müssen Sie verstehen, dass die Eingabe eines Preises, der dem besten Preis im Marktfenster entspricht, in eine schwebende Order einer Marktorder gleichkommt.

 
Alexey Viktorov #:

Wenn Sie in diesem Fall einen Preis angeben, der dem besten Preis auf dem Markt entspricht, ist dies gleichbedeutend mit der Erteilung eines Marktauftrags.

Dies ist der Fall, wenn ein ausreichendes Marktvolumen vorhanden ist.

 
JRandomTrader #:

Dies ist der Fall, wenn das Glas genügend Volumen hat.

Das alles muss im wirklichen Leben überprüft werden. Wenn das Volumen zum besten Preis nicht ausreicht, wird es wahrscheinlich beim nächsten Mal hinzugefügt.

Aber wenn wir über die Arbeit des Expert Advisors sprechen, hindert uns nichts daran, die Bedingung zu stellen, dass wir, wenn es nicht genug Volumen zum besten Preis gibt, das aktuelle Volumen öffnen können und dann den nächsten besten Preis mit dem verbleibenden Volumen öffnen. Sie können dies in der do while-Schleife beliebig oft tun.

 
Alexey Viktorov #:

Das alles muss im wirklichen Leben überprüft werden. Wenn das Volumen zum besten Preis nicht ausreicht, wird wahrscheinlich der nächstbeste Preis hinzugefügt.

Aber wenn wir über die Arbeit des Expert Advisors sprechen, hindert uns nichts daran, festzulegen, dass wir, wenn wir nicht genügend Volumen zum besten Preis haben, das aktuelle Volumen öffnen und dann den nächstbesten Preis mit dem Rest des Volumens wieder öffnen. Sie können dies in der do while-Schleife so oft tun, wie Sie möchten.

Bei unzureichendem Volumen hängt es von der Art der Befüllung ab - bei RETURN wird die Grenze bei der Restmenge im Becher gesetzt.

Übrigens, wenn wir eine Market-Order mit RETURN, TRADE_ACTION_DEAL und einem Preis von Null aufgeben, dann können wir eine andere Transaktion TRADE_TRANSACTION_REQUEST mit TRADE_ACTION_PENDING und einem Preis an der Latte sehen.

Was die Schlaufe über der Stange betrifft, so funktioniert dies nur bei dünnflüssigen Stoffen, da die Geschwindigkeit sonst nicht ausreicht. Ich habe ein Scalper mit Geschwindigkeit Squeeze geschrieben, mit asynchronen Senden, die Vermeidung von schweren Operationen, arbeiten mit String und keine Geschichte Anrufe so viel wie möglich. Aber mit meinem Ping von 10-12 ms kann er trotzdem nicht mit dem Glas mithalten.

 

So seltsam es klingen mag, aber es funktioniert um ein Vielfaches schneller mit TRADE_ACTION_DEAL, nur dass der Preis immer besser sein wird,

obwohl er in der Tasse auf das Maximum (Minimum) eingestellt ist.


Grund der Beschwerde: