堡垒。执法问题 - 页 88

 
fxsaber:

限制器可以是FOK吗?

好问题。

即(以红色标示)限价订单不能成为FOK,因为它是以固定价格执行的。

但另一方面,音量可能足够....。


ORDER_FILLING_FOK

Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме.
Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен.
Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.
我认为(从未使用过FOK)可能是FOK,但需要检查音量。
 
prostotrader:

好问题。

即(红色显示)限价订单不能成为FOK,因为它是以固定价格执行的。

但另一方面,音量可能足够....。


ORDER_FILLING_FOK

Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме.
Если на рынке в данный момент не присутствует достаточного объема финансового инструмента, то ордер не будет исполнен.
Необходимый объем может быть составлен из нескольких предложений, доступных в данный момент на рынке.

只是 "帮助 "是歪的。限价单总是一种RETURN类型的填补。FOK、IOC都只是市场平台。

但这只适用于交易所和ECN。由于也有STP,其中限价器是虚拟订单,只是各自市场订单的发起者,所以FOK/IOC对它们是可能的。但只是在屏幕上,它们是限制者,而不是在本质上。

 
fxsaber:
只是,"帮助 "是歪的。限价单总是仅有RETURN类型的填补。FOK、IOC只是标记。

并非如此,我总是使用限制器,但只使用IOC

已经超过3年了。

你自己看看吧 :)

添加

限价单与市价单相同,但它是一个执行价格。

如果有价格,它就被执行,如果没有价格,它就被删除。

执行政策

除了经纪人指定的订单执行的一般规则外,交易者可以在订单设置窗口的 "填充 "字段中指定附加条件。

  • 全/无(填充或杀死)
    这种执行政策意味着一个订单只能被执行到指定规模。如果目前市场上某种金融工具的交易量不足,订单将不会被执行。所需的数量可以从目前市场上的几个报价中编制出来。
  • 全部/部分(立即或取消)。
    在这种情况下,交易商同意在订单中指定的数量范围内,以市场上的最大数量进行交易。如果不可能完全执行,该订单将被执行为可用的量,而未执行的订单量将被取消。使用IOC订单的可能性由交易服务器决定。
  • 返回
    这种模式用于市场(买入和卖出)、限价和止损订单,并且只在 "市场执行 "和 "交易所执行 "模式下使用。在部分执行的情况下,有剩余交易量的市场或限价订单不会被删除,但仍然有效。

取决于执行模式的执行策略的应用可以用表格的形式表示。

Execution mode/Execution policy(执行模式)。

全部/无 (FOK)

全部/部分 (IOC)

返回

立即执行

+

-

-

根据要求进行表演

+

-

-

根据市场执行

+

+

+

交易所执行

+

+

+

 
prostotrader:

不是这样的,我总是使用限制器,但只使用IOC

已经超过3年了。

自己去看看吧 :)

  1. 我们将IOC-BuyLimit设置为差价内的10手,然后立即用1手做SELL。预期的反应是--以相同的价格进行两笔相反的交易(利润--零,但是双倍的佣金)1手,9手被取消。
  2. 我们将FOK-BuyLimit设置为价差内的10手,然后立即卖出1手。预期的反应是卖出1手,并取消10手。

你不会看到这一点。而在Request for limit类型中可以放置FOK/IOC-类型的事实并不意味着它们属于这种类型。

 
fxsaber:

  1. 我们在价差内设置IOC-BuyLimit为10手,然后立即卖出1手。预期的反应是--以相同的价格进行两笔相反的交易(利润为零,但佣金为双倍)1手,取消了9手。
  2. 我们将FOK-BuyLimit设置为价差内的10手,然后立即卖出1手。预期的反应是卖出1手,并取消10手。

你不会看到这一点。而且,在FOK/IOC类型的请求限制交易中,并不意味着它们属于这种类型。

看看上面的表格。

FOK在所有模式中都存在。

只是,对于FOK,你需要检查成交量,但这并不是保证订单会执行,因为当

来到交易所,所需的体积可能不在那里(它已经被吃掉了)。

不完全的FOK顺序匹配

 
prostotrader:

当订单 "到达 "交易所时,所需的数量可能没有了(它已经被吃掉了),因此

不完全的FOK顺序匹配

不完整的FOK订单输入,因此不完整的FOK订单输入。限制器不受此影响。以上是两种容易检查的情况。它们不能被复制,因为如果它们的出价与当前价格一样,就没有FOK/IOC限制。
 
fxsaber:
这是一个弯曲的参考。这不适用于限价订单。以上是两种容易检查的情况。你不能复制它们,因为如果它们的价格和目前的一样好,就没有FOK/IOC的限制。

我不是在幻想,我是在告诉你我的订单,这些订单是由EA在真实账户 上下的。

