程序库: MT4Orders - 页 58

 
Igor Makanu:

测试了 MT4Orders 与使用纯 MQL5(不使用 SB )的关系https://www.mql5.com/ru/forum/357253/page4#comment_19593443

毫无疑问,MT4Orders 中的任何功能都不会 降低速度,并且运行得非常好

独立于 MT4Orders 的快照并不是在平等的基础上编写的。但这是真实的。在 Tester 中很难创建刹车。

 

这个库太棒了在 MT5 中运行 MT4 代码如此简单。非常感谢

我有一个问题,当交易关闭时,OrderTicket()函数 不会返回正确的数字。这对跟踪已关闭的交易是个大问题。

例如,4584849 号交易平仓后会变成 38484939 号。

提前感谢您的帮助

这是我在脚本中的代码:

#include <MT4Orders1.mqh>
void OnStart()
  {
int n=OrdersTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
  Print("History");
  n=OrdersHistoryTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
}
 
这不是问题。MT5 中的平仓头寸有多个票据。它们都可以通过 SELECT_BY_TICKET 运行。
也许您需要 OrderTicketID()。
 
如何关闭所有冲刺和额外计算(如果有的话)?我在定义中找不到
 
Maxim Dmitrievsky:
如何关闭所有冲刺和额外计算(如果有的话)?我在定义中找不到

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

库: MT4Orders

fxsaber, 2019.04.29 15:19

如果您需要在您的产品中使用 MT4Orders,您可以剪切库源的相关部分,或者放置一个通用存根
// 通过宏,我们切断了任何有关 MT4Orders 存在的提示。
#define Alert PrintTmp
#define Print PrintTmp
  void PrintTmp( string ) {}
  
  #include <MT4Orders.mqh> // https://www.mql5.com/zh/code/16006
#undef  Print
#undef  Alert
 
fxsaber:

谢谢

 
MT4 和 MT5 的细微差别。
#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // 打开并选择了一个订单
    OrderPrint();                                                                                     // 打印出她的数据
    
  OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0) // 已打开订单,但未选择。
  OrderPrint();                                                   // MT4 将返回与之前相同的结果,MT5 则不一定。
}


MT5 的结果。

        #827589598 2021.01.13 01:21:17.832 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0
        #827589601 2021.01.13 01:21:17.895 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0 // 在 MT4 中,字符串与前一个字符串相同。


交易操作(在终端中,而不是在测试器中),OrderLots()、OrderTicket() 和其他值可能会发生变化。从 MT4 转换过来的用户请注意这一点。

 
fxsaber:

进行交易操作(在终端,而不是在 Tester),可以更改 OrderLots()、OrderTicket() 和其他值。从 MT4 转换过来的用户请注意这一点。

同样,在 OrdersTotal.

#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // 打开并选择了一个订单
    OrderPrint();                                                                                     // 打印出她的数据
    
  Sleep(10000); // 暂停。
  
  OrdersTotal();
  OrderPrint(); // MT4 将返回与之前相同的结果,MT5 则不一定。
}


结果。

        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22112 0.00 0.00 0.00 0
        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22111 0.00 0.00 0.00 0
 
亲爱的 fxsaber,这可能是个香蕉问题,但我不得不问。Bibla 运行得很好,但在测试器中出现了一个问题。一开始,Expert Advisor 在不发出刻度线的情况下非常猛烈地敲击某个东西,也就是说,一旦出现第一个刻度线,某个非常猛烈的东西就开始在那里敲击,几分钟后测试才开始运行。现在,在 MT5 中,我把猫头鹰放在图表上,他也吃了第一个刻度线,一个核心满载挂起,princhu 刻度线出现在日志中,周期大约为 2.5 分钟)。而最主要的是不清楚他要强奸终端多久,以及他是否会完成所有工作)。索夫通常在第四个工作,第五个原则上是不能用的。好吧,我禁用了冲刺,但它只清除了日志,但性能如何呢?是的,我同时使用历史总计和顺序选择,否则使用该库有什么意义。也就是说,你不能使用 postic 机器人,再加上这个东西会破坏 OnTick,因此所有接口都会被挂起,因为 MQL5 的OnChartEvent 被挂在 OnTick 上,不知道为什么。是否有办法关闭模拟终端的功能,还是原则上不提供?我很想在我的产品中使用您的库,但我还不知道如何使用。
 
不要对我的语气不以为然,我总是....。