tickSize = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);
ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
bid = SymbolInfoDouble(symbol, SYMBOL_BID);
spread = ask - bid; // Заметьте - спред получаем не через MarketInfo, и не через SymbolInfoInteger
digits = (int) SymbolInfoInteger(symbol, SYMBOL_DIGITS);
point = SymbolInfoDouble(symbol, SYMBOL_POINT);
stopLevel = MarketInfo(symbol, MODE_STOPLEVEL) * point; // До сих пор встречаются случаи, когда SymbolInfoInteger и MarketInfo выдают разные значения. MarketInfo пока ближе к истинеif (stopLevel == 0)
{
if (!isECN) // isECN - признак ECN-счета, на котором Stop Level действительно равен 0
topLevel = NormalizeDouble(2 * spread, digits);
}
else
stopLevel = NormalizeDouble(stopLevel + tickSize, digits); // Сознательное увеличение размера Stop Level на один тик, чтобы постоянно не натыкаться на ошибку 130.
当我没有使用规范化的时候,我也有这个错误。我已经写过这篇文章了。
看一下仪器的属性,也许那里的停止水平是零,然后尝试归一化。
是的,如果经纪人是A*****i,那么它的止损水平往往是零。但与此同时,支持团队写道,我们需要使用2个点差来获得正确的止损水平。因此,涵盖最多数量的 "停止水平 "案例的代码如下。
看一下工具的属性,也许停止水平是零,然后尝试正常化。
当我没有使用规范化的时候,我也有这个错误。我已经写过这篇文章了。
是的,如果经纪人是A*****i,那么它的止损水平往往是零。但与此同时,支持团队写道,我们需要使用2个点差来获得正确的止损水平。因此,涵盖大多数情况下的停止水平的代码如下。
离开这个厨房...
所以大概或肯定
今天贸易中的一篇文章...所有订单按照完全相同的算法开仓,即条件总是相等的。尽管如此,错误还是以令人羡慕的频率发生。在任何地方我们都可以看到,止损点总是大于止损水平,而且订单总是放在距离当前价格>止损水平的地方。
而在另一个经纪人的模拟账户上,在这段时间内没有出现过任何错误...