学习逻辑 - 页 5

 
Vinin:


这不是我的台词。它是作者的

最佳的start()代码

说起来,这两条线看起来很奇怪。

   limit = Bars - counted_bars-1;
   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;

最好是这样。

   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;
   else limit = Bars - counted_bars-1;
 
PapaYozh:

我不明白,既然我们可以这样写,为什么还要在布尔变量上跳舞。

我喜欢它,谢谢你提醒我,PapaYozh。我自己也创造了这样的结构--而且忘记了...
 
Vinin:


还有逻辑,思维的逻辑。

第三种选择是完全放弃指标中的逻辑条件。问题出现了--这是否可能。

让我们来试试.

为此,我们将添加几个逻辑变量

现在,启动函数的整个代码看起来是这样的


在我看来,它可以被简化

for(int i = 0; i < limit; i++)
{
// Option three_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=high-low;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}

附加的文件:
 
Mathemat:
我喜欢它,谢谢你提醒我,PapaYozh。我自己创造了这样的结构--却忘记了...... 。

在我看来,有过度使用Symbol()函数调用 的情况。

我想这样写。

   string smbl=Symbol();
   showEUR  = ( StringFind(smbl, "EUR", 0) != -1);
   showUSD  = ( StringFind(smbl, "USD", 0) != -1);
   showGBP  = ( StringFind(smbl, "GBP", 0) != -1);
   showCHF  = ( StringFind(smbl, "CHF", 0) != -1);
   showJPY  = ( StringFind(smbl, "JPY", 0) != -1);
但这与逻辑无关 :)
 
Vinin:

这真的很简单。有一种帮助他人做最好的代码的愿望,并向他人学习。

一个人最终会形成相当多的刻板印象,这已经不是什么秘密了,这些刻板印象有时(大多数情况下)会起到帮助作用,有时会起到阻碍作用。

我将准备一个指标的变体,并试图解释所做的事情和原因。当然,如果你有兴趣的话。


没有办法用例子来解释如何制作最佳的代码--会有太多的遗漏。

关键是,有很多创建最佳代码的规则。例如,熟悉MQL4语言的人中没有多少人知道,对于一个处理器来说,进行加减运算要比乘除运算容易得多。没有多少人知道,从代码优化的角度来看,写a=b+b比a=b*2更好。因此,我认为要理解编程和优化的逻辑,把有兴趣的人送到构建最优代码的作品中去,研究算法语言,以及让用户习惯于创建未来程序的流程图,以避免遗漏和减少返工,是更有用的。

我附上一本关于代码构建的非常好的书的链接,可以下载到这个帖子。

С.S. McConnel "完美代码"。


你可以在这里下载这本书:http://depositfiles.com/files/ebk6t6t5h(文件大小21Mbytes。格式 - djvu)

所以,一般来说,这个主题只能处理源码和优化代码部分的特殊情况,并解释为什么优化代码部分比源码好,以及为什么这样优化。我想这正是你最初想要的。

 
drknn:


这个帖子的附件是一本关于代码建设的好书的下载链接。

С.S. McConnel "完美代码"。

+1,非常有用的书。
 
drknn:

所以,一般来说,在这个主题中,我们只能讨论源码和优化代码部分的特殊情况,并解释为什么优化代码部分比源码好,以及为什么以这样的方式进行优化。我认为这正是你从一开始就想要的。

也不错,但还是要明确一个分支名称或开始研究逻辑。

我自己真的不知道如何做第二个...)

 
denis_orlov:

这也不错,但最好能澄清这个分支的名称,或者开始学习逻辑。

我自己真的不知道如何做第二个...)


逻辑(希腊语 λογική--"推理的科学"、"推理的艺术",来自λόγος--"语言"、"推理"、"思想")--关于智力 认知活动的 形式、方法和规律的科学,用逻辑语言 加以形式化。由于这种知识来自于理性,所以逻辑也被定义为关于正确 思维 形式和规律的科学。因为推理采取的是语言推理 的形式,证明反证 是其中的特例,所以逻辑有时被定义为推理模式的科学或证明和反证方式的科学。逻辑学作为一门科学,研究的是在认知过程中以间接的方式达到真理的方法,不是从感觉经验 中,而是从先前获得的知识中,所以它也可以被定义为一门关于推理知识 推导方式的科学。

