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

 
trader781:

重写了844号帖子,以避免在这里再写代码

至于零大小的数组--0可以是一个整数,可以相当于一个布尔赝品,可以是一个空,也可以是一个起点。

你说的 "零 "是什么意思并不重要。如果 用零来确定一个数组的大小,称它为零姜饼,它将是零。这意味着数组将为零。
 
trader781:

重写了844号帖子,以避免在这里再写代码

至于零大小的数组--0可以是一个整数,可以是相当于一个布尔赝品,可以是一个空,也可以是一个起点。

也请不要让我为你在正确的帖子中插入正确的代码。

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int               Ticket;
   double            orderopenprice;
   int               ordertype;
   double            profit;
   double            stoploss;
   double            lot;
  };
myorder orders[];

int    i;
int    Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=0;

   for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
        {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
        }
     }
   ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);

  }
//+------------------------------------------------------------------+

现在看看你要填入什么数组,按什么字段进行排序。而最重要的是--你为什么需要这种分类?它的意义何在?

 
Artyom Trishkin:

也请不要让我为你把正确的代码粘贴到正确的信息中。

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

订单数组进行排序,从零值开始升序排列

例如,如果我们有20个订单,其中18个很意外地上涨了几个点,我立即用手把它关闭了。

 
trader781:

订单数组进行排序,从零值开始升序排列

例如,如果我们有20个订单,其中18个绝对不小心涨了几个点,而我马上用手把它们关闭。

如果你绝对需要按票据排序,你将不得不做两个数组。一个是结构数组,第二个是二维数组,在第一维中包含订单票,在第二维中包含计数器索引,即订单信息存储在结构数组中的索引。并在一个循环中同时填充这些数组。

你想解决这个问题已经很久了,我甚至都不记得你想达到的目的了。可能还有其他所有的人。

如果我没记错的话,你需要从订单列表中选择某个数字。那么,这有什么问题呢?只要做一个简单的一维数组,对门票进行排序,然后orderSelect(array[required], SELECT_BY_TICKET),就 可以了。然后按你的意愿来处理这个订单。

 
Alexey Viktorov:

如果你绝对需要按票据排序,你必须做两个数组。一个是结构数组,第二个是二维数组,在第一维中包含订单票,在第二维中包含计数器索引,即订单信息存储在结构数组中的索引。并在一个循环中同时填充这些数组。

你想解决这个问题已经很久了,我甚至都不记得你想达到的目的了。可能还有其他所有的人。

如果我没记错的话,你需要从订单列表中选择某个数字。那么,这有什么问题呢?只要做一个简单的一维数组,对它进行排序,然后orderSelect(array[required], SELECT_BY_TICKET), 就可以了。然后你可以对这个订单做任何你想做的事。

我也不记得我应该在那里做什么。但好事是,它确实如此。

我特别要求他一开始写一个东西,然后我要求他仔细看他写的东西,让他自己明白这样是不行的--他需要在函数中就有另一个局部数组,我们要对它进行排序,然后从排序后的数组中填入全局数组。

 
Alexey Viktorov:

如果你绝对需要按票据排序,你必须做两个数组。一个是结构数组,第二个是二维数组,在第一维中包含订单票,在第二维中包含计数器索引,即订单信息存储在结构数组中的索引。并在一个循环中同时填充这些数组。

你想解决这个问题已经很久了,我甚至都不记得你想达到的目的了。可能还有其他所有的人。

如果我没记错的话,你需要从订单列表中选择某个数字。那么,这有什么问题呢?只要做一个简单的一维数组,对它进行排序,然后orderSelect(array[required], SELECT_BY_TICKET), 就可以了。然后按你的意愿来处理这个订单。

不,我明白,有很多方法可以用不同的方式来做,并避免数组。如果我们已经有一个这样的数组,为什么还需要两个呢?
 
trader781:
不,我明白,有很多方法可以用不同的方式来做,不需要数组。如果有一个结构,为什么要有两个?

因为一个简单的数组是按数组第一维的值排序的,而一个 结构的数组是 如何排序的,我不知道。

有趣的问题是...我现在要尝试对一个结构数组进行排序。

 
Alexey Viktorov:

因为一个简单的数组是按数组第一维的值排序的,但一个 结构数组是 如何排序的,我不知道

这是一个有趣的问题,虽然...现在我将尝试对一个结构数组进行排序。

我完全不知道它在结构形式上有什么用。mq程序写在一个文件中,数组在一个滚动中处理,适合在一个屏幕中。在这种情况下,结构的意义是什么,是为了运动的兴趣?
 
Alexey Viktorov:

因为一个简单的数组是按数组第一维的值排序的,但我不知道一个 结构数组是 如何排序的。

虽然这个问题很有趣...我准备尝试整理出一个数组结构。

我不知道它是什么,也不知道它是关于什么的。

但既然这个话题已经被提出来了,把它扔掉是很愚蠢的。还有类的数组。

 
Vitaly Muzichenko:
我根本不知道为什么需要以结构的形式出现。mq程序写在一个文件里,数组在一个滚动中处理,适合一个屏幕。在这种情况下,结构的意义是什么,是为了运动的兴趣?

我们为了运动而写一切。首先,我们了解什么是有效的,以及它是如何工作的,然后我们开始思考如何更有效地写作。


至于对结构数组的排序:正如我所料,实验失败了。在编译时,编译器已经说"表达式没有效果"

原因: