株式市場株式取引注文の執行速度。 - ページ 14

 
Dmitriy Skub #:
それは諸経費の面でもそうです。アービトラージという観点ではどうでしょうか。

もちろん、コスト面でも。

空売りすると損をする

 
Dmitriy Skub #:
それは諸経費の面でもそうです。裁定取引という点では?

古典的なアービトラージ、です。

株を買う(決して売らない)、同時に株券サイズの先物を売る。

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


株を空売りすれば、Openerは23%p.a.でメーターをオンにします。
 

しかし、Stock構造でrequest.action =TRADE_ACTION_PENDING;をrequest.action = TRADE_ACTION_DEALに置き換えるとどうなるのだろう。


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


注文は早く 実行されるのか、されないのか?

 
prostotrader TRADE_ACTION_PENDING;をrequest.action = TRADE_ACTION_DEALに置き換えるとどうなるのだろう。



注文は早く 実行されるのか、されないのか?

市場からの現在価格を指定すると、速くならない。しかし、滑りが発生する場合があります。とにかく、デモオープンで観察してみました。

 
Alexey Viktorov #:

カップから現在の価格を提示しているのであれば、これ以上速くなることはないと思います。しかし、滑りが生じることもあります。少なくとも、私はデモモードでそれを観察しました。

TRADE_ACTION_PENDING - 指定された条件で取引を行うための取引注文を設定する(保留注文)

TRADE_ACTION_DEAL - 指定したパラメータで即時 約定する取引注文を設定する (成行注文を出す)

TRADE_ACTION_DEAL注文の方が早く執行 されるようです。

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

TRADE_ACTION_PENDING - 指定された 条件で売買を成立させる注文 (保留注文 )を出す

TRADE_ACTION_DEAL - 指定したパラメータで即時 約定する取引注文を設定(プット成行注文)

TRADE_ACTION_DEAL注文の方が早く執行 されるようです。

オーダーがないとどうしようもない。即時執行とは、現在の価格のみでの執行を意味します。後で、ポジションIDによる注文のリストを取得することができますが、プロパティはすべてではありません。今、他に何が足りないか覚えていないが、確かに注文の値段は違う。

ここでは、デモで1つの未決済ポジションがあります。このコード

/********************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)));
   }
 }/*******************************************************************/

結果

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

これはFXではありません...


追加されました。

そうですね......すぐには理解できなかったようです......。

この場合、マーケットウィンドウの最良価格と同じ価格を保留注文に入れると、成行注文を設定したのと同じことになることを理解する必要があります。

 
Alexey Viktorov #:

この場合、市場の最良価格と同じ価格を出せば、成行注文を出したのと同じことになると理解すべきです。

これは、市場に十分なボリュームがある場合です。

 
JRandomTrader #:

これは、グラスに十分な容量がある場合です。

これはすべて実生活で確認する必要があります。おそらく、ベストプライスでボリュームが足りなければ、次から追加されるのでしょう。

しかし、Expert Advisorの仕事の話であれば、ベストプライスで十分な出来高がない場合、現在の出来高をオープンし、残りの出来高で次のベストプライスをオープンするという条件をつけることを妨げるものはありません。これをdo whileループで何度でも行うことができます。

 
Alexey Viktorov #:

これはすべて実生活で確認する必要があります。ベストプライスで十分なボリュームがない場合、次のベストプライスが追加される可能性があります。

しかし、Expert Advisorの仕事の話をするのであれば、ベストプライスで十分なボリュームがない場合、現在のボリュームをオープンし、残りのボリュームで次のベストプライスを再オープンすると規定することを妨げるものは何もないのです。do whileループで何度でもできます。

容量不足の場合は、充填の種類によって異なります。RETURNの場合は、残量による制限がカップに設定されます。

ところで、RETURN、TRADE_ACTION_DEAL、価格ゼロの成行注文を出すと、TRADE_ACTION_PENDING、価格スラットで別の取引TRADE_TRANSACTION_REQUESTが表示されます。

バーの上のループについてですが、これは液体が少ないものにしか使えません。そうでないとスピードが足りません。非同期送信、重い操作の回避、文字列での作業、履歴に極力アクセスしないなど、スピードを絞ったスケーラーを書きました。それでも、私のpingが10〜12msでは、ガラスに追いつきません。

 

奇妙に思えるかもしれませんが、価格が常に良くなることを除けばTRADE_ACTION_DEALの 方が何倍も速く動作します。

カップの中で最大(最小)に設定されているにもかかわらず。