程序库: MT4Orders - 页 28

 
Ilya Malev:

为什么要看这个主题,我已经想明白了。

我在几个 EA 中都能完美运行,程序库没有任何问题

 
fxsaber:

有很多情况都是如此。每个网格订单都会产生几十个仓位,而每个仓位,通过相同的 TP 平仓,也会产生几十个平仓仓位

1) 供您参考的是,MT4 中的部分仓位也不是这样生成的(至少在普通经纪商中是这样),而只是带有 "from#"和 "to#"注释。还有其他说法吗?

2)事实上,是您的库在这个特殊时刻失灵了,因为正如我已经说过的,库不是为理想世界编写的,而是为我们这个罪恶、不完美和悲惨的世界编写的。尽管我完全理解你的立场,而且我自己可能也不会写这样的代码。如果我写了,我也不会在这个问题上与你争论,而是会默默地重做。但问题是,这段代码不是我写的:)好吧,谢谢你的对话,我去想一想

 
Ilya Malev:

1) 供您参考的是,MT4 中的部分头寸也不是这样生成的(至少在普通经纪商中是这样),而只是带有 "from#"和 "to#"注释。您还有其他论据吗?

任何将实战交易历史作为决策依据的系统都是错误的。虚拟交易历史是个例外,因为那里的执行是完美的。但那是另一回事了。

2) 事实上,是你的图书馆在这个特殊时刻经不起 "战斗使用",因为正如我已经说过的,图书馆不是为理想世界编写的,而是为我们这个罪恶、不完美和悲惨的世界编写的。尽管我完全理解你的立场,而且我自己可能也不会写这样的代码。如果我写了,我也不会在这个问题上与你争论,而是会默默地重新做一遍。但问题是,这段代码不是我写的:)好的,感谢您的对话,我会继续思考的

不允许 MT4 代码编写者接近 MT5,尤其是库。我很高兴您不是其中一员。

事实上,错误的 MT4-advisor 可能无法被库消化。写得好的 MT4-advisor--没问题。


ZY 您只需学会不要为了 "方便 "而添加 SELECT_BY_TICKET。

 

我遇到过在不使用 SelectByTicket 的情况下更改机票的问题。我是这样解决的

                #ifdef __MQL5__
                        long ticket = OrderTicketOpen();
                        ticket = HistoryDealGetInteger( ticket, DEAL_ORDER );
                #endif 
 
Andrey Khatimlianskii:

我遇到过在不使用 SelectByTicket 的情况下更改机票的问题。我是这样解决的

请说明。

 
fxsaber:

请澄清一下。

我们当时在决策过程中讨论过这个问题。

订单上有一些信息。在设置新订单时,有必要分析历史上所有订单的这些数据。

 
Andrey Khatimlianskii:

在决策过程中,我们讨论过这个问题。

订单上有一些信息。在建立新订单时,有必要分析历史上所有订单的这些数据。

明白了。我们需要了解仓位是如何被浪费掉的。

 

OrderSend 返回ERR_TRADE_SEND_FAILED,而不是TRADE_RETCODE_INVALID_PRICE

2018.12.14 01:00:18.479 2016.02.11 15:40:40   failed buy stop 0.08 EURUSD.m at 1.13196 [Invalid price]
2018.12.14 01:00:18.479 2016.02.11 15:40:40   Alert: #4756,  Не удалось отправить торговый запрос: CommonExpert.mqh|2438 | OrderSend buy stop 0.08 @1.13196

通常在我的编程错误中,ERR_TRADE_SEND_FAILED 表示传递无效(已关闭或为空)票据。这样我就无法通过编程来区分。

 
Edgar:

OrderSend 返回ERR_TRADE_SEND_FAILED,而不是 TRADE_RETCODE_INVALID_PRICE:

通常在我的编程错误中,ERR_TRADE_SEND_FAILED 表示传递无效(已关闭或无效)票据。这样我就无法通过编程来区分了。

#include <MT4Orders.mqh>

#define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID)

void OnStart()
{
  if (OrderSend(_Symbol, OP_SELLLIMIT, 1, Bid - 100 * _Point, 0, 0, 0) < 0)
  {
    Print(GetLastError());                     // err_trade_send_failed
    Print(MT4ORDERS::LastTradeResult.retcode); // trade_retcode_invalid_price
  }
}


完整的脚本执行日志

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 1.13473
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_SELL_LIMIT (3)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = 
Request.position = 0
Request.position_by = 0
Result.retcode = 10015
Result.deal = 0
Result.order = 0
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Invalid price 0.082 ms
Result.request_id = 0
Result.retcode_external = 0

4756
10015
 
谢谢