伟大而可怕的MT4永远(或如何制定过渡策略) - 页 26

 
fxsaber:

里面可能没有这样的旗帜。

显然不是。

但我认为MQ很可能会做一个,特别是它将是每个终端的一个标志,即适用于所有程序。

 
Artyom Trishkin:
我可能会提出这个建议。但要晚得多。由于主观情况。不幸的是。同时,请将自己视为一个煽动者。不禁止的。

仍然相关?你的版本的解决方案将是?

 
Igor Makanu:

仍然相关?你的版本的解决方案将是?

你引用了我的帖子,其中说 "更晚"。对我来说,"更晚 "意味着至少不早于一年。不是因为这是找到解决方案所需的时间,而是仅仅因为主观情况,不幸的是。

 
Artyom Trishkin:

至少在一年内不会。

好吧,所以这没有关系。

 
你可能还能想到一些问题,这些问题在条件上很简单,而其解决方案却会造成意想不到的困难。
 
fxsaber:
你可能还能想出一些简单的问题,这些问题的解决会造成意想不到的困难。

脚本监测超额风险:如果头寸和挂单的总和超过两个--报告并退出


简洁的代码。

void OnStart()
{
  while (!IsStopped())
    if ((PositionsTotal() + OrdersTotal() > 2)) // Если (риск превышен) число отложек/позиций больше двух,
    {
      Alert("Risk exceeded!");                  // сообщаем      
      ExpertRemove();                           // и выходим.
    }
}


我们看一下取决于手动操作的脚本行为。在这样做之前(运行脚本之前),让我们标记账户上的头寸数量 PosTotal,订单 -OrdTotal

脚本 位置总数/顺序总数 行动 脚本结果
01 0/0 开设一个职位。 作品。
02 0/0 放置一个待定头寸。 它是有效的。
03 0/1 搁置 一个 搁置 03 0/1 暂停一下。
04 0/1 开设一个职位。 提醒(不一定)。
05 0/1 删除一个待定职位。 作品。
06 1/0 放置 一个待定订单。 作品。
07 1/0 开设一个职位。 提醒(不一定)
08 1/0 关闭位置。 工作。
09 1/1 删除一个待定职位。 工作。
10 1/1 关闭一个位置。 警报。
11 0/2 删除一个待定职位。 工作。
12 2/0 关闭一个位置。 警报。


似乎是一项非常简单的任务,但警报。什么是解决方案的变体?


可能,我们应该在这样的简单任务上努力理解MT5。

 
fxsaber:

脚本监测超额风险:如果头寸和挂单的总和超过两个--报告并退出


简洁的代码。


我们看一下脚本的行为取决于手动操作。在这样做之前(运行脚本之前),让我们标记账户上的头寸数量 PosTotal,订单 -OrdTotal

脚本 位置总数/顺序总数 行动 脚本结果
01 0/0 开设一个职位。 作品。
02 0/0 放置一个待定头寸。 它是有效的。
03 0/1 搁置 一个 搁置 03 0/1 暂停一下。
04 0/1 开设一个职位。 提醒(不一定)。
05 0/1 删除一个待定职位。 作品。
06 1/0 放置 一个待定订单。 作品。
07 1/0 开设一个职位。 提醒(不一定)
08 1/0 关闭位置。 工作。
09 1/1 删除一个待定职位。 工作。
10 1/1 关闭一个位置。 警报。
11 0/2 删除一个待定职位。 工作。
12 2/0 关闭一个位置。 警报。


似乎是一项非常简单的任务,但警报。什么是解决方案的变体?


可能,我们应该在这样的简单任务上努力理解MT5。

MQ5与此有什么关系?退出循环的条件:IsStopped和不超过两个订单。然后脚本就会工作,如果条件不工作,脚本也会工作。

 
Алексей Тарабанов:

这与MQ5有什么关系?退出循环的条件:IsStopped和不超过两个订单。然后脚本就会工作,如果条件不工作,脚本也会工作。

代码甚至包含评论。

 
fxsaber:

脚本监测风险:如果头寸和挂单的总数超过两个,就报告并退出

一个简明的代码。


似乎是一项非常简单的任务,但警报。什么是解决方案的变体?


可能这就是我们应该用来培养我们对MT5理解的简单任务类型。

我想我需要做这样的事情。

void OnStart()
{
   while (!IsStopped())
   {
      //--- посчитаем ордера
      int orders = 0;
      for(int i = 0; i < OrdersTotal(); i++)
         if(OrderGetTicket(i) > 0 && OrderGetInteger(ORDER_TYPE) < ORDER_TYPE_CLOSE_BY) orders++;
      
      if(orders + PositionsTotal() > 2) break;     // выходим
   }
   if(!_StopFlag) Alert("Risk exceeded!");         // сообщаем
}
 
Igor Makanu:

可能需要做这样的事情。

当然,你必须对订单进行过滤。这不是一件容易的事。

ZS 这是论坛上一个有趣的情况。积极回答问题。这 里显然是不同的。
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2016.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...