通过应用逻辑规律和逻辑思维方法获得的演绎知识,--任何逻辑行动的目的,旨在实现真理和应用由此产生的知识,对世界的现象和事件有更深的认识。

逻辑学的主要任务之一是确定如何从前提中得出结论(适当的推理),以及如何获得关于思维对象的真正知识,以便更深入地了解所研究的思维对象的细微差别及其与有关现象的其他方面的关系。

逻辑是几乎所有科学的工具之一。

 
denis_orlov:

这也不错,但最好能澄清这个分支的名称,或者开始学习逻辑。

我自己真的不知道如何做第二件事......)


我可以分享我的感受。

我花了三年时间试图理解逻辑这门科学--我仍然无法掌握其本质,例如,我为什么需要逻辑。它只是一个几乎无用的模式的集合,但我觉得有些不对劲,所以我继续阅读,并试图根据它的方案进行推理,在公式的帮助下解决各种逻辑问题。然后,我突然意识到......。后来,当我终于意识到这门学科的价值时,我开始积极让我的朋友们参与到逻辑学的研究中来。我简直是被逻辑 "烧 "了。我的朋友们积极地被吸引到所有的逻辑幽默中,硬性结论的美,悖论的不可解性,当我在身边时,他们至少学到了一些东西。但当他们独自一人时,他们就像火的余烬一样逐渐消失了。他们都没有点燃过他自己的精神之火。在这里我明白,他们对我感兴趣,但没有更多--他们中没有一个人背后有迫使他们进入这门科学的踢球力量。然后所有真正研究过逻辑学的人,就我自己而言,我把他们分为两类。他们都是被迫学习的。这一点是无法回避的。一些在大学里教逻辑学的教授说,这对学生来说是非常困难的。相反,他们惊讶于这对他们来说是多么困难,而申请又是多么容易。因此,对我自己来说,我把所有那些被迫的人分成两类--那些在学习逻辑学时爱上了它的人,以及那些通过学分而忘记它的人。我总觉得和那些已经坠入爱河的人交谈是件很愉快的事,因为他们会在心里理解你。但有时很难对付健忘的人--这种人用自己的死亡玩俄罗斯轮盘赌。事实上,有意识地只能按照预先制定的计划行事。这是恢复他们生活秩序的唯一途径。制定行动计划是一个思考过程。如果做得不正确,结果就不会好。脑子里有混乱的人,他的事务中也有混乱。因此,事实证明,思维控制着我们的生活。而在这里抛弃Logic是一条通往坟墓的捷径。

:)够了,否则我可以继续谈论这种事情几个小时,最后会把我们带离这个分支的主题。

P.S.

我只能补充说,我的生活处于如此困难的境地,我不知道该怎么做--我所有的计划和希望都崩溃了。疼得要命。我被无望的情绪所窒息。我决定,在我了解情况之前,我无法决定如何处理我的生活以及如何与我周围的人相处。我从书本上知道有这样一门科学,即逻辑学。在这一点上,我决定我必须学习它,以便我的结论是正确的。我的生活状况的复杂性和痛苦是鞭策我的力量,使我不仅在逻辑学中,而且在许多其他科学中寻求问题的答案。那都是过去的事了。我为什么要告诉你这些?我只是想让你明白是什么驱使我去研究逻辑。可以这么说,我用实例告诉你们,我不是一个例外,我也不得不从棍棒下学习这门学问。但我没有在大学里学习,而是靠自己。

 
nikost:


在我看来,我们可以把它进一步简化

for(int i = 0; i < limit; i++)
{
// 变体三_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i)。
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i)。
atr=高-低。
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}


我试图保持原代码中的渲染。ATR的计算方式不同。如果你比较一下这两个指标,你会发现其中的差别。