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

 
Vikon:
关于在类内调用函数的事情是这样的:如何私有:公有:,如何向类传递数据,如何从类中获得结果。到目前为止,这就是它!

在类中,结果必须以某种方式被计算出来。而没有你的参与,该类如何理解它现在需要返回结果,而不是在其他时间?

所以,你需要在类里面有一个可以从外面调用的方法。所以它必须是公开的。

当然,你可以做一个私有方法,该方法将读取类内的所有数据并将其写入类的变量中,而公共方法将调用私有方法。但无论如何必须调用一些方法。而在私人方法中会计算什么,计算会有多复杂,计算中会涉及哪些变量--一切都取决于你,并由你自己负责。

 
Vikon:
这就是重点,如何在一个类中调用一个函数,即如何私有:公有:,如何向一个类传递数据,如何从类中获得结果。到目前为止,这里是!
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      inputA=1;
input int      inputB=3;

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
public:
   int Add(int a,int b)
     {
      Print(__FUNCTION__,": Результат сложения: a",a," + b",b," = ",a+b);
      return(a+b);
     }
  } ar;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ar.Add( inputA, inputB );
  }
//+------------------------------------------------------------------+
看起来应该可以,我还没有检查是否正确)
 
Alexey Kozitsyn:
我想应该可以,我还没有检查过,看是否正确)

给你,谢谢你,我已经开始行动了--。

的脚本。

#include <ASD.mqh>
ASD ar;
void OnStart()
  {
   ar.fg (3,5);
   ar.sf ();
  }

类。

class ASD
  {
private:
  int d;
  int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d)  { g (a_s,a_d); }
void sf ()                 {Alert (d);}
  };

Alert给出的结果是8,但这是一个来自类的警报,而我现在需要一个来自脚本的警报

 
Vikon:

给你,谢谢你,我已经开始行动了------。

的脚本。

#include <ASD.mqh>
ASD ar;
void OnStart()
  {
   ar.fg (3,5);
   ar.sf ();
  }

类。

class ASD
  {
private:
  int d;
  int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d)  { g (a_s,a_d); }
void sf ()                 {Alert (d);}
  };

Alert给出的结果是8,但这是一个来自类的警报,现在我需要一个来自脚本的警报

好的,你在类中声明了一个Alert() 方法,并称其为ar.Alert(),尽管现在sf()方法也是如此。我不太清楚你在d字段中写了一个值后想看到什么?
 
Alexey Kozitsyn:
好的,你在类中声明了Alert()方法,并称其为ar.Alert(),尽管现在sf()方法也是如此。我不太清楚你在给字段d写了一个值之后想看到什么?
如果你想在不调用sf()方法的情况下获得d的值,那么你需要添加一个公共方法int GetD() const { return( d ); }。并在脚本中写上Alert( ar.GetD() )。
 
Alexey Kozitsyn:
看起来应该可以,还没有检查)

每个人!非常感谢您!明白了 --

脚本。

#include <ASD.mqh>
ASD ar;
void OnStart()
  {
   ar.fg (3,5);
   Alert ( ar.sf ());
  }

类。

class ASD
  {
private:
  int d;
  int g   (int a_s,int a_d)  {return (d=a_s+a_d); }
public:
  void fg (int a_s,int a_d)  { g (a_s,a_d); }
  int sf  ()                 {return (d);}    
  
  };


我将咀嚼它!

 

我不记得是谁在这个主题中给我写的,说测试器坏了,但我可以回答,它可能是坏了。它要么吞下不同的时间块,要么从一个任意的片段开始计算(尽管所有的引号都在那里)。

我想需要看的人就会明白。

 
下午好,请您告诉我,MRoubd函数是否可以从MSDN
中导入
(返回一个四舍五入到给定值的倍数的数字)

或如何四舍五入,例如,2285.13是(0.25)的倍数 2285.00 __ 2285.25 ___ 2285.50 ___ 2285.75
 
我如何知道一个货币对的杠杆,而不是一个账户的杠杆?
 
SAMER:
我怎样才能知道一个货币对而不是一个账户的杠杆率?

提供的杠杆数量。

long liverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
原因: