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

 
trader781:

1)如果不放第二个维度,编译器会抱怨,"指定类的类型,未知参数 "会立即弹出。

2)那么机器人将在启动时立即死亡,并说 "关键错误阵列超出范围"。

3)设置int count1=-1;然后进行循环这里有什么问题吗?

偶尔翻看一下答案。12 和3和...

你已经做了一个多星期的同样的事情,而且每次都变得更糟,尽管已经给了你一个答案并指出了错误。在第一段代码中,编译器没有抱怨第二个维度不存在,但在随后的代码中,它开始抱怨了?编译器坏了吗?你也可以打开任何带有数组的代码,看看它们是如何创建的,并做同样的事情。

 
Artyom Trishkin:

没有这样的事情。MAs已经被很多人仔细研究过了,人们只需要等待一个新出炉的雄心勃勃的交易员的新思维。开个玩笑。

事实是,这么多年来,我已经厌倦了拿着一个MA瓶子到处打探。他们落后了。它们也许应该用在另一个领域,但不是用来捕捉趋势流的。

有各种各样的马什卡。

总的来说,各地只有推手。

 
Victor Nikolaev:

有各种各样的混搭。

总的来说,到处都是正在使用的蘑菇。

那么我在说什么呢?这就是我所说的--以不同的名义,而不是正面的。
 
Vitaly Muzichenko:


还没有。如果我发现和别人有类似的情况,我就不会在这里写。我想你自己也明白,一个数字序列和一个结构列表是不一样的,否则就会出现另一个有无限多未知数的方程。

阿尔乔姆-特里什金

这个怎么样?



#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);
    
}
  
至于把代码扔在这里--当有人将代码贴出来,然后不得不滚动页面时,这让我很生气。这种方式更紧凑。
 
trader781:
直到我做到。如果我在别人那里找到类似的,我就不会在这里写了。
请不要把代码作为文件粘贴,而是粘贴在信息中。这就是用手机看的方法?
 
trader781:
直到我做到。如果我发现其他人有同样的情况,我就不会在这里写了。我想你自己明白,数列和结构列表是不一样的,否则你会得到另一个有无限多未知数的方程式。
#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=-1;

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,10);
         orders[count1].Ticket=OrderTicket();
         orders[count1].lot=OrderLots();
         orders[count1].orderopenprice=OrderOpenPrice();
         orders[count1].ordertype=OrderType();
         orders[count1].profit=OrderProfit();
         orders[count1].stoploss=OrderStopLoss();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
至于把代码扔在这里--当有人将代码贴出来,然后不得不滚动页面时,这让我很生气。这种方式更紧凑。

错了。从你的代码中追踪你的数组将是什么大小。

你必须思考,至少要有一点。你不需要猜测。想一想。方案的每一步。还是你在等待别人为你写?这是一项自由职业者服务--他们有时会命令你写函数。

 
Artyom Trishkin:

错了。从你的代码中追踪你的数组将是什么大小。

你应该至少考虑一下。你不应该尝试去猜测。试想一下。方案的每一步。还是你在等待别人为你写?这是一项自由职业者服务--他们有时会命令你写函数。

我的看法是

1) 如果发现订单,则加到零

2)改变大小为0,保留10

3)把0写成第一阶数,1写成第二阶数,等等。

至于自由职业者,我并不质疑他们会写任何东西,但你还是要自己改写。你不需要不停地去那里。
 
trader781:
直到我做到。如果我发现其他人也是这样,我就不会在这里写了。我想你自己也明白,数字序列和结构列表是不一样的,否则它将是另一个具有无限多未知数的方程。
int count1=-1;

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,10);
         orders[count1].Ticket=OrderTicket();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
至于把代码扔在这里--当有人将代码贴出来,然后不得不滚动页面时,这让我很生气。其原因是,编码对项目的质量没有影响。

我没有写太多东西,只是录了一个小视频回应

阿特姆当然会尽可能地帮助我,但他不给我鱼,只是给我一根鱼竿)

trader781, 有时候翻翻文件,现在动不动就满了。
 
trader781:

在我看来

1) 如果发现有订单,则加到零

2)改变大小为0,保留10

3)将0写成第一顺序号,1写成第二顺序号,等等。

至于自由职业者机构,我并不质疑他们会写任何东西,但你还是要自己改写。不要不停地去那里。

那你想怎么把东西写进一个大小为零的数组呢?

把钱放在一个你没有的钱包里...

 
Artyom Trishkin:

那你想怎么把东西写进一个大小为零的数组呢?

把钱放在一个不存在的钱包里 ...

修改了844号帖子,这样我就不用再在这里写代码了。

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

原因: