初学者的问题 MQL5 MT5 MetaTrader 5 - 页 938

 
Konstantin Nikitin:

因此,从类中拉出所需的功能,并把它写给自己。

谢谢你。我的问题要简单得多--我通过OrderSend(request,result)打开了一个订单,并想立即对其参数进行操作--例如,将其打印出来。像这样。
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(OrderSend(request,result))
                
        Print ("retcode = " + retcode + "; ");        
        Print ("deal = " + deal + "; ");
        Print ("order = " + order + "; "); 
        Print ("volume = " + volume + "; ");  
        Print ("price = " + price + "; ")
一些参数,如retcode、order和volume被打印出来,但deal和price却没有。
特别是价格是人们感兴趣的。所有结果都在MqlTradeResult 中。我以同样的方式打印它们,但其中一些被打印出来,而另一些却没有。 问题是--为什么某些参数被打印出来,而另一些却没有呢?
 

我如何合并数组?

string eData[][50][3];
string bData[][20][5];
 ArrayCopy(eData,bData,ArraySize(eData)); // error: incompatible 3 arrays ranges for ArrayCopy function (50 and 20)

我理解ArrayCopy 只复制一维数组?

 
Vitaly Muzichenko:

我如何合并数组?

我理解ArrayCopy 只复制一维数组?

不,ArrayCopy 复制任何在mql5\4中允许的数组。但它们应该是相同的,才能被复制。第一个数组的第二维有50个,而第二个数组只有20个。对第三维度来说也是如此。
 
Algotrader18:
谢谢你。我的问题要简单得多--我通过OrderSend(request,result)打开了一个订单,并想立即对其参数进行操作--例如,将其打印出来。像这样:一些参数如retcode、order和volume被打印出来,但deal和price却没有。
特别是价格是人们感兴趣的。所有的结果都可以在MqlTradeResult 中找到。我平等地打印它们,但其中一些被打印出来,而另一些却没有。 问题是--为什么某些参数被打印出来,而另一些却没有呢?
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(!OrderSend(request,result))
          return;
                
        Print ("retcode = " + result. retcode + "; ");        
        Print ("deal = " + result. deal + "; ");
        Print ("order = " + result. order + "; "); 
        Print ("volume = " + result. volume + "; ");  
        Print ("price = " + result. price + "; ");
 
Konstantin Nikitin:

这就是最初的情况

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

初学者的问题 MQL5 MT5 MetaTrader 5

Algotrader18, 2018.10.25 07:39

下午好!

我开了一个头寸,想打印MqlTradeResult 的内容,像这样。


   //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
 //============================================================     
        if(OrderSend(request,result))       
        Print ("result.retcode = " + result.retcode + "; ");        
        Print ("deal = " + result.deal + "; ");
        Print ("order = " + result.order + "; "); 
        Print ("volume = " + result.volume + "; ");  
        Print ("price = " + result.price + "; ");

result.retcode,订单和数量被打印出来,但交易和价格总是零。
请你告诉我,我做错了什么?

为什么在以下代码中迷失了方向....问题...

我认为回报是不可接受的。它将被打印在下一个刻度上。

 
Alexey Viktorov:
而我认为这种回报是不可接受的。毕竟,它将在下一次打勾时被打印出来。

学会发送订单

返回的值

如果基本结构检查(指针检查)成功,则返回true - 这并不表示交易操作的成功执行为了获得对函数结果的更详细描述,我们应该分析 结果结构的字段

如果基本检查通过,我们才会打印。所有这些都在一个勾上。这就是为什么我写道
        if(!OrderSend(request,result))
          return;
 
Konstantin Nikitin:

探索订单发送

如果它通过了基本的检查,才把它打印出来。所有这些都是在同一时间进行的。这就是我写这篇文章的原因。
啊哈,我没有看到这一条。对不起...
 
Alexey Viktorov:

原本是这样的。

为什么它在下一个代码中丢失了...问题...

但在我看来,这个人是不可接受的。它将被打印在下一个刻度上。

我尝试了各种不同的变体,包括这个。

        ulong  deal;
        ulong  order;
        double volume;
        double price;    
          
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(OrderSend(request,result))

        retcode = result.retcode;
        deal = result.deal;
        order = result.order;
        volume = result.volume;
        price = result.price;
       
      
        Print ("retcode = " + retcode + "; ");        
        Print ("deal = " + deal + "; ");
        Print ("order = " + order + "; "); 
        Print ("volume = " + volume + "; ");  
        Print ("price = " + price + "; ");

我没有错误地将所有内容复制到问题中...

 
Algotrader18:

我已经尝试了不同的选择,包括这个。

并错误地复制到该问题中...

尝试搜索一下,fxsaber曾经处理过这个问题。我不知道他做了什么,我不感兴趣。对我来说,在OnTradeTransaction 中获得所有这些参数会更容易一些
 
Rustam Esedulaev:
大家好!
在mql 4中,有这样一个验证,即IsTradeContedtBusy
mql 5中是否有类似的东西?
谢谢你!

没有类似的东西。MT5是多线程的。