新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1723

 
Artyom Trishkin #:
还有,把一个数组放在一起并按正确的标准排序是多么容易。但在100500页中,我们一直在拄着拐杖跟在后面。
请给我看一个代码中的例子。我不知道如何在数组中堆叠,然后也进行排序。
 
Alexey Viktorov #:
毕竟,检查比等待别人的回答更容易、更快捷......。

我的mql技术太小了)我可以试试,但要花很多时间)所以与其花很多时间却发现做不到,还不如去了解一下是否可行)
,当我有更多的空闲时间时,肯定会更容易尝试,但现在我更想问问更有经验的人是否可以做到。

 
Scarick #:

我的mql技能太小了)我当然可以尝试,但会花去我很多时间)所以,与其花很多时间却发现做不到,不如事先了解一下是否可以做,
,当我有更多的空闲时间时,当然会更容易尝试,但现在我宁愿问更有经验的人是否可以做。

如果你的技能不是太好,但你的逻辑思维是可行的,那么从这个问题上可以理解什么?

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

初学者对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论

Scarick, 2021.11.06 17:01

换句话说,如果我在一个指标中签署了5个符号,我可以 通过一个OnBookEvent()来处理所有5个符号?唯一重要的是,通过哪个角色的变化来过滤?

那么最可靠的事情就是检查,而不是等待别人的肯定答复。这就是为什么我这样回答。
 
MakarFX #:
请给我看一个代码中的例子。我不知道如何在数组中堆叠,然后也进行排序。

看这里http://www.mql5.com/ru/articles/1404,那里没有排序,但在一个数组中堆叠。

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX #:
请给我看一个代码中的例子。我不知道如何堆积成一个数组,然后还能进行排序。

bool BubleSort(struct &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i-)
for(int j = i-1;j>=0;j-) {

如果(Compare(arr[i],arr[j])<0 ) Swap(arr[i],arr[j])。

}

}

去你的--去学校吧......这种微观算法是闭着眼睛凭记忆写出来的。

认真地说:参加一个算法课程或其他什么...

 
Alexey Viktorov #:

在你的情况下,如果技能不是很好,但逻辑思维很有效,从这个问题可以推断出

那么最可靠的事情就是检查,而不是等待别人的肯定答复。这就是为什么我这样回答。
是的,已经想出了如何用较少的工作来尝试。但你不能通过测试器来检查它。我必须等待工作天。但你可以直接回答)我不是要你为我写代码,我只是问了一个问题。
 

Maxim Kuznetsov #:

去你妈的--去上学吧......这样的微观算法是靠记忆和醉酒后闭着一只眼睛写的。

认真地说,参加一个算法课程或其他什么。

有趣的说话方式......你不应该费心的

 
MakarFX #:

有趣的说话方式......你不应该费心的

正常方式--给你一个排序算法。好了,正常的气泡排序。没有人吃力。

而正常的信息其实是--阅读有关算法的内容

已经阅读了文献。

 

各位程序员,你们好!!!!!

我将再次尝试提出我的问题,但我把它重新表述了一下。

在一个网格EA中,我们需要找到倒数第二个订单的票。从最大订单的票面上看,-1的解决方案在策略测试器中不起作用,也许,但在模拟或真实账户上不起作用,所以我附上一张图片,就会明白原因了。

我已经写好了确定倒数第二张订单票的函数的代码。这个逻辑如下:如果我们翻阅网格中所有未平仓的订单,我们将找到紧随其后的最大订单,它将是必要的订单票。

然而,我的编程水平还不够高,代码中存在一些错误。这个函数的结果是最小票数。这两个函数是最大票和倒数第二票。最大票数功能的工作没有问题。

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }
//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

请告知错误是什么。谢谢你。

 
Scarick #:
是的,我已经想出了如何以较少的努力来尝试。但我不能用测试器来验证它。我必须等待工作天。但你可以直接回答)我没有要求你为我写代码,我只是问了一个问题。

你去吧......我不是有意冒犯你。一个积极的答案会有什么不同?毕竟,你只能在工作时间写和检查。

原因: