// строку int searchPeriod=(Search_Period<1)?1:Search_Period;// можно расписать так:inputint Search_Period=10; // Количество копируемых свечей ... эту строку вы видите в настройкахint searchPeriod; // Сюда будем записывать входной параметрif(Search_Period<1) searchPeriod=1; // Если во входном параметре ввели ноль или меньше нуля, то параметр будет равен нулюelse searchPeriod=Search_Period; // иначе примем входной параметр// соответственно и строку int delta=(Delta<0)?0:Delta;// можно расписать точно так же
下面是我解决重复搜索问题的变种。
为了使脚本发挥作用,必须将字典文件复制到MQL5/Include中。
搜索是在黄色显示的单程for循环中进行的。产生的列表不包含重复的内容(如果A重复B,B重复A,那么将输出一个{A,B}集合,而不是两个{A,B}和{B,A})。).
这个脚本的输出显示如下。
从参考资料来看。
以下是我对重复搜索问题的解决版本。
请帮助我找到一个计算标准RSI的函数,要求很简单。
1.返回给定条形图上的RSI值
2.只对那些被要求的条形图(如有必要)计算指数(理想的)。
3.能够在指定的TF上进行计算
4.以牺牲第2点为代价的工作比指标更快。
我想把这个功能整合到专家顾问中,如果有人有现成的,请与我分享。
我这样问是因为这个指标非常普遍,并不神秘。
请帮助我找到一个计算标准RSI的函数,要求很简单。
1.返回给定条形图上的RSI值
2.只对那些被要求的条形图(如有必要)计算指数(理想的)。
3.能够在指定的TF上进行计算
4.以牺牲第2点为代价的工作比指标更快。
我想把这个功能整合到EA中,如果有人有现成的,请与我分享。
我这样问是因为这个指标非常普遍,并不神秘。
标准iRSI有什么问题?不够秘密?
我需要对该功能进行一些修改...
那就拿一个现成的,并根据你的要求进行修改。
那就拿一个现成的,并根据你的要求进行修改。
这里是我解决搜索重复问题的变体。
Vasily,当我打开#include <Dictionary.mqh>时,它的打开方式与EA正文中的一样。它应该是这样的,或者里面应该有一些其他的代码?
因为在我看到的代码中,并不清楚它是如何搜索重复的((
我认为这是个错字,应该是0而不是1。
像这样。int searchPeriod=(Search_Period<1)?0:Search_Period。
并进一步在可执行脚本中。
int copy_bars=(int)fmin(Search_Period,Bars(Symbol(),Period()); // 要复制的蜡烛数
在这种情况下,我们也许应该已经使用了一个变量:searchPeriod。 对吗?
------
另一个问题,这条线路是做什么的?我发现,结构中的每个元素都会重置为零。而且我不明白,如果我们似乎刚刚写好这个数据,应该进一步使用它,那么我们在这里归零的是什么。
ZeroMemory(dataCandle); // 将结构中的数据归零。
我认为这是一个错字,应该是0而不是1,这样说对吗?
像这样。int searchPeriod=(Search_Period<1)?0:Search_Period。
并进一步在可执行脚本中。
int copy_bars=(int)fmin(Search_Period,Bars(Symbol(),Period()); //要复制的蜡烛数
在这种情况下,我们也许应该已经使用了一个变量:searchPeriod。对吗?
------
另一个问题,这条线路是做什么的?我发现,结构中的每个元素都会重置为零。而且我不明白,如果我们似乎刚刚写好这个数据,应该进一步使用它,那么我们在这里归零的是什么。
ZeroMemory(dataCandle); // 清除结构中的数据。
"像这样。int searchPeriod=(Search_Period<1)?0:Search_Period;"
不,不是的。这就是你的方式(字面意思):如果用户在设置中设置的Search_Period 小于1,那么searchPeriod 将等于0;否则,searchPeriod 将等于用户在设置中设置的Search_Period 的值。这是不正确的。我们不需要一个等于零的搜索范围。所以,如果这个范围被用户设置为0或小于0(小于1),那么我们将设置这个范围等于最小值--1。
"int copy_bars=(int)fmin(Search_Period,Bars(Symbol(),Period()); //要复制的烛台数
这里我们应该已经使用了变量:searchPeriod,对吗?"
是的,没错,有一个错字。
"另一个问题,这条线路是做什么的? 它的作用是什么?我发现,它把结构中的每个元素都重置为零。在这里我不明白,如果我们刚刚写了这个数据,并应该进一步使用它,那么我们为什么要归零呢?ZeroMemory(dataCandle); // 将结构中的数据归零"。
在用数据 填充结构 之前,我们要做这件事。首先,我们把它归零,然后我们把它填满。看--我们在循环之前将其归零。然后在循环中,我们用数据填充该结构。