[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 564

 
Ekburg:

没有,当其中一个仓位被关闭时,改变仓位订单号的问题已经解决了,我已经检查了不止一次,认为那里可能有一个错误,但那里一切都很好,所需的订单被选中,并且正确计算了它的止损,但订单不愿意被修改...

只有当传递给OrderModify( )函数的所有参数与被修改的订单的所有参数相等时,才会产生错误1,而您( 通过票号) 或OrderSelect()函数选择了修改。检查的使用实例。

只有 "来自KimIV的有用功能"。

ModifyOrder()函数https://www.mql5.com/ru/forum/131859

 
rigonich:

只有当传递给OrderModify( )函数的所有参数与您选择的可修改订单(通过票号)或OrderSelect()函数修改的所有参数相等时,才会产生错误1。

1 (ERR_NO_RESULT) - 如果没有任何参数被改变或 没有错误,但结果是未知的,很可能是由于某种原因没有修改订单...
 
abeiks:

是的,我同意,编程不是我的专长,这就是我在这里学习和提问的原因。我试图在你的 算法中加入平仓,但没有成功(所有的买入头寸都在平仓),所以我决定从另一个方面 来解决这个问题,看看 提供给我的现成平仓块上最后两个买入头寸的平仓方案

如果你能告诉我如何关闭最后两个买入头寸,我将非常感激。我 将理解我在哪里犯了错误。

 int Slippage = 3;
int Close_buy_2pos()
{
    int ordercount = 0, OpenOrders = OrdersTotal();
    for (int cnt = OpenOrders - 1; cnt >= 0; cnt--)   // scan all orders and positions. ..
    {
        if (!OrderSelect (cnt, SELECT_BY_POS)) return (ordercount);
        if (OrderSymbol() != Symbol()) continue;
        if (OrderMagicNumber() != magic) continue;
        if (OrderType() != OP_BUY) continue;
        if (OrderClose (OrderTicket(), OrderLots(), Bid, Slippage)) ordercount++;
        else return (ordercount);
        if (ordercount == 2) break;
    } 
    Print ("::::::::::::::::::::::::: ordercount = ", ordercount);    
    return (ordercount);   
}

在一般情况下,它是这样的。如果我们使用 "低能 "变体(这是我使用的),那么我们必须开始一个循环:首先,找到最后一个开放的 BUY位置,然后从票据中删除它,并根据需要多次重复循环。

P.S. 将 "买 "和 "卖 "的功能分开写--这从一开始就是个错误的想法(IMHO)。

而这种情况下的函数看起来不会太复杂。

int Slippage = 3;
int Close_LastPos (string fs_Symbol,
                   int fi_Magic,
                   int fi_Type = -1,   // тип закрываемых позиций
                   int fi_cnt = 1)     // количсетво закрываемых позиций
{
    int ordercount = 0, OpenOrders = OrdersTotal();
    double ld_PriceClose;
    for (int cnt = OpenOrders - 1; cnt >= 0; cnt--)   // scan all orders and positions. ..
    {
        if (!OrderSelect (cnt, SELECT_BY_POS)) return (ordercount);
        if (OrderSymbol() != fs_Symbol) continue;
        if (OrderMagicNumber() != fi_Magic) continue;
        if (OrderType() != fi_Type) if (fi_Type != -1) continue;
        if (OrderType() > 1) continue;
        if (OrderType() == OP_BUY) ld_PriceClose = NormalizeDouble (Bid, Digits);
        else ld_PriceClose = NormalizeDouble (Ask, Digits);
        if (OrderClose (OrderTicket(), OrderLots(), ld_PriceClose, Slippage)) ordercount++;
        else return (ordercount);
        if (ordercount == fi_cnt) break;
    } 
    Print ("::::::::::::::::::::::::: ordercount = ", ordercount);    
    return (ordercount);   
}
 
Ekburg:

1 (ERR_NO_RESULT) - 如果没有任何参数被改变或 没有错误,但结果是未知的,很可能只是因为某些原因没有修改订单...
ERR_NO_RESULT 不是非此即彼,而是没有错误但结果 不明。在什么情况下会返回这个错误,上面已经介绍了。如果函数GetLastError()在函数OrderModify()之后被调用,它肯定 会返回错误代码(即订单未被修改的原因)或0(在修改成功的情况下)。

 
TarasBY:

在一般情况下如此。如果我们使用 "低能 "变体(这是我使用的变体),那么我们必须开始一个循环:首先,找到最后一个开放的BUY位置,然后从票据中删除它,并根据需要多次重复循环。

P.S. 将 "买 "和 "卖 "的功能分开写--这从一开始就是个错误的想法(IMHO)。

而在这种情况下,功能看起来不会太复杂。


谢谢,我会研究的。

 

大家晚上好,请告诉我为什么MetaTrader4(最新)完全不更新?我昨天安装了它,但最后的更新日期显示为11月30日,而且没有任何货币对的动态,当我购买任何货币时,市场是关闭的。(我有一个模拟账户)。你能告诉我如何启用更新,或者我必须做什么来跟踪价格变化吗?

 
Lucifer982:

大家晚上好,请告诉绿色和没有经验的人,为什么MetaTrader4(最新)完全不更新?我昨天安装了它,但最后的更新日期显示为11月30日,而且没有任何货币对的动态,当我购买任何货币时,市场是关闭的。(我有一个模拟账户)。你能告诉我如何启用更新,或者我必须做什么来跟踪价格变化吗?


系统将在几个小时内开始自我更新(取决于你的时区)。DoC在周六、周日有一天休息。 所以他们没有什么可担心的))))。

或者第二种选择:向财政部服务台写信投诉。

 
T1000:


它将在几个小时内自行开启(取决于你的时区)。服务台在周六、周日有一天休息。所以他们没有任何问讯))))。

或者第二种选择:向财政部的服务台写投诉。


我明白了,谢谢你,我会等待的)
 

如何获得某一货币对的未平仓订单总数?

我有一个开放的图表,EA在10个符号上工作。

我决定让图表上的评论显示每个符号的未结订单总数。

我如何做到这一点? 如果OrdersTotal 显示的总金额为

 
gheka:

以何种方式?

例如,像这样