静态数组 ?

 

大家好。

首先感谢大家的回答,这对学习MQL4很有帮助

,我现在 继续了解如何建立数组。

主题。

如何将信号存储到一个静态数组中,例如。例如:一系列蜡烛的高点和低点等,我可能会在每个高点和低点的上面放一条小线。

所以我在想静态数组[1,2,3,4,5,6,7] 。

array[1] = (Low[3] < Low[4] && Low[3] < Low[3]) //或类似这样的东西?

Low_1 = array[1]

Low_2 = array[2],以此类推。

这是否是一个标准的方法,还是我的方法不对?

请指教,谢谢

 

先读......然后再读,直到你掌握。

https://book.mql4.com/variables/arrays

例如,数组的第一个元素是0号元素 有点像Bars, fumy that, eh ?;-)

 
  1. 你说得太偏了。
  2. array[1,2,3,4,5,6,7] giberish
  3. array[1] = (Low[3] < Low[4] && Low[3]... array是一个bool
  4. Low_1 = array[1] 意味着数组不是一个bool
  5. "将信号存储到一个静态数组中",如果你可以在需要的时候计算它们,为什么它需要是静态的呢。
 

哦,我是说int array[1][7]。

谢谢你的回复

在进一步阅读了你的指导和问题之后,我想数组可能不是我想做的。

基本上,我想学习创建我自己定义的高点和低点;并且能够在新条形图形成后引用它们作为信号。但是我只选择其中的一些,而不是整个完整的历史高点/低点。
我可能在这里走错了路。

我将重新考虑这个问题。

谢谢你

 
Agent86:


基本上,我想学习创建我自己定义的高点和低点;并且能够在新的条形图形成后参考它们作为信号。但是,我只选择其中的一些,而不是整个完整的历史高点/低点。

为什么? 你能解释一下你想达到什么目的吗?
 

我想我会做更多像这样的事情。

我想这使得这篇文章在这一点上不再是关于数组的,所以我将收回这个质疑,直到我能够学到更多关于数组的知识。


谢谢。

static double Low_A;
   
   if(Low[2] < Low[2]
      && Low [2] < Low[1])
      {
      Low_A = Low[3];
      Print (Low_A + " Low_A has formed");
      }
 
RaptorUK:
为什么?你能解释一下你想达到什么目的吗?

当然,它实际上不是某个特定蜡烛的高点和低点,而是一系列的蜡烛。举个例子,根据我想使用多少根蜡烛,可以称之为Low_A,但也可以说,一个低点被认为是左边4根更高的蜡烛,右边4根更高的蜡烛,这个低点蜡烛将被认为是Low_A 或者我可以用更多的蜡烛,或者更少的蜡烛来组成一个低点或高点,然后为高点和低点创建其他类似的东西。然后创建一些




函数 来比较以前的低点和以后的低点,以及以前的高点和以后的高点。然后也许可以从2个高点/低点或3个高点/低点或更多的系列中画出一条趋势线 或者我可以像这个例子中那样,只使用左边有一个较低的蜡烛,右边有一个较低的蜡烛,并称其为低点。最初我考虑将结果放入一个数组中,但我不认为这能达到我想要的效果,或者至少我对数组的理解还不足以确定这一点。多读一些书无疑会让我明白。呵!我真的不确定数组是否能达到我想要的效果。我真的不确定数组对于存储我定义的一系列高点和低点是否有用。
 

如果我打印Low[2],它给我的是8位数,而不是5位数,而且有些都是0.0000000

可能是因为我使用的数据类型是静态的double Low_A。

我不确定我是否需要让它正确打印,然而为了存储正确的静态,我不确定该使用什么数据。

 
好吧,我放弃了静态数组和静态双数的想法。

我需要一个新的设计,很明显,我试图做的事情将无法正常工作,我现在明白了原因。

所以,又回到了画板上。呜呼
 

回到这个问题上。

经过一番学习,我在想到底有没有静态数组这种东西,或者说数组的静态主要是默认的,看了你提供的链接后,我说所有的都是默认的静态。很好。


总之,我在想iFractals,而不是在我定义高点和低点时试图标记它们。我可以暂时使用分形,直到我得到更好的知识和更多的阅读。

那么iFractals呢,我如何标记它们并参考它们?
我是否只需创建额外的iFractals并改变转变,并以这种方式引用它,或者带有iFractals的转变仍然是在谈论Bars而不是之前的Fractal?

//+------------------------------------------------------------------+
//|                Support and Resistance                            |
//|                Copyright © 2004/5     Barry Stander              |
//|                http://www.4Africa.net/4meta/                     |
//+------------------------------------------------------------------+

#property copyright "Support and Resistance             Barry_Stander_4@yahoo.com"
#property link      "http://www.4Africa.net/4meta/"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue

//---- buffers
double v1[];
double v2[];
double val1;
double val2;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
//----
   IndicatorBuffers(2);

   SetIndexArrow(0, 119);
   SetIndexStyle(0,DRAW_ARROW,STYLE_DOT,1,Red);
   SetIndexBuffer(0, v1);
   SetIndexLabel(0,"Resistance");

   SetIndexArrow(1, 119);
   SetIndexStyle(1,DRAW_ARROW,STYLE_DOT,1,Blue);
   SetIndexBuffer(1, v2);
   SetIndexLabel(1,"Support");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i=Bars;
//----
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+


有人写了这段代码,我明白它是如何工作的,但我不确定我如何从数组中选择一个特定的高点和/或低点,也就是支撑/阻力。我的意思是,我肯定可以做一个

函数,如果(val1 > imacd)或其他什么,就可以打开一个交易,但之前的iFractals呢,或者说后面的2个, 这只是一个简单的转移问题吗? 还是我需要把它放到另一个数组中?





请指教

谢谢

 
有2个缓冲区(数组)保存着分形的价格值 . . . val1 & val2. 如果你想找到以前的分形值,你只需循环,增加一个移位值,并检查缓冲区的值,直到找到不是EMPTY_VALUE的值 (https://docs.mql4.com/customind/SetIndexEmptyValue)