MQL5中的OOP问题 - 页 76

 
awsomdino:

这个例子应该取自Saber,我不知道它的真正目的,但我看到他的如果别的)树在那里得到你需要的东西。当我来到这里,我有一个问题,如何做它的权利,并寻找如何实现它,重新阅读的一切 - 真的失去了只有时间,有没有正确的实施,成堆的文章,到处是他自己。当你对代码不甚了解,站在5条路的十字路口思考该走哪条路时,我真的很失望。 这甚至不是你是否能在这里找到盈利的交易系统的问题,问题是你是否能在这里找到正确的最佳方式)--这就是我们亲爱的MQL5。

他说,他一直在寻找有利可图的TS,寻找可能应用TS的工具,而且你必须快速搜索。

在信号中,他的TS显示结果,然后停止工作,然后他再次打开TS(我怀疑他用新的参数重新打开),TS再次上升,然后再次停止工作。

如果这种功能是灵活的,并允许你快速优化和找到 应用的工具- 那么你就拥有了你所需要的一切

但要寻找一个单一的EA,它将在一个特定的工具上测试所有可用的历史....。我已经做了,我不认为那里有什么。

 

伊戈尔,我们在这里谈论的是代码)

我也不喜欢他的系统,它们是半欺骗性的。

我应该研究一下击剑,或者剑道。

 
awsomdino:

伊戈尔,我们在这里谈论的是代码)

我也不喜欢他的系统,它们在作弊。

我实际上是在这里读一本书))("没有傻瓜的编程")。

我不知道他的系统,但我使用QB的代码 - 他是一个真正的时间节省者,我甚至会说 - 他创造了一个强大的基础设施,我可以采取和使用,更重要的是,他不断维护他的代码。

 
awsomdino:

类、继承、虚拟化、模板,作为一个自学成才的人,我很难理解这些,我理解了一点就放弃了OOP,我甚至无法想象人们在他们的机器人中是如何烦恼的--他们需要使用这些东西,这只是一种炫耀。最多是结构。

塞姆卡带着他的画走了,谁需要这幅画,在这里他们是来为自己和亲人挣钱的,当然,开发商并没有为他感到难过。彼得,除了贸易,什么都可以)。程序员们对他们不必要的功能感到困惑。

#define  LOG(dText) CLog::Get().Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
   CLog() {}
public:
   static CLog* Get() {static CLog _log; return &_log;}
   void Log(string line,string sig,string text) {PrintFormat("Line: %s. Signature: %s. %s",line,sig,text);}
};
//+------------------------------------------------------------------+
void OnStart()
{
   LOG("Example 1");
   Test();
}
//+------------------------------------------------------------------+
void Test(){
   string t="Example 2";
   LOG(t);
}

在这里,你有OOP和宏置换,甚至还有一个躲躲闪闪的孤独者(对于那些欣赏速度的人)。这是作为一个例子写的,但自然地,你可以在构造函数中创建一个用于记录的文件,在Log(...)中写入,并在析构函数中关闭它。这是一个例子,说明这一切是怎么回事。当然,你可以在函数上做文章,但如果是你自己的文件,你会有更多的代码,你会得到全局变量,而且这不是很正统))))。

 
Vladimir Simakov:

这里你有OOP和宏替换,甚至还有一个简单的单子(这是给速度爱好者的)。这是为例子而写的,但自然地,你可以在构造函数中创建一个用于记录的文件,在Log(...)中写到它,并在析构函数中关闭它。这是一个例子,说明这一切是怎么回事。当然,你可以用函数工作,但在你自己的文件中,你会有更多的代码,你会得到更多的全局变量,而且它不是很正统))))。

谢谢你,我将保存这个例子

 
awsomdino:

谢谢,我将保存这个例子。

有趣的是,你不需要保存它,你需要了解它。一个明白人会立即写道,这里不需要一个独行侠,一切都可以简化为

#define  LOG(dText) CLog::Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
public:
   static void Log(string line,string sig,string text) {PrintFormat("Line: %s. Signature: %s. %s",line,sig,text);}
};
//+------------------------------------------------------------------+
void OnStart()
{
   LOG("Example 1");
   Test();
}
//+------------------------------------------------------------------+
void Test(){
   string t="Example 2";
   LOG(t);
}
 
Vladimir Simakov:

有趣的是,你不需要保存它,你需要理解它。一个明白人会马上写道,这里不需要孤独者,一切都可以简化为

谢谢你,这是我理解了很久的一个代码)

顺便说一下,用默认的格式把代码写得更好,我就是在这样的细微差别上卡住了。

_Symbol
Symbol();

symbolinfo和其他单调的东西,真的搞砸了我的注意力和时间。

我能说什么呢,我仍然没有100%的信息,并且对使用它的内容有疑问。

 
Vladimir Simakov:

有趣的是,你不需要保存它,你需要理解它。任何理解的人都会写道,我们在这里不需要单子,一切都可以简化为

一个被误解的人会写道,我们在这里不需要OOP,我们可以用一个函数调用 来代替它。

然后再次陷入两个阵营,陷入几页的混乱之中 ))

 
Igor Makanu:

一个明白人会写道,OOP在这里是不必要的,你可以用函数调用 来代替它。

然后又分成两个阵营,乱七八糟地写了好几页))))

干得好!这就对了!那这个呢?

#define  LOG(dText) CLog::Ptr().Log((string)__LINE__,__FUNCSIG__,dText)

class CLog{
   int cHndl;
   CLog():cHndl(FileOpen(MQLInfoString(MQL_PROGRAM_NAME)+_Symbol+(string)(int)TimeCurrent()+".log",FILE_TXT|FILE_WRITE)){}
  ~CLog() {FileClose(cHndl);}
public:
   static CLog* Ptr() {static CLog _log; return &_log;}
   void Log(string line,string sig,string text){
      string _text=StringFormat("Line: %s. Signature: %s. %s",line,sig,text);
      PrintFormat(_text);
      FileWrite(cHndl,_text);}
};

你会同意,它更复杂)))

 
Vladimir Simakov:

干得好!这就对了!那这个呢?

你必须承认,这有点复杂)))。

有班级的地方就有越野车,到处都是)

*和&可能会让你吃惊

不复杂的代码,唯一方便的类,带有析构器的构造器,我还没有看到其他的优点。

结构更方便,学习起来也不复杂)。

许多人甚至不知道或不理解结构的能力。不久前,他公开开始在其代码中广泛使用它们。