정적 배열?

 

안녕하세요 여러분,

먼저 모든 답변에 대해 모든 사람에게 감사합니다. 이것은 MQL4를 배우는 데 큰 도움이 되었습니다.

어레이를 구축하는 방법을 이해하기 위해 계속 진행 중입니다.

주제:

예를 들어 신호를 정적 배열에 저장하는 방법: 일련의 양초의 고가 및 저가 등, 각 고가와 저가 위에 작은 선을 놓을 것입니다.

그래서 정적 배열[1,2,3,4,5,6,7]을 생각하고 있습니다.

array[1] = (Low[3] < Low[4] && Low[3] < Low[3]) //또는 이와 유사한 것 ?

Low_1 = 배열[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] 횡설수설
  3. array[1] = (Low[3] < Low[4] && Low[3]...은 배열이 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/고/저 또는 그 이상에서 추세선을 그립니다.

또는 이 예에서와 같이 왼쪽에 1개의 낮은 양초가 있고 오른쪽에 1개의 낮은 양초가 있는 1개의 양초를 사용하고 이것을 저가라고 부를 수 있습니다.

처음에는 결과를 배열에 넣는 것을 고려하고 있었지만 이것이 내가 원하는 대로 되지 않거나 적어도 이 시점에서 배열을 결정할 만큼 충분히 이해하지 못합니다. 조금 더 읽으면 의심의 여지없이 나를 바로 잡을 것입니다. 하!

배열이 내가 정의한 일련의 최고점과 최저점을 저장하는 데 유용할지 확신할 수 없었습니다.
 

내가 낮음[2]을 인쇄하면 5자리 대신 8자리가 제공되고 일부는 모두 0.0000000입니다.

아마도 내가 사용한 데이터 유형이 static double Low_A였기 때문일 것입니다.

올바르게 인쇄해야하는지 확실하지 않지만 올바른 정적을 저장하기 위해 어떤 데이터를 사용해야하는지 잘 모르겠습니다.

 
자, 저는 정적 배열을 버리고 정적 이중 아이디어를

새로운 디자인이 필요합니다. 내가 하려고 했던 것이 제대로 작동하지 않을 것이 분명하고 이제 그 이유를 이해합니다.

Sooooo, 다시 드로잉 보드로 돌아갑니다. 아야
 

이것으로 돌아가서,

좀 더 배운 후에 정적 배열과 같은 것이 있는지, 아니면 기본적으로 배열이 주로 정적인지 궁금합니다. 제공한 링크를 읽은 후 기본적으로 모두 정적이라고 말합니다. 엄청난.


어쨌든, 나는 고점과 저점을 정의할 때 표시하려고 하는 대신 iFractals를 생각하고 있습니다. 나는 더 나은 지식과 더 많은 독서를 얻을 때까지 지금 프랙탈을 사용할 수 있습니다.

그렇다면 iFractals는 어떻습니까? 어떻게 표시하고 참조할 수 있습니까?
iFractal을 추가로 생성하고 시프트를 변경하고 그런 식으로 참조할까요, 아니면 iFractals를 사용한 시프트가 여전히 이전 프랙탈이 아닌 막대에 대해 이야기할까요?

 //+------------------------------------------------------------------+
//|                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 );
  }
//+------------------------------------------------------------------+


누군가 이 코드를 작성했고 작동 방식을 이해하지만 특정 높음 및/또는 낮음(지원/저항이라고도 함)에서 어레이를 선택하는 방법을 이해하지 못합니다.

내 말은 if(val1 > imacd) 거래를 여는 함수 를 확실히 만들 수 있지만 이전 iFractals는 어떻습니까?

이것은 단순히 이동의 문제입니까?

아니면 이것을 일종의 다른 배열에 넣어야 합니까?

조언 부탁드립니다

감사해요

 
Fractals 의 가격 값을 보유하는 2개의 버퍼(배열)가 있습니다. . . val1 및 val2. 이전 프랙탈 값을 찾으려면 시프트 값을 증가시키면서 루프를 만들고 EMPTY_VALUE가 아닌 값을 찾을 때까지 버퍼 값을 확인합니다( https://docs.mql4.com/customind/SetIndexEmptyValue ).