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

 
Yedelkin:
我觉得这很难回答。我重新阅读了你的信息,但没有得到改变阵列大小的想法。你对代码的回答也取决于对概念的理解。也许其他人会回答。

我并不关心改变数组的大小,比如说我就给它20。

 double masCenPoc[20]; 

 for(int i=0; i<20; i++){
 
   if((cena_poc < high && cena_poc < low)||(cena_poc > high && cena_poc > low))

//как вот дальше обозначить чтоб он запомнил значение цены уровня Рос?
    
    masCenPoc[i] = cena_poc;

else 

//и удалил значение из массива, если нашлось пересечение с ценой этого уровня Рос?
 
Top2n: 我并不关心改变数组的大小;我将把它设置为,例如,20。

这里你有一个20个元素的数组。让我们假设if 条件成立--我们给数组的 第一个元素 分配一个价格值:masCenPoc[0] = cena_poc

我们将为数组的 第二个元素 赋值什么?

 
Yedelkin:

这里你有一个20个元素的数组。让我们假设if 条件成立--我们给数组的 第一个元素 分配一个价格值:masCenPoc[0] = cena_poc

我们应该给数组的 第二个元素 赋值什么?

Ros的下一个值,它将出现在n次。Ros线出现在每天的开始,基于前一天的结果。如果价格没有触及该水平,该Ros水平的值将被储存在数组中。
 
Top2n: Ros的下一个值,它将在n个时间内出现。Ros线出现在每天的开始,基于前一天的结果。如果价格没有触及该水平,那么这个Ros水平的值将被储存在数组中。
我明白了。我将做以下工作。我将创建一个由20个元素组成的数组,并为所有这些元素赋值-1。在每一天的开始,我将运行循环for(int i=0; i<20; i++)并在数组中寻找第一个值为-1的元素。找到这样的元素后,它将检查交易条件(if((cena_poc < high && cena_poc < low)|(cena_poc > high && cena_poc > low)),如果成功,将cena_poc的值分配给找到的阵列元素。这将逐渐用所需的值填充数组。
 
Top2n: 我明白了,谢谢你。
是的,如果你使用一个非动态数组(如你的最后一个例子),你也不需要这个函数。如果你需要一个动态数组,在循环之前的第一行代码中声明并确定其大小。
 
Top2n:

我并不关心改变数组的大小,比如说我就给它20。

它必须有意义。在这种情况下,可能不需要一个阵列。在一个有进一步计算的循环中,也许一个变量就足够了。我认为你想获得历史数据,因此从某个条形图循环到0会更符合逻辑。 然后你的数据将被建立。如果你需要一个数组,在你的情况下,它应该累积为一个堆栈。

如果你想通过在线报价来建造,那还是要按堆栈规则。

//Удачи!
 

你好。当我试图使用CopyBuffer函数 将指标数据复制到一个数组时,我得到的数值是-6.9999999999999e-005

原因是什么呢?


Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - Документация по MQL5
 
sss20192:

你好。当我试图使用CopyBuffer函数 将指标数据复制到一个数组时,我得到的数值是-6.9999999999999e-005

原因是什么呢?


也许这些数值与原作中的相同。发布代码是个好主意。
 

该指标在数据窗口 中有不同的数据。我把EA附在H1图表上,它从M5、M15和H1时间段复制数据。

int MacdHandleTf1 = iMACD(_Symbol, Timeframe1, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf2 = iMACD(_Symbol, Timeframe2, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

int MacdHandleTf3 = iMACD(_Symbol, Timeframe3, FastEMA, SlowEMA, SignalMA, AppliedPrice); 

CopyBuffer(MacdHandleTf1, 0, 1, 1, MacdArray);

Print(NormalizeDouble(MacdArray[0], 5)); 

CopyBuffer(MacdHandleTf2, 0, 1, 1, MacdArray);

Print(NormalizeDouble(MacdArray[0], 5)); 

CopyBuffer(MacdHandleTf3, 0, 1, 1, MacdArray); 

Print(NormalizeDouble(MacdArray[0], 5));