任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 100

 
alexey1979621:
大家好!问题就在这里。如何测量第一根、第二根、第三根蜡烛的高点和低点之间的距离,并规定每个蜡烛的这一距离不应小于,例如10点。预先感谢你。

以下是市场环境变量,以帮助你https://docs.mql4.com/ru/predefined/variables
 
artmedia70:
机器人起义...:)


Aha ha ha.yosuf, Cyborg让你来的...)))))))
 
artmedia70:

这里有一个测试该功能的EA。它包含函数本身和它的调用。在调用它之前,你必须准备一条信息,最多四行。如果我没记错的话,每一行的长度不应超过64个字符。这就是为什么我把一条信息分成几行。一条信息的每一行都可以用不同的颜色输出。这在代码中已经很清楚了--首先我们准备好信息行,然后我们调用函数。我没有在那里发表什么评论--我很久以前就一口气写完了。现在我已经忘记了那里是干什么的。如果我有任何问题,我会记得,但我现在只记得必要的事情。

还有一只火鸡。

这就是事实...我希望你能掌握其中的诀窍。

当然,我可以做一个底层,而不是把它输出到指标窗口的主图上,但我太懒了......:)



Artem,我看了你的代码,火鸡是个炸弹:))))。实质上,一切都很清楚的多,虽然我在执行中看到了几个点,与我要做的有点不同,但这只是一件小事。

有趣的事情是这样的。只有专家中的内容才会被印在火鸡上。但你如何利用它来发挥你的优势?

 
hoz:


Artem,我看了你的代码,火鸡是个炸弹:))))。实质上,一切都很清楚,有了更多的东西,虽然我在实施中看到了几个点,与我要做的有点不同,但这只是小事。

以下是有趣的地方。只有专家顾问中的内容才会印在转盘上。但我如何利用它来发挥我的优势?

我不明白这个问题。它取代了Print()函数。将所有信息输出到指示器窗口。你可以为一条信息的每一行设置颜色(如信息的优先级)。比印刷品更方便。这就是所有的用处。
 

它是一个函数。那位专家只是为了显示该函数的作用。因此,使用该功能来显示 EA的信息。

那位专家只展示了如何使用它。

 
artmedia70:

它是一个函数。那位专家只是为了显示该函数的作用。因此,使用该功能来显示 EA的信息。

那位专家只展示了如何使用它。


虽然是...这是一个功能...我在摸索的过程中错过了最重要的事情:(
 

有一个新的头痛问题。以下是实现这一目标所需的条件。

1.市场上有许多订单,即市场上一直有市场订单和挂单。

2.在某一时刻,当迄今为止开出的最后一个订单被TP关闭时,我们需要关闭所有已开出的订单,并删除所有待定的订单。

我是这样做的(我把它放在start() 函数中)。

for (int ord=OrdersTotal()-1; ord>=0; ord--)
   {
      if (!OrderSelect(ord,SELECT_BY_POS)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
        
      g_ticket = OrderTicket();
      g_type = OrderType();
              
      // Блок модификации ордеров       
      if (i_sl != 0 || i_tp != 0)
      {
         if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
         {
            OrdersModifyer(g_ticket);
         }
      }
      // Закрытие всех ордеров, если последний ордер закрыт
      if (GetLastOrderState() != 0)              
      {
          if (g_type > 1)
          {
              DeletePendingOrders(g_ticket);
          }
          else
          {
              CloseMarketOrders(g_ticket);
          }
      }
   }

函数GetLastOrderState() 检查最后一个订单是否被关闭。

//+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
datetime GetLastOrderState()
{
   datetime lastOrderCloseTime = -1,                   // Время закрытия последнего ордера
            lastOrderOpenTime = -1;                    // Время открытия последнего ордера
   
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
  
      if (lastOrderOpenTime < OrderOpenTime())
          lastOrderOpenTime = OrderOpenTime();
   }
   Comment("Время открытия последнего открытого ордера = ", lastOrderOpenTime);
   for (int h=OrdersHistoryTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(h, SELECT_BY_POS, MODE_HISTORY)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      
      if (OrderOpenPrice() == lastOrderOpenTime)
          lastOrderCloseTime = OrderCloseTime();
   }
  // Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
   return (lastOrderCloseTime);
}

再有就是删除挂单和平仓的市场订单的功能。我看到它在某种程度上没有正常工作。我的功能可以吗?

我理解,职能部门是按理念来排序的。但这里的逻辑并不好。你对这个问题有什么想法吗?事实证明,在任何情况下,即使没有一个EA的订单被TP关闭,所有的订单在被信号打开后,一眨眼就被关闭了。

 
hoz:

Aha ha ha.yosuf, Cyborg让你来的...)))))))
仍然是一个好的、反应迅速的亲属。仿佛所有的问题都是他的,因为命运会报答,无可置疑,或者,遇到圣杯
 
yosuf:
仍然是一个好的、有同情心的亲戚。仿佛所有的问题都是他的,因为这个命运会奖励,毫无疑问,或者,遇到圣杯。


但没有具体内容,因此也没有问题。我不知道该怎么回答....你必须尽量清楚地解释情况,以获得答案。
 
hoz:

有一个新的头痛问题。以下是实现这一目标所需的条件。

1.市场上有许多订单,即市场上一直有市场订单和挂单。

2.在某一时刻,当迄今为止开出的最后一个订单被TP关闭时,我们需要关闭所有已开出的订单,并删除所有待定的订单。

我是这样做的(我把它放在函数start() 中)。

函数GetLastOrderState() 检查最后一个订单是否被关闭。

再有就是删除挂单和平仓的市场订单的功能。我看到它在某种程度上没有正常工作。我的功能可以吗?

我理解,职能部门是按理念来排序的。但这里的逻辑是不行的。你对这个问题有什么想法吗?事实证明,在任何情况下,即使EA的订单没有一个在TP点平仓,但在被信号打开后,所有的订单都会在瞬间平仓...。

维克多,采取久经考验的金的功能,检查一个位置是否被TP关闭。

isCloseLastPosByTake - 返回一个关闭最后一个位置的标志。 只查找有用的功能
然后关闭一切。