현재 막대는 인덱스가 있는 막대입니다. 0-0, 그래서 원본으로 돌아가기 암호, 우리 array1 의 인덱스 0-0(현재 막대)에 있는 요소를 다음으로 복사합니다. 정렬 시작 인덱스가 있는 array2 0-0, 우리는 튜토리얼에서 작성된 것과 반대되는 마지막 10개 막대(여기서 마지막 막대는 현재 막대, 인덱스 [0]가 있는 막대)를 얻습니다. 따라서 인덱스가 있는 요소를 복사합니다. Bars*6-60,60 of array1 to array 초기 요소 인덱스가 0인 array2는 기록에서 막대에 대한 정보를 얻습니다.
저는 Expert Advisor를 쓰고 있습니다.그리고 질문이 생겼습니다...내 지표를 참조하는 방법은 무엇입니까? 즉, 지정된 막대에서 데이터를 가져옵니다(저의 경우 두 번째 막대를 가져와야 함). windowsPriceMax가 있지만 내가 아는 한 하위 창 차트의 마지막 값만 표시하고 예를 들어 표시기에 3줄이 있으면 무엇을 표시할 것인지 명확하지 않습니다.
저는 Expert Advisor를 쓰고 있습니다.그리고 질문이 생겼습니다...내 지표를 참조하는 방법은 무엇입니까? 즉, 지정된 막대에서 데이터를 가져옵니다(저의 경우 두 번째 막대를 가져와야 함). windowsPriceMax가 있지만 내가 아는 한 하위 창 차트의 마지막 값만 표시하고 예를 들어 표시기에 3줄이 있으면 무엇을 표시할 것인지 명확하지 않습니다.
이중 iCustom(문자열 기호, int timeframe, 문자열 이름, ..., int 모드, int shift)
지정된 사용자 지정 표시기 의 계산. 사용자 지정 표시기는 컴파일해야 하며(확장자가 EX4인 파일) terminal_directory\experts\indicators 디렉터리에 있어야 합니다. 옵션:
symbol - 지표가 계산될 데이터가 있는 기기의 기호 이름입니다. NULL은 현재 문자를 의미합니다. 기간 - 기간. 차트 기간 중 하나일 수 있습니다. 0은 현재 차트의 기간을 의미합니다. name - 사용자 지정 표시기의 이름입니다. ... - 매개변수 목록(필요한 경우). 전달된 매개변수는 선언 순서 및 사용자 지정 표시기의 외부(외부) 변수 유형과 일치해야 합니다. mode - 표시줄의 인덱스입니다. 0에서 7 사이일 수 있으며 SetIndexBuffer 함수 중 하나에서 사용하는 인덱스와 일치해야 합니다. shift - 표시기 버퍼에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 이전만큼 이동).
코드 시작 부분에 ~라고 불리는 f-i 정수ArrayCopyRates , 이 함수의 예에 따라 현재 차트의 막대 데이터를 RateInfo[][6] 유형의 2차원 배열에 복사하고 복사된 막대의 수를 반환하거나 실패할 경우 -1을 반환합니다. :
현재 막대는 인덱스가 있는 막대입니다. 0-0, 그래서 원본으로 돌아가기 암호, 우리 array1 의 인덱스 0-0(현재 막대)에 있는 요소를 다음으로 복사합니다. 정렬 시작 인덱스가 있는 array2 0-0, 우리는 튜토리얼에서 작성된 것과 반대되는 마지막 10개 막대(여기서 마지막 막대는 현재 막대, 인덱스 [0]가 있는 막대)를 얻습니다. 따라서 인덱스가 있는 요소를 복사합니다. Bars*6-60,60 of array1 to array 초기 요소 인덱스가 0인 array2는 기록에서 막대에 대한 정보를 얻습니다.
큰 소리로 말하지 않고 실제로 확인합니다.
//+------------------------------------------------------------------+//| массив.mq4 |//| Copyright 2012, |//+------------------------------------------------------------------+#property copyright "Copyright 2012,"#property link "https://forum.mql4.com/ru/46980/page525"#property show_inputsexternstring s= " -----номер бара--------" ;
externint a= 9 ; //номер 10 последних баров //+------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------+int start()
{ if (a< 10 )
{ double array1[][ 6 ]; double array2[ 10 ][ 6 ];
ArrayCopyRates (array1);
ArrayCopy (array2,array1, 0 , Bars * 6 - 60 , 60 );
// теперь array2 содержит 10 последних баров из истории(имеется в виду,что последний бар-это текущий бар,бар с индексом [0])Alert ( "Контрольный бар - " ,a, " время - " , TimeToStr (array2[a][ 0 ]), " цена открытия - " ,array2[a][ 1 ]);} return ( 0 );}
현재 bar는 array1[ 0 ][ 0 ]이고 , array를 복사하면 array1[Bars*6-60,60][0]이 됩니다... 어딘가에서 번호가 다시 매겨지고 있는 것으로 나타났습니다... 물론, 실습에서 함수를 사용한 후 결과는 명확하지만 ... 내 생각에는 논리가 엉망입니다.)))
롤 :
5940 --마지막 10개 막대(막대 - 6개 색인)를 복사할 소스 배열의 시작 색인.
친애하는 전문가 여러분, 아니요. 교과서에 오류가 있습니까?
내 고려 사항은 다음과 같습니다.
코드 시작 부분에 ~라고 불리는 f-i 정수 ArrayCopyRates , 이 함수의 예에 따라 현재 차트의 막대 데이터를 RateInfo[][6] 유형의 2차원 배열에 복사하고 복사된 막대의 수를 반환하거나 실패할 경우 -1을 반환합니다. :
현재 막대는 인덱스가 있는 막대입니다. 0-0, 그래서 원본으로 돌아가기 암호, 우리 array1 의 인덱스 0-0(현재 막대)에 있는 요소를 다음으로 복사합니다. 정렬 시작 인덱스가 있는 array2 0-0, 우리는 튜토리얼에서 작성된 것과 반대되는 마지막 10개 막대(여기서 마지막 막대는 현재 막대, 인덱스 [0]가 있는 막대)를 얻습니다. 따라서 인덱스가 있는 요소를 복사합니다. Bars*6-60,60 of array1 to array 초기 요소 인덱스가 0인 array2는 기록에서 막대에 대한 정보를 얻습니다.
안녕하세요.
사용자 지정 표시기 가 있습니다.
저는 Expert Advisor를 쓰고 있습니다.그리고 질문이 생겼습니다...내 지표를 참조하는 방법은 무엇입니까? 즉, 지정된 막대에서 데이터를 가져옵니다(저의 경우 두 번째 막대를 가져와야 함). windowsPriceMax가 있지만 내가 아는 한 하위 창 차트의 마지막 값만 표시하고 예를 들어 표시기에 3줄이 있으면 무엇을 표시할 것인지 명확하지 않습니다.
안녕하세요.
맞춤형 지표가 있습니다.
저는 Expert Advisor를 쓰고 있습니다.그리고 질문이 생겼습니다...내 지표를 참조하는 방법은 무엇입니까? 즉, 지정된 막대에서 데이터를 가져옵니다(저의 경우 두 번째 막대를 가져와야 함). windowsPriceMax가 있지만 내가 아는 한 하위 창 차트의 마지막 값만 표시하고 예를 들어 표시기에 3줄이 있으면 무엇을 표시할 것인지 명확하지 않습니다.
이중 iCustom(문자열 기호, int timeframe, 문자열 이름, ..., int 모드, int shift)
지정된 사용자 지정 표시기 의 계산. 사용자 지정 표시기는 컴파일해야 하며(확장자가 EX4인 파일) terminal_directory\experts\indicators 디렉터리에 있어야 합니다.
옵션:
symbol - 지표가 계산될 데이터가 있는 기기의 기호 이름입니다. NULL은 현재 문자를 의미합니다.
기간 - 기간. 차트 기간 중 하나일 수 있습니다. 0은 현재 차트의 기간을 의미합니다.
name - 사용자 지정 표시기의 이름입니다.
... - 매개변수 목록(필요한 경우). 전달된 매개변수는 선언 순서 및 사용자 지정 표시기의 외부(외부) 변수 유형과 일치해야 합니다.
mode - 표시줄의 인덱스입니다. 0에서 7 사이일 수 있으며 SetIndexBuffer 함수 중 하나에서 사용하는 인덱스와 일치해야 합니다.
shift - 표시기 버퍼에서 받은 값의 인덱스(현재 막대를 기준으로 지정된 기간 이전만큼 이동).
고맙습니다. 도움이 되었습니다. 미리 설치된 iMac *** iStoch *** 인디케이터만 이런 식으로 호출되는 줄 알았습니다.
친애하는 전문가 여러분, 아니요. 교과서에 오류가 있습니까?
내 고려 사항은 다음과 같습니다.
코드 시작 부분에 ~라고 불리는 f-i 정수 ArrayCopyRates , 이 함수의 예에 따라 현재 차트의 막대 데이터를 RateInfo[][6] 유형의 2차원 배열에 복사하고 복사된 막대의 수를 반환하거나 실패할 경우 -1을 반환합니다. :
현재 막대는 인덱스가 있는 막대입니다. 0-0, 그래서 원본으로 돌아가기 암호, 우리 array1 의 인덱스 0-0(현재 막대)에 있는 요소를 다음으로 복사합니다. 정렬 시작 인덱스가 있는 array2 0-0, 우리는 튜토리얼에서 작성된 것과 반대되는 마지막 10개 막대(여기서 마지막 막대는 현재 막대, 인덱스 [0]가 있는 막대)를 얻습니다. 따라서 인덱스가 있는 요소를 복사합니다. Bars*6-60,60 of array1 to array 초기 요소 인덱스가 0인 array2는 기록에서 막대에 대한 정보를 얻습니다.
큰 소리로 말하지 않고 실제로 확인합니다.
큰 소리로 말하지 않고 실제로 확인합니다.
예, 실제로 Bars*6-60,60 인덱스가 있는 요소가 현재 막대인 것으로 밝혀졌습니다... 반면 예에서 설명하면 다음과 같습니다.
현재 bar는 array1[ 0 ][ 0 ]이고 , array를 복사하면 array1[Bars*6-60,60][0]이 됩니다... 어딘가에서 번호가 다시 매겨지고 있는 것으로 나타났습니다... 물론, 실습에서 함수를 사용한 후 결과는 명확하지만 ... 내 생각에는 논리가 엉망입니다.)))예, 실제로 인덱스 Bars*6-60,60이 있는 요소가 현재 막대인 것으로 밝혀졌습니다...
이것이 당신의 결론입니다.
큰 소리로 말하지 않고 실제로 확인합니다.
음, 여기 에 TimeToStr 배열의 특정 요소가 있습니다 ( array2[a][ 0 ]
제대로 나온 것, 동의합니다. 하지만 Bars * 6 - 60 ... Bars 대신에 계산에서 대체되는 값은 무엇과 관련이 있습니까? 막대라면 마지막 10개의 막대가 어떻게 나오나요?
포럼에서 내가 이것을 이해하지 못했을뿐만 아니라 많은 것을 볼 수 있습니다.
모든 막대의 수에 6을 곱하고 60을 뺀 것으로 나타났습니다. 6은 어디에서 얻었습니까? 네, 말도 안되는 소리입니다.
음, 여기에 TimeToStr 배열의 특정 요소가 있습니다(array2[a][ 0 ]
제대로 나온 것, 동의합니다. 하지만 Bars * 6 - 60 ... Bars 대신에 계산에서 대체되는 값은 무엇과 관련이 있습니까? 막대라면 마지막 10개의 막대가 어떻게 나오나요?
포럼에서 내가 이것을 이해하지 못했을뿐만 아니라 많은 것을 볼 수 있습니다.
int Bars -- 현재 차트 의 막대 수입니다 .