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

 
fxsaber:

打印OrderCheck的结果和它的完整结构。对OrderSend也要这样做。

在十个不同的交易服务器上设置模拟账户。并在那里尝试你的代码。大多数情况下,交易服务器的一些特殊功能没有被考虑到,这在市场中检查时被重现。

不要忘记输出LastError。所有这些加在一起,将使你能够非常迅速地找出错误的原因。


谢谢,我会试一试的。
 
Andrii Djola:

帮助我了解情况,我在策略测试器中有一个EA,在模拟账户上 一切顺利,没有错误和问题,也没有问题,但当我在市场中加载EA时,自动测试器写道。

这个问题已经得到了广泛的研究。仔细阅读这篇文章,它被称为类似 "EA应该通过哪些测试......"。

那里都有描述。

 

我请求帮助解决这个问题。当在Moex的市场上开立一个成交量大于1的订单时,会出现一个奇怪的现象:订单在市场上被交易,关于交易的信息部分到来,由于这个原因,OnTrade()被提前调用--我如何检查我是否要等到关于交易订单的所有信息到来?

 
Vladimir Karputov:
关于OnTradeTransaction函数的问题,例如如何捕捉头寸的关闭。



谢谢,原来我的做法是正确的,而打印的内容是错误的。周一比周五更明智,或类似的说法)

如何将最近的ORDER_TYPE_BUY_LIMIT的价格换成ORDER_PRICE_CURRENT?


 
lil_lil:

谢谢,原来我的做法是正确的,而打印的内容是错误的。周一比周五更明智,或类似的说法)

如何知道在所有设定的ORDER_TYPE_BUY_LIMIT中,与ORDER_PRICE_CURRENT最近的价格?



绕过整个挂单列表,按当前符号选择挂单,按magik(可选),只选择所需类型的挂单。

订单_类型_购买_限制

订单_类型_销售_限制

//+------------------------------------------------------------------+
//|                                             Find the nearest.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//---
#include <Trade\OrderInfo.mqh>
COrderInfo     m_order;                      // pending orders object
#property script_show_inputs
//--- input parameters
input ENUM_ORDER_TYPE   order_type=ORDER_TYPE_BUY_LIMIT;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ulong order_ticket=ULONG_MAX;
   double order_distance=DBL_MAX;

   for(int i=OrdersTotal()-1;i>=0;i--) // returns the number of current orders
      if(m_order.SelectByIndex(i)) // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==Symbol()/* && m_order.Magic()==m_magic*/)
            if(m_order.OrderType()==order_type)
              {
               double distance=MathAbs(m_order.PriceCurrent()-m_order.PriceOpen());
               if(distance<order_distance)
                 {
                  order_distance=distance;
                  order_ticket=m_order.Ticket();
                 }
              }
   if(order_ticket!=ULONG_MAX && order_distance!=DBL_MAX)
      Comment("Order ",EnumToString(order_type),
              ", ticket ",IntegerToString(order_ticket),
              ", distance ",DoubleToString(order_distance,Digits()));
  }
//+------------------------------------------------------------------+
附加的文件:
 
Vladimir Karputov:

绕过整个挂单列表,按当前符号选择挂单,按magik(可选),只选择所需类型的挂单。


谢谢,跑到锁匠那里,点击了广告 )。

 
与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。
 

我不能解决一个简单的问题。

在EA中,当获得指标手柄时...

int OnInit()
  {
//--- Получить хэндл индикатора Envelopes_upper для отрисовки верхней линии
   EnvHandle_upper=iEnvelopes(NULL,0,Period_upper,0,MODE_SMA,PRICE_MEDIAN,Deviation_upper);

....terminal画出了两行,但我只需要最上面一行。

如何禁止画这条线?即把它的颜色改为CLR_NONE,或把线条风格改为DRAW_DONE?

 
你能告诉我如何从你的手机订阅信号 吗?网站上没有 "订阅 "按钮,我都看了一遍...而在MT5中,根本就没有关于信号(
 
VSPro:
请告知我如何能从我的手机上订阅到信号?我的设备在我的网站上没有 "订阅 "按钮......我试着把它全部打开。在MT5中,根本就没有关于信号(

你不能。你必须从一台Windows台式电脑上订阅,MetaTrader 5必须安装在这台电脑上。