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

 
Alexandr Sokolov:

归一化后我仍然得到非归一化的值 - MQL5

最不利的是1-05,该怎么做?

DoubleToString(....)将帮助你。

 

有什么诀窍可以从更高的类别中获取一个元素的值吗?


代码。

class B
  {
   int x
   int               GetA()
     { ????  }
  };

class A
  {
   int               a;
   B                 b;
public:
  };


B类的一个元素在A类里面。我怎样才能从B内部获得a(来自A类)的值?

 
Sergey Likho:

有什么诀窍可以从更高的类别中获取一个元素的值吗?


代码。


B类的一个元素在A类里面。当你在B里面时,你怎么能得到a的值(来自A类)?

B类对A类一无所知。
你需要继承。然后你可以从子类中调用父类的方法。更好地使用语境解析运算符:。
 
Sergey Likho:

有什么诀窍可以从更高的类别中获取一个元素的值吗?


代码。


B类的一个元素在A类里面。我怎样才能从B内部获得a(来自A类)的值?

class A;

class B
  {
   A*  ptr;
   int x;
public:
   B(int mX,A* mPtr):ptr(mPtr),x(mX){}
   void  Print() {Alert("From B\na=",ptr.Get(),"\nx=",x);}
  };

class A
  {
   int               a;
   B*                b;
public:
   A(int mA,int mB):a(mA),b(new B(mB,&this)){}
  ~A() {delete b;}
   void   PrintB() {b.Print();}
   void   PrintA() {Alert("From A\na=",a);}
   int    Get()   {return a;}
  };
  
void OnStart(){
   A a(8,10);
   a.PrintA();
   a.PrintB();   
  }
 
Artyom Trishkin:

请告知。

你能告诉我如何解决在MT5 windows 10 X64上调用指标 的问题,我正在这样做。

#resource "\\Indicators\\MyIndicator.ex5"

handle=iCustom(NULL,0,"::Indicators\\\\MyIndicator")。

以前没有#resource也能工作,后来有了#resource才开始工作,现在什么都不行了,产生了错误4804

Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • www.mql5.com
В MQL5 существует несколько вариантов вызова индикаторов, и осуществляются они в основном при помощи функций IndicatorCreate() и iCustom(). Причем эти функции лишь возвращают хендл индикатора, и дальнейшая работа с индикаторами ведется именно через него. Так что же такое хендл? Как работать с функциями IndicatorCreate() и iCustom()? И как...
 
Alexandr Sokolov :

归一化后我仍然得到非归一化的值 - MQL5

最不利的是1-05,该怎么做?

试试这个。


if (index <= 65 && index> = 55 ) PrintFormat (index, "" , up, "" , down, "" , sum, "%.5f" , minus);
 
Sergey Likho:

有什么诀窍可以从更高的类别中获取一个元素的值吗?


代码。


B类的一个元素在A类里面。我怎样才能得到B里面的a(来自A类)的值?

class A;

class B
{
public:
   int x;
   int               GetA(A &reference) {  return reference.a;} };
//+------------------------------------------------------------------+
class A
{
public:
   int               a;
   B                 b; };
//+------------------------------------------------------------------+
A obj;
void OnStart()
{
   obj.a = 10;
   int result = obj.b.GetA(obj);
   printf("result = %d",result);
}
//+------------------------------------------------------------------+

2020.01.20 20:30:05.534 tst (EURUSD,H1) result = 10

 
Igor Makanu:

2020.01.20 20:30:05.534 tst (EURUSD,H1) result = 10

错了。你在一个方法中传递一个指向对象的指针。我的观点如下。

class A;

class B
  {
   A*  ptr;
   int x;
public:
   B(int mX,A* mPtr):ptr(mPtr),x(mX){}
   void  Print() {Alert("From B\na=",ptr.Get(),"\nx=",x);}
  };

class A
  {
   int               a;
   B                 b;
public:
   A(int mA,int mB):a(mA),b(mB,&this){}
   void   PrintB() {b.Print();}
   void   PrintA() {Alert("From A\na=",a);}
   int    Get()   {return a;}
   B*     GetB() {return &b;}
  };

void OnStart(){
   A a(8,10);
   B* b=a.GetB();
   b.Print();   
  }
也就是说,你可以从A那里得到一个指向B的指针并对其进行操作,而B可以访问A
 
Vladimir Simakov:

错了。你在一个方法中传递一个指向对象的指针。我的观点是这样的。

也就是说,你可以从A中获取一个指向B的指针并对其进行操作,而B可以访问A

我已经看到了你的代码

但这并不是提问者第一次毫不含糊地 "处理无花果"--我已经在OOP上几乎回答过一次这个问题))))

他基本上只需要一个关于A类前锋的描述,但他是唯一知道的人)))。


HH:我在传递一个对象的引用;你可以通过这个引用做任何你想做的事情,但一般来说这样的代码是没有意义的。 通常,就像你在你的例子中写的那样,你用一个类的指针指向自己,然后方便地使用它所有的

 
我写了一个简单的免费指标,但我无法添加说明。我按照所有要求填写,按 "保存"--一切正常,没有错误。但页面加载后,没有任何描述...