淘宝网上有卖的,有卖的,有卖的,有卖的,有卖的,有卖的,有卖的,有卖的。 - 页 29

 
boing9267 >> :

>>到底是什么让你感到震惊,你能不能说得更具体一点?

这真的很让人困惑。变量名称是一场恶梦。有一半的变量是全局的,但它们不是。简而言之,现在我正在重写一切,以了解这一切是如何运作的。

 
:) 我也开始为自己重做了,我想周末我就可以比较一下各种方案了 :)
 
boing9267 >> :
:) 我也开始为自己重做,我想我将在周末完成它,这样我们就可以比较各种选择 :)

看吧!所以我不是唯一不能理解的人 :)

 
顺便说一句,我认为这对学习代码更有利:)。因此,感谢枪手的帮助
 
boing9267 >> :
我认为这对学习代码更有好处:)。因此,感谢枪手的做法。

查看个人留言。

 
mpeugep писал(а)>>

有趣的观察!如果你能--说出DC的名字,至少是第一个字母)

А

 
rtr989 писал(а)>>

对不起,可能是愚蠢的问题...告诉我,所有这些优化之间有某种联系,我的意思是阶段2是基于阶段1之后的数据?在第一阶段之后,我加载_stage_2=y_l3.set,按照我的理解,那些在第一次优化之后的输入参数被_stage_2=y_l3.set 中规定的参数取代?那么第一次优化的意义是什么?还是我搞错了,我做错了什么?现在我在做以下工作:我加载_step_1=x_l3.set,对其进行优化,选择我认为最好的结果,右击 "设置输入参数",通过测试器运行它,然后加载_step_2=y_l3.set,勾选优化的 选项...就这样进行了6次优化,在第6次优化后,我得到了我需要的集合,我这样做对吗?

你所做的一切都很正确。而你的理解几乎都是正确的。除了像_step_2=y_l3.set这样的优化集文件是我专门写的,当按顺序加载时,丝毫不影响之前得到的数值。>>关于依赖性,第一和第二步互不依赖(几乎是:-))第三步依赖两个(第一和第二)第四步依赖三个,第五步也依赖三个,几乎不依赖第四步,而第六步则依赖所有这些。

 
ShestkoFF писал(а)>>

今天我决定尝试了解专家顾问的工作原理,我感到很震惊。在我看来,这一切都非常令人困惑。
我想知道除了SHOOTER777之外,是否有人了解EA的运作方式?我不是指应该如何优化,而是指它如何工作。

抱歉,但这是我最简单的EA之一,甚至是最简单的。在其他方面,即使是我在一段时间后也不能很快弄清楚--我忘记了,向别人解释如何工作和什么工作是一件很麻烦的事(甚至有暗示说这不是我做的)。我试图分享他们,他们可以帮助我纠正一些时刻或改善他们,但....。 虽然我尝试主要通过函数来创建代码,但它更清晰,更容易理解。我想学习如何在代码中给出简洁的注释...

 
ShestkoFF писал(а)>>

这真的很让人困惑。变量名称是一场恶梦。有一半的变量是全局性的,尽管它们不是。简而言之,现在我正在重写一切,以了解一切如何运作。

变量中可能存在 "裂缝"。我没有详细研究过编程,所以-说我的提示,欢迎建设性的批评。

 
SHOOTER777 >> :

变量可能有 "问题"。我没有详细研究过编程,所以欢迎提示,欢迎建设性的批评。

我不喜欢批评那些有效的东西。我只给你一些代码的批评。

  • 你不必把所有东西都写在一行里,那样不可能读懂代码。例如,专家顾问的初始化代码
int init(){ MMH1 = Hour( ); LFB  = iTime(Symbol(), 0, 0); H1();
Delta_G12 = G12(); if ( IsOptimization( )  ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;
if ( VSR () !=0) { Flg=false;} else { Flg=true;}
cmmnt();}

我想你最好写

int init(){
	expertInitHour = Hour();
	SYMBOL = Symbol();
	lastBarTime  = iTime(NULL, 0, 0); 
	H1();
	AO_Delta = indicatorDelta(); 
	if (IsOptimization()) {
		TrBlnc = false;
	}
	if ( VSR() != 0) {
		Flg=false;
	} else {
		Flg=true;
	}
	cmmnt();
}

代码变得更易读,但即使这样替换,仍然不清楚H1、VSR、Flg是什么。

  • 以一种有意义的方式命名变量。最好多花几分钟时间想出一个变量或函数的名称,但这样就容易记住它的用途。例如:G12函数--它是用来做什么的?它计算最后的指标值之间的delta(你有它甚至选择指标的变体)。那么,它应该被称为 indicatorDelta,这样更简单明了。
  • 如果变量是局部的,就不要把它们变成全局的。我不记得了,我在什么场合看到过它。
  • 不把全局变量变成静态变量是没有意义的。如果不是这种情况,请解释。
  • 使用语言中定义的标准常量。例如,要指定一个时间间隔。double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));}似乎用double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));}代替更好。


我将尝试重写这篇EA,让自己,或许也让别人更清楚地了解它。

非常感谢你分享你的想法。你分享你的工作并每周发布结果,这非常好。
歉意的批评 :)