如果你想用你现在的方式来思考,你可以自由地做你想做的事!你可以用你的方式来思考。

 
prostotrader:

我不是在幻想,我是在告诉你我的订单,这些订单是由EA在真实账户 上下的。

如果你想用你现在的方式来思考,你可以自由地做你想做的事!你可以用你的方式来思考。

铁的逻辑

关于交易、自动交易系统和策略测试的论坛

堡垒。关于执行的问题

fxsaber, 2017.02.22 22:50

  1. 将IOC-BuyLimit 10手放在价差内,然后立即做卖出1手。预期反应--以相同的价格进行两笔相反的交易(利润为零,但佣金为双倍)1手,取消了9手。
  2. 我们将FOK-BuyLimit设置为价差内的10手,然后立即卖出1手。预期的反应是卖出1手,并取消10手。

你不会看到这一点。

既然有一个明确的标准来检查限制者是否有FOK/IOC,为什么还要争论?
 
fxsaber:
铁的逻辑
既然有一个明确的标准来检查限制者是否有FOK/IOC,为什么还要争论?

对不起,你可能没有注意到,我写的是我用LIMIT订单来填补IOC。

//+------------------------------------------------------------------+
//| Expert set order function                                        |
//+------------------------------------------------------------------+
void SetOrder(const string aSymbol, uint &order_id, const double price, const double volume, const bool buy_sell)
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  main_order_ticket = 0;
  main_mem_magic = magic_storage + 1;
  main_order_symbol = aSymbol;
//---  
  if(main_mem_magic >= (magic_number + 65530)) main_mem_magic = magic_number;
  
//--- Fill structure
  request.magic = main_mem_magic;
  request.symbol = aSymbol;
  request.volume = volume;
  request.type_filling = ORDER_FILLING_IOC;
  request.type_time = ORDER_TIME_DAY;
    
  if(price == 0)
  {
    request.action = TRADE_ACTION_DEAL;
    request.comment = "Рыночный ордер...";
//---    
    if(buy_sell)
    {
      request.type = ORDER_TYPE_BUY;
    }
    else
    {
      request.type = ORDER_TYPE_SELL;
    }
  }
  else
  {
    request.action = TRADE_ACTION_PENDING;
    request.price = price;
    request.comment = "Лимитный ордер...";
//---    
    if (buy_sell)
    {
      request.type = ORDER_TYPE_BUY_LIMIT;
    }
    else
    {
      request.type = ORDER_TYPE_SELL_LIMIT;
    }  
  }  
//--- Send order
  if(OrderSendAsync(request, result))
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE))
    {
      order_id = result.request_id;
      magic_storage = main_mem_magic;
      main_state = ORD_MAIN_DO_SET;
      main_mem_time = GetMicrosecondCount();
      main_start_time = TimeCurrent();
      SetTransCount();
    }
    else
    {
      order_id = 0;
      main_mem_magic = 0;
      main_order_symbol = "";
      main_state = ORD_NO_STATE;
      main_mem_time = 0;
      main_start_time = 0;
      CheckError(result.retcode, "SetOrder: Ордер не установлен! Причина: ", MAIN_ORDER, main_order_ticket);
    }
  }
  else
  {
    order_id = 0;
    main_mem_magic = 0;
    main_order_symbol = "";
    main_state = ORD_NO_STATE;
    main_mem_time = 0;
    main_start_time = 0;
    CheckError(result.retcode, "SetOrder: Ордер не отправлен! Причина: ", MAIN_ORDER, main_order_ticket);
  }
}

这个代码已经为我工作了3年多。

 
prostotrader:

对不起,你可能没有注意到,我写的是我在使用带有填充IOC的LIMIT订单。

这个代码已经工作了3年多了

这就是我写的原因

关于交易、自动交易系统和策略测试的论坛

堡垒。关于执行的问题

fxsaber, 2017.02.22 22:50

  1. 将IOC-BuyLimit 10手放在价差内,然后立即做卖出1手。预期反应--以相同的价格进行两笔相反的交易(利润为零,但佣金为双倍)1手,取消了9手。
  2. 我们将FOK-BuyLimit设置为价差内的10手,然后立即卖出1手。预期的反应是卖出1手,并取消10手。

你不会看到这一点。而在Request for limit类型中可以设置FOK/IOC-类型的事实,并不意味着它们是这种类型的。

我不关心MT5似乎允许的限价订单的情况。最重要的是到达交易所的内容。因此,如果交易所有一个IOC限价单,它的行为将与第1点相同。你在交易所看不到这一点,所以我们必须谈论FOK/IOC的本质,而不是MT5在Request-queries中允许的东西。至少要让OrderGetInteger成为你的 "IOC "限制。