[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 428

 
keekkenen >>:

боюсь эта конструкция if(Time[0]>iTime(0,1440,60)) всегда будет возвращать истину, т.к. это iTime(0,1440,60) значение будет на 60 баров левее, чем Time[0]..

что показывает тест ?




问题陈述:我有一个EA,我想在策略测试器中 它进行优化,比如说最后 40条(见线程)。

if(Time[0]>iTime(0,1440,60))

如果时间(模拟)变得比日线上第60根柱子的开盘时间长,那么执行这个函数有什么问题呢?

 
对,那么你需要事先定义EA应该在什么时候开始测试
既然你知道它应该在什么时候结束,那么就做以下事情

假设测试结束 2010.02.10 0:00


根据下面的代码制作一个脚本

#property show_inputs
// время окончания тестировани						
extern string 		endTestTime 		= "2010.02.10 0:00";
// название пары
extern string		symbolTest			= "";
// период на котором ищем нужное время по номеру testBarCount бара относительно времени endTestTime
extern int 			periodTest		   = 0;
// количество баров в прошлое относительно времени endTestTime
extern int 			testBarCount 		= 60;

int init(){
	if ( symbolTest == "") symbolTest = Symbol();
	// искомое время
	Print(TimeToStr(iTime( symbolTest, periodTest,	iBarShift( symbolTest, periodTest,StrToTime( endTestTime)) + testBarCount)));
}
 

这个脚本允许你找到你想测试EA的时间...

在EA中设置几个变量

extern string startTime = "";
extern string endTime = "";

int StartTime = StrToTime( startTime), EndTime = StrToTime( endTime);

if (Time[0] < StartTime || Time[0] > EndTime) return(0);
 

这个脚本允许你找到你想测试EA的时间...

在EA中设置几个变量

extern string startTime = "";
extern string endTime = "";

int StartTime = StrToTime( startTime), EndTime = StrToTime( endTime);

if (Time[0] < StartTime || Time[0] > EndTime) return(0);
在startTime中我们记录了脚本获得的时间,在endTime中我们记录了输入到脚本的变量endTestTime中的时间...。
 
costy_ >>:

Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах (60 см. ветку)в тестере стратегий.

if(Time[0]>iTime(0,1440,60))

если время(моделируемое) стало больше времени открытия 60-го бара на дневке тогда выполнить функцию что не так?!

所以60巴也是相对于0巴调制的。

 

任务说明:有一个专家顾问,我们想 策略测试器中 对其进行优化,例如,相对于当前时间最后 40条。这四十根柱子可以是每小时、4小时、每日或其他时间框架的。策略测试器工作:测试器面板上显示其工作的时间间隔。这种设置操作时间的方式不能满足上述任务--测试40条。这意味着我们需要改变Expert Advisor,以便不是由测试员来定义测试时间(其能力不被满足),而是由代码本身 来定义。

你的建议不会起作用,因为对测试者来说,N个小节之前的时间就是当前时间。


T.K.

对于当前时间,测试仪将从当前时间开始计算打开指定条形(向后)的时间。也就是说,再来一次也解决不了问题。它应该是从今天的(瞬时) 小节往回推N个小节,而不是从测试者的当前时间 往回推。


我没有弄错吧。

 
keekkenen >>:
допустим тестирование заканчивается 2010.02.10 0:00


делаем скрипт из кода ниже

这个脚本很好,但是!!它将给出一个时间值,随后必须在测试器面板上进行 "评分"。这不是好事....但是在小的TF和小量的巴洛上,它将显示这样的时间,这在测试器中是无法 "得分 "的,因为在测试器中给出的是日期,而且只有日期。测试从开始日期的00:00到结束日期的00:00进行。不可能指定时间,特别是在分钟!!!!。

 

原因很简单,测试者生活在自己的时间里,而我们和真实的报价生活在不同的时间里,这些时间空间只在我们的想象中重合......


你不能在测试器中设置准确的时间,这没关系,把当天的开始时间或前一天的开始时间--这已经是一种成本了......


这段代码将在所需的优化开始时间(我们在参数中设置的)和优化结束时间之后切断额外的时间。

if (Time[0] < StartTime || Time[0] > EndTime) return(0);
 

看看图中,前几天开始只画了60条的偏移量。下面是代码的一部分。你有没有试过任何推荐的产品?试试吧,你会明白的。

int start()  {
double stoch1, stoch2;
   int pos = Bars-IndicatorCounted() ;  
//----

if(Time[0]>iTime(0,1440,60)) 
   for(int b=0; b<= pos; b++)
   {    
 
keekkenen >>:

этот кусок кода будет отсекать лишнее время до требуемого времени начала оптимизации (то что мы задаем в параметрах) и после времени окончания оптимизации..

我的理解是,EA会到脚本中获取数据,条形图应该在脚本中设置。

И!很抱歉,你能不能把脚本的完整代码贴出来?说来惭愧,在我从事MQL的一年半时间里,我从来没有写过一个脚本。