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

 
Tigerfreerun:
如果(OP_BUY==0)

你为什么要误导呢?你要么不了解自己,那就请你不要在帮助主题中表达你的无知,要么你只是在开玩笑,但忘记了你是在一个严肃的初学者帮助主题中。

桑纳-克。
这里的条件是如果所有的订单都是零的话,if(OrdersTotal()==0)。但是如果有零个托架,我应该写什么条件?

我们需要循环浏览所有的订单,并计算出订单类型()==ORDER_TYPE_BUY的订单数量。

 
Artyom Trishkin:

你为什么要误导呢?要么你不知道,那么请把你的无知放在帮助主题之外,要么你只是在开玩笑,但你忘记了你是在一个严肃的初学者帮助主题中。

我需要循环浏览所有订单,并计算OrderType()==ORDER_TYPE_BUY的订单数量

听听看。如果你能帮助我解决这个函数,我将不胜感激,我在上一页写到了这个函数。 我自己也用这个函数来计算订单。

int Count(int type,string sy)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {if(sy==OrderSymbol() && OrderMagicNumber()==Magic && (type==-1 || OrderType()==type)) count++;}
     }
   return(count);
  }
 
Tigerfreerun:

听听看。如果你能对我在最后一页写的函数有所帮助,我将不胜感激。 我自己也用这个函数来计算订单。

你需要什么样的帮助?在金的风格中,这是一个相当可行的功能。
 
Alexey Viktorov:
你需要什么帮助?这在金正日的风格中是相当有工作职能的。

在上一页,我写了一个函数,ArraySort函数的起始位置0是错误的并要求对该功能进行解释。我在重复

void MaxMinProfit()
{
int i, N, MaxTic, MinTic;
double   MinProf=0, MaxProf=0, OP, g, a[][2];
string MinSym, MaxSym;
ArrayResize(a, 0);
 
for (i=OrdersTotal()-1; i>=0; i--) 
  {    
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
    { 
     if (OrderType()==OP_SELL ||  OrderType()==OP_BUY )
      {
       OP = NormalizeDouble(OrderProfit()+OrderSwap()+OrderCommission(),2);
       
      if (MinProf>OP) 
      {
       
          MinProf=OP;
          MinTic=OrderTicket();
          MinSym=OrderSymbol();
          
         }
         
      if (OP>0) 
      {
       
          N++;
            ArrayResize(a, N);
            a[N-1][0]=OP;
            a[N-1][1]=OrderTicket();
          
         }
         
         }
         }
         
         }
         
      ArraySort(a, WHOLE_ARRAY, 0, MODE_DESCEND);//MODE_ASCEND);
      
      for (i=0; i<Level; i++) 
       {
     
     g+=a[i][0];
     //int ti=a[i-2][1];
     }
         
         
     
     if(MinProf <0 && (g+MinProf)>=ProcMax)
      {
       for (i=0; i<Level; i++) 
       {
       if (OrderSelect(a[i][1], SELECT_BY_TICKET, MODE_TRADES))
        {
        //Alert(a[i][1]);
         if (OrderType()== OP_BUY)
         {
          OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
           OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }
         }
          
          
          
          if (OrderSelect(MinTic, SELECT_BY_TICKET, MODE_TRADES))
        {
         if (OrderType()== OP_BUY)
         {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), Slip, CLR_NONE);
          }
          if (OrderType()== OP_SELL)
           {
          OrderClose(MinTic, OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), Slip, CLR_NONE);
           }
          }}       
return;
}
 

在反过来也是类元素的类元素之间传递参数的最佳方式是什么?

鉴于。

class element{
public:
int a;
        void fnc(){
        a++;            
        }
};

class elementBase{
public:
	 int b;
        element one;
        element two;
};

有什么方法可以改变函数a.fnc()中two.a的值吗?


在我的问题中,当第一类 中的元素发生变化时,第二类 中的变量应该被重新计算。(你能告诉我怎么做才好吗?)

有什么方法可以从elementBase 类中获得b的值吗

 
Tigerfreerun:

在上一页,我写了一个函数,ArraySort函数的起始位置0是错误的并要求对该功能进行解释。重复的

思考的方向:如果利润小于零...在排序过程中,数组的大小将是多少?

如果完全没有订单,阵列的大小将是多少?
 
Alexey Viktorov:

需要思考的方向:如果利润小于零...在排序过程中,数组的大小将是多少?

如果完全没有订单,那么阵列会有多大?
我不太明白这个函数到底是做什么的。但是,正如作者提到的,我的任务是在符号之间将亏损的订单与盈利的订单重叠起来。如果你能帮助我纠正和理解这个功能,我将非常高兴。
 
Tigerfreerun:
我不太明白这个函数到底是做什么的。但正如作者所说,它的任务是在符号之间将亏损的订单与盈利的订单重叠起来。如果你能帮助我纠正和理解这个功能,我将非常高兴

你的编译错误是什么?显示一个屏幕截图。

代码中 没有错误,但有一些不影响功能的小缺陷

 
Vitaly Muzichenko:

你的编译错误是什么?显示一个屏幕截图。

代码中 没有错误,但有一些不影响性能的小错误

当运行机器人时,"ArraySort函数的起始位置不正确。"你能解释一下这个函数吗,也许我会明白哪里 出了问题......
附加的文件:
yOXZsAXZ-X4.jpg  479 kb
Pe3JLH8tgCc.jpg  556 kb
 
Tigerfreerun:
当我的机器人启动时,"ArraySort函数的起始位置不正确。"你能解释一下这个函数吗,也许我会明白哪里 出了问题......

好吧,你已经展示了非关键性的错误。

该功能如何运作,你自己已经回答了。

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

新手对MQL4的任何问题,对算法和代码的帮助和讨论

Tigerfreerun, 2018.09.06 21:53

我不太明白这个函数到底是做什么的。但正如作者所说--任务是在符号之间将亏损的订单与盈利的订单重叠 起来。如果你能帮助我纠正和理解这个功能,我将非常高兴

原因: