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

 
1Rakso >> :

为什么信号不正常?

我想以最高点和最低点为单位设置过滤区...信号不工作,我做错了什么?

不太清楚你在这里寻找什么...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

如果我有一个高点和一个低点的N个柱子,我像这样寻找它

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

其中hibar和lobar是搜索高点和低点的条数。

tf_100 - 搜索最大和最小值的时间范围。

1 - 搜索从1条开始,如果你想它在0条上搜索,你应该设置为0。

 
Swan >> :


哦啊,我好尴尬,我好尴尬。
 
Dimi >> :

现在问题来了,我怎样才能把这个数组的值20变成变量?

binddouble Max_array[20];在函数之外(全局),如果有必要,也是静态的

 
alsu >> :

首先,将代码按逻辑顺序排列。

ArraySetAsSeries(Max_array,true) - 为什么?

for(c=1; c <= total_c; c++) - 数组的索引从0到 total_c-1

老实说,我不明白你为什么不喜欢这个逻辑...这里ArraySetAsSeries(Max_array,true) 设置 阵列中的索引方向。还是有什么问题呢?

 
Dimi >> :

说实话,我不明白你为什么不喜欢这种逻辑。ArraySetAsSeries(Max_array,true) 在这里设置 数组的索引方向。还是有什么问题?


这当然不是一个错误,只是一个逻辑上不必要的字符串。ArraySetAsSeries是有意义的,当数组的大小进一步增加时(例如,在每个新的条形图上),那么新的元素将有索引0。然而,在静态情况下,元素在内存中的排列顺序没有区别。关于第二个说明:在一个大小为N的数组中,最后一项的索引是N-1。正确的代码for(c=0; c < total_c; c++)

 
alsu >> :

这当然不是一个错误,只是一个逻辑上不必要的字符串。ArraySetAsSeries是有意义的,当数组的大小进一步增加时(例如,在每个新的条形图上),那么新的元素将有索引0。然而,在静态情况下,元素在内存中的排列顺序没有区别。关于第二个说明:在一个大小为N的数组中,最后一项的索引是N-1。正确的代码for(c=0; c < total_c; c++)

谢谢你,现在我明白了这个错误。但我还是不能用double Max_array[20];来得到它。让我以不同的方式解释一下。这个函数搜索最后20个柱子的RSI的最大值。我想让它在该条数上搜索最大值,这将由另一个函数计算。也就是说,在每一个新的条形图上,这个计算出的条形图数量将发生变化。可以是10,可以变成20或30....如何在代码中实现它?条形计算函数已经准备好了,现在如何在这个数组中插入它而不是这个数字20,双倍Max_array[20]; ????

 
Dimi >> :

谢谢,现在我明白了这个错误。但这个双倍的Max_array[20];还没能让我满意......让我以稍微不同的方式来解释。这个函数搜索最后20个柱子的RSI的最大值。我想让它在该条数上搜索最大值,这将由另一个函数计算。也就是说,在每一个新的条形图上,这个计算出的条形图数量将发生变化。可以是10,可以变成20或30....如何在代码中实现它?计算条数的函数已经准备好了,现在如何在这个数组中插入它而不是这个数字20 double Max_array[20]; ????


非常简单。

double IsMaxRSI(int total_c) {
   ...
   double Max_array[];  
   ArrayResize( Max_array, total_c);
   ...
}
виноват, код куда-то выпал
 
Dimi >> :

不太清楚你在这里寻找什么...

double hi_100 = iHigh(Symbol(),tf_100,iHighest(NULL,tf_100,MODE_HIGH,hibar,n_bar)); //поиск хая наибольшего значения
double lo_100 = iLow (Symbol(),tf_100,iLowest (NULL,tf_100,MODE_LOW,lobar,n_bar)); //поиск лоу наименьшего значения

如果N条的最大和最小值,它是这样搜索的

double hi_100 = High[iHighest(Symbol(), tf_100, MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf_100, MODE_LOW, lobar, 1)];

其中hibar和lobar是搜索高点和低点的条数。

tf_100 - 时间框架,在此框架内搜索最大和最小值。

1 - 搜索从1条开始,如果你想让它在0条上搜索,你必须输入0。

谢谢你,我将尝试你的变体,关于条形图,我正在寻找从50到100条的水平,这就是为什么我把它们放在外部进行优化。

我发现了这个错误,我没有把f数组插入全局变量,我把f值按tf))))的顺序放入外部变量。

extern int tf_100  =   3; //)))

int tf[10]={0,1,5,15,30,60,240,1440,10080,43200};//массив таймфрейма забыл его вставить)))

double hi_100 = High[iHighest(Symbol(), tf[ tf_100], MODE_HIGH, hibar, 1)];
double lo_100 = Low [iLowest (Symbol(), tf[ tf_100], MODE_LOW, lobar, 1)];

我真的很笨,基本的东西像......

 
alsu >> :

非常简单。

似乎是在工作!!!。

就像时钟一样,再次感谢!!!。这真的很容易。
 

朋友们,下午好。


如果你不介意告诉我如何解决这样的困难。


我正在写我的第一个EA,我遇到了这些困难。


1) 是否有可能对相同的货币进行 "区分订单",但在不同的TF上进行?

(例如,我在H4和M30的同一货币对上交易一个EA...在H4上做了一笔交易,指标显示在这个TF上有移动,但这笔交易被关闭了,因为M30上有一个平仓信号......而在我的专家顾问中没有提供 "使用多个TF的数据"......)

也就是说,我能否以某种方式在程序上区分H4和M30的这些交易?


2) 在编写专家顾问 时,我有一个明显的想法:)"关闭头寸的信号,以及通过反转打开相反头寸的信号 "并不总是好....

往往在产生相反的信号之前,就已经损失了大量的利润......。

所以我决定使用追踪止损,并使用斐波那契形成目标。


请您告知如何在交易下单时,将目标(在EA中)设定为某个斐波那契水平的参考点?


3)有一个指标:BrainTrend1StopN。请告知如何将止损点 "拉 "到该指标所产生的 "点 "的水平。


事先非常感谢你。
附加的文件:
原因: