//+------------------------------------------------------------------+ //| Get the property value "ORDER_TYPE_FILLING" | //+------------------------------------------------------------------+ ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const { return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING)); }
该帮助指出。
在 "按市场 "和 "交易所 "的执行模式中,所有订单类型 都 允许使用 "返回 "的填充策略。使用SYMBOL_FILLING_FOK和SYMBOL_FILLING_IOC属性检查是否允许其他类型。
但并不总是如此。所以在机器人账户上 "返回 "不起作用,在专业账户和ECN账户上都不起作用。
该帮助指出。
在 "按市场 "和 "交易所 "的执行模式中,所有订单类型 都 允许使用 "返回 "的填充策略。使用SYMBOL_FILLING_FOK和SYMBOL_FILLING_IOC属性检查是否允许其他类型。
但并不总是如此。因此,在机器人账户上,"回报 "不起作用,在专业账户和ECN账户上也是如此。
关于交易、自动交易系统和测试交易策略的论坛
虫子,虫子,问题
fxsaber, 2016.10.20 08:24
所有交易服务器上的SB//| Get the property value "ORDER_TYPE_FILLING" |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
{
return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
}
ALWAYS在测试者返回ENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN。
这就是为什么如果您在OrderModify中通过COrderInfo::TypeFilling()设置填充,那么在同一个RoboForexEU-MetaTrader 5中会出现一个逻辑错误[Unsupported filling mode]。然而,这个错误在MetaQuotes-Demo中并没有发生--开发商的服务器配置错误?
该帮助指出。
在 "按市场 "和 "交易所 "的执行模式中,所有订单类型 都 允许使用 "返回 "的填充策略。使用SYMBOL_FILLING_FOK和SYMBOL_FILLING_IOC属性检查是否允许其他类型。
但并不总是如此。例如,"回报 "在机器人账户上不起作用,在专业账户和ECN账户上都不起作用。
我怀疑 "返回 "设置是所有贸易服务器的默认设置(至少FxPro这样回答。
关于交易、自动交易系统和交易策略测试的论坛
服务器上的填充模式
Karputov Vladimir, 2016.10.14 19:18
填充模式 "返回"。
返回
没有身份证
这种模式用于市场(买入和卖出)、限价和止损订单,并且只在 "市场执行 "和 "交易所执行 "模式下使用。在部分执行的情况下,有剩余交易量的市价单或限价单不会被删除,而是仍然有效。
以下是经纪公司关于"返回 "模式 的答复
我们的MT5专家已经与Metaquotes确认,默认情况下使用回报,当你在填充时不选择任何东西时,它就会应用。
)
换句话说--它是某种存根。有一种怀疑,"返回 "填充设置是所有交易服务器的默认值(至少,FxPro是这样回答的)。
换句话说--它是某种存根。在一些公司(特别是最近推出的MT5),有必要清楚地指定填充物的类型 - 如果你不指定,将出现错误。
虽然,在Robo中,服务器对 "返回 "的检查返回为真,但事实上,这种类型的填充并不工作。简而言之,这些填充物完全是个烂摊子。
{
public:
virtual int f()
{
Print(__FUNCSIG__);
return(0);
}
};
class B : public A
{
public:
virtual int f()
{
Print(__FUNCSIG__);
return(0);
}
};
void OnStart()
{
// A* b = new B;
B* b = new B;
((A*)b).f();
delete b;
}
我的理解是否正确,如果子代中的虚拟被覆盖,那么基代虚拟就永远无法到达?也就是说,没有办法从b中调用A::f。
几乎。在C++中,允许有以下条目。
b.A::f();
但你不能在这里这样做。因此,只能完全靠拐杖。
{
public:
virtual int f()
{
Print(__FUNCSIG__);
return(0);
}
int f1()
{
return A::f();
}
};
几乎。在C++中,允许有以下条目。
b.A::f();
那我就不明白为什么它在C++中可以工作。毕竟,在虚拟方法表中,一个被重写的虚拟应该是完全重写的。而且不应该有基地的痕迹。
但在这里不可能这样做。这就是为什么它只能靠拐杖。
{
public:
virtual int f()
{
Print(__FUNCSIG__);
return(0);
}
int f1()
{
return A::f();
}
};
毕竟,虚拟方法表中的overridden virtual应该是完全重写的。而且不应该有任何基础方法的痕迹。
如果明确指定了类型,则直接调用该方法,而不使用虚拟函数 表。
这样一来,即使是一个纯虚函数,如果它有一个主体,也可以被调用。
Then A* b = new B; will not work.
在这种情况下,你需要另一个拐杖--将基类中的函数内部转移到一个非虚拟的方法中,并在虚拟的方法中调用它。然后我们可以明确地从基类和继承者那里调用非虚拟方法。
如果明确指定了类型,则直接调用该方法,而不使用虚拟函数 表。
即使是一个纯粹的虚拟函数,如果它有一个主体,也可以用这种方式调用。
在这种情况下,我们需要另一个拐杖,那就是把函数的内部结构移到基类中的一个非虚拟方法中,然后在虚拟方法中调用它。然后,你可以明确地从基体和子体中调用非虚拟方法。