初学者的问题 MQL5 MT5 MetaTrader 5 - 页 144

 
DC2008:

仔细阅读

返回值

该函数返回找到的元素的索引 ,同时考虑到数组的序列性。如果失败,该函数返回-1。

因此,它应该是这样的。

1.如果我有误解,请纠正我。

已找到区间内的所有最小值。

double Low[];
CopyLow(_Symbol,_Period,tss,tspp,Low);

由于有一个带有最小值的数组,我们用ArrayMinimum函数只搜索数组中的最小值,而不去列举时间上的区间(tsss,tspp)。

double min= Low[ArrayMinimum(Low)];  
Alert("min=",min);

2.在脚本中,代码被放置在函数中。

void OnDeinit(const int reason)

所有的时间参数都显示正确,但变量min=0.0,尽管在竞价时它显示的是指定区间的最小值。可能是什么问题?

 
forexman77:

1.如果我有误解,请纠正我。

我们已经找到了区间内的所有最小值。

由于存在一个有最小值的数组,我们使用ArrayMinimum函数,只从数组中找到最小值,而不去列举时间上的差距(tsss,tspp)。

2.在脚本中,代码被放置在函数中。

所有的时间参数都显示正确,但变量min=0.0,尽管在竞价时它显示的是指定区间的最小值。可能是什么问题?

该变量的范围 内。让它成为全球性的。
Документация по MQL5: Основы языка / Переменные / Локальные переменные
Документация по MQL5: Основы языка / Переменные / Локальные переменные
  • www.mql5.com
Основы языка / Переменные / Локальные переменные - Документация по MQL5
 
zfs:
该变量的范围 内。让它成为全球性的。
移动了变量 "double min;"到全局仍然=0.0。
 
forexman77:
移动了变量 "double min;"到全局仍=0.0

脚本

void OnStart()
  {
   double Low[];
   CopyLow(_Symbol,_Period,0,10,Low);
   double min=Low[ArrayMinimum(Low)];
   Alert("min=",min);
  }
脚本中没有OnInit和OnDeinit。
 

你的文件中存在一个错误 https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples

int ChartFirstVisibleBar(constlong chart_ID=0)
{
//---- 准备一个变量来获取属性的值。
long result=-1。
//---重置错误值
ResetLastError()。
//----------获取属性值
if(!ChartGetInteger(chart_ID,CHART_WINDOW_YD ISTANCE,0,result)) 应该是CHART_FIRST_VISIBLE_BAR
{
//---将错误信息打印到 "专家 "日志 中。
Print(__FUNCTION__+", Error Code = ",GetLastError())
}
//-----返回图表属性的值
return((int)result)。
}

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Примеры работы с графиком - Документация по MQL5
 
DC2008:

脚本

脚本中没有OnInit和OnDeinit。

这对我来说很有效!!。

 

请告诉我用哪些程序来保护EA和限制工作时间,例如我需要保护EA不被反编译,所以它只能工作5天。

我需要一个程序,我可以永久限制EA的运行时间,以便将EA交给其他人测试。

 

测试一个EA 时,我遇到了以下困难。

在下列情况下,专家顾问不进行交易(必须如此)。

 if(Stop <=Start) { return;}

测试时,我把停止参数从1到33,开始从1到33设置。

当然,测试器产生了大约2/3的无效结果,因为测试器中的 "停止">"开始 "有时会在过冲期间发生。

这些无效测试需要大量的时间。

问题:我们如何在专家顾问的代码中禁止测试空测试?

从逻辑上讲,禁赛后测试时间应该缩短?

 
forexman77:

测试一个EA 时,我遇到了以下困难。

在下列情况下,专家顾问不进行交易(必须如此)。

测试时,我把停止参数从1到33,开始参数从1到33。

当然,测试器产生了大约2/3的无效结果,因为测试器中的 "停止">"开始 "有时会在过冲期间发生。

这些无效测试需要大量的时间。

问题是如何在EA代码中禁止测试空测试。

https://www.mql5.com/ru/docs/common/expertremove

这在测试器中是有效的,//至少在上次之前的构建中是有效的。 我已经有一段时间没有检查过它了。

Документация по MQL5: Общие функции / ExpertRemove
Документация по MQL5: Общие функции / ExpertRemove
  • www.mql5.com
Общие функции / ExpertRemove - Документация по MQL5
 
MetaDriver:

https://www.mql5.com/ru/docs/common/expertremove

它在测试器中是有效的。//至少在前一次的构建中是有效的。

我需要一张测试通行证。在以下情况下,EA不进行交易。

if(Stop <=Start) { return;}

我想这样做是为了减少测试时间。

也许在策略测试器中,有一个专门针对专家顾问的输入参数的功能

如果我们得到Stop <=Start,我们就跳过这一关