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

 
Vladimir Pastushak:

谢谢你。我在调用一个父类方法时遇到了麻烦。

在我的印象中,它是通过父类::方法完成的。

方法本身在父体中是否有一个主体?

 
Artyom Trishkin:

父类中的方法本身是否有一个主体?

是的,确实如此。

下面是代码,我做错了什么?

//+------------------------------------------------------------------+

class A

  {

public:

   virtual int Test_A()

     {

      return 100;

     }

  };

//+------------------------------------------------------------------+

class B :public A

  {

public:

   virtual int Test_A()

     {

      return 200;

     }

  };


B b;

//+------------------------------------------------------------------+

void OnStart()

  {

   Comment (A::b.Test_A());

  }

//+------------------------------------------------------------------+


 
一个人字形指标显示了一个极值的价格值,我需要从极值到未来(第二天一条趋势线,在不知道第二个点的坐标和第一个点的时间值的情况下,我怎样才能做到呢?
 
Vladimir Pastushak:

下面是代码,我做错了什么?

不,它不会那样做

通过在B类中写test()体,你关闭了旧的Test()函数,现在当你声明一个类的实例并调用Test()方法时,它将总是运行B::Test(),但如果你没有写B::Test(),它将总是运行A::Test()

这里有一个例子,用它来实验

//+------------------------------------------------------------------+
class A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__); return 100;  }
  };

//+------------------------------------------------------------------+
class B :public A
  {
public:
   virtual int Test_A()  { Print(__FUNCSIG__," = ", A::Test_A()); return 200;   }
  };

B b;

//+------------------------------------------------------------------+

void OnStart()

  {
   Print (__FUNCSIG__," = ",b.Test_A());
  }
//+-------------------------------------------------------------
 
你好。我如何进行序数计算?这样,先卖出的地方会有1,然后是2,以此类推......。...直到它在没有订单时刷新。一些提示!
        if((fMarketOrderss(OP_SELL)>=1)) { 
       if( ((Bid-Opens)/ma+Times/1440) > SELL ) {
if(OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0,NULL,321,0,1)>0){} }}
 
嗯,奇怪,没有人回答。
 
Rustam Bikbulatov:
嗯,奇怪,没有人回复。

我认为没有人理解你的帖子 :)


 

你好,如何根据外部变量使EA以指定数量的单子开仓,比如说,两个仓位的单子。

单个订单的成交量是1.35手,未结头寸的总成交量是500手。 EA开出1.35手的买单,然后开出1.35手的卖单。

然后重复进行,直到500手买入和500手卖出被打开,由于手数不是1.35的倍数,最后一个订单必须小于1.35。

 

问候。

我做了一个函数,当订单达到利润点 "bezubitok "时,它会修改订单,将其移到订单开仓水平。它似乎工作正常,但在测试过程中(以及在所有刻度上),每隔10-20次就会向日志发送错误 1。

没有错误,但结果不明

void Bezubitok(){
   for (int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic){
            if(OrderType()==OP_BUY){
               if (OrderStopLoss()!=OrderOpenPrice() && Ask-OrderOpenPrice()>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, Indigo)) {}
                  }
               }
            if(OrderType()==OP_SELL){
               if (OrderStopLoss()!=OrderOpenPrice() && OrderOpenPrice()-Bid>bezubitok*Point){
                  double sl1 = OrderOpenPrice();
                  if(OrderModify(OrderTicket(), OrderOpenPrice(), sl1, OrderTakeProfit(), 0, DeepPink)) {}
                  }
               }
            }   
         }
      }
   }

这是什么原因,我怎样才能战胜它?

 
Andrey Sokolov:

问候。

我做了一个函数,当订单达到利润点 "bezubitok "时,它会修改订单,将其移到订单开仓水平。它似乎工作正常,但在测试过程中(以及在所有刻度上),每隔10-20次就有错误 1写入日志。

这是什么原因,我怎样才能解决这个问题?

错误1是没有错误,但结果是未知的。问题是,你正试图将止损点修改为它已经处于的相同价格。在修改之前,请将止损的价格与你想设置的价格进行比较。如果已经是这个价格,就没有什么可修改的。

原因: