MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1016

 
Oleh Fedorov :

안녕하세요.

빌더에 대한 게시물 에 따르면 아무도 아무 말도하지 않을 것입니까?

더 많은 사람들이 볼 수 있도록 새로운 주제로 만드는 것이 의미가 있지 않을까요? 예인 경우 - 중재자에게 요청: 꺼내십시오. ... 아니면 직접 만드시겠습니까?

예, 별도의 주제를 만드십시오. 주제를 생성하는 포럼의 올바른 섹션을 선택하기만 하면 됩니다.

 

말해주세요, 초등생. 배열.

공부하고 있는데 이해가 안됨

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = NormalizeDouble (tick[ 1 , 1 ]* 100 * _Point , _Digits );
   OrderSend ( Symbol (),OP_BUYSTOP, 0.01 ,tick[ 1 , 2 ], 3 , 0 , 0 , "bs2" , 0 , 0 , clrBlue ); 
}

컴파일 중에는 오류가 발생하지 않지만 터미널에서 실행하면 치명적인 오류가 발생 합니다.

tick[ 1 , 1 ]을 주석으로 추론할 때 숫자를 소수점 이하 4자리로 반올림하는 이유

tick[ 1 , 2 ] 값을 제대로 계산할 수 없을 뿐만 아니라 단순히 셀 데이터 tick[ 1 , 1 ]( tick[ 1 , 2 ]= tick[ 1 , 1 ]; ) 의 복사도 거부 합니까?

마지막으로 왜 주문을 생성할 때 가격 값 대신 이 가격이 저장된 배열 셀을 표시하면 tick[ 1 , 2 ], 이 변수는 한 번에 2개의 값으로 간주됩니다. (힌트는 즉시 슬리피지 값을 건너뜁니다)

 
Gilmor :

말해주세요, 초등생. 배열.

공부하고 있는데 이해가 안됨

컴파일 중에는 오류가 발생하지 않지만 터미널에서 실행하면 치명적인 오류가 발생 합니다.

tick[ 1 , 1 ]을 주석으로 추론할 때 숫자를 소수점 이하 4자리로 반올림하는 이유

tick[ 1 , 2 ] 값을 제대로 계산할 수 없을 뿐만 아니라 단순히 셀 데이터 tick[ 1 , 1 ]( tick[ 1 , 2 ]= tick[ 1 , 1 ]; ) 의 복사도 거부 합니까?

마지막으로 왜 주문을 생성할 때 가격 값 대신 이 가격이 저장된 배열 셀을 표시하면 tick[ 1 , 2 ], 이 변수는 한 번에 2개의 값으로 간주됩니다. (힌트는 즉시 슬리피지 값을 건너뜁니다)

다른 모든 것과 마찬가지로 OrderSend 함수의 매개변수에서 쉼표가 역할을 하기 때문입니다. 그리고 쉼표가 텍스트에 나타나자 마자 들어오는 값의 구분 기호로 간주됩니다. 이 체크를 하세요[1][2]

 
Alexey Viktorov :

다른 모든 것과 마찬가지로 OrderSend 함수의 매개변수에서 쉼표가 역할을 하기 때문입니다. 그리고 쉼표가 텍스트에 나타나자 마자 들어오는 값의 구분 기호로 간주됩니다. 이 체크를 하세요[1][2]

고맙습니다. 다른 질문에 답할 수 있습니까? :)
 
Gilmor :
고맙습니다. 다른 질문에 답할 수 있습니까? :)

고기(2.55=367.12) 질문에 답할 수 있습니까?

 
Alexey Viktorov :

고기(2.55=367.12) 질문에 답할 수 있습니까?

이해했다.

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = NormalizeDouble (tick[ 1 , 1 ]* 100 * _Point , _Digits );
  }
 double tick[ 2 , 2 ];

2개의 셀로 구성된 배열을 생성했습니다. 맨 위 행, 2개의 셀. 낮추다.

 void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
 Comment (tick[ 1 , 1 ])

결과. 차트의 가격은 0.84478이고 위의 댓글은 0.8448 ???? 소수점 이하 4자리까지 반올림한 이유는 무엇입니까?

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = tick[ 1 , 1 ];
  }

셀에 쓰는 논리에 따라 배열의 셀 1의 데이터를 동일한 배열의 셀 2에 복사합니다. 결과는 심각한 오류 입니다.

왜요?

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = NormalizeDouble (tick[ 1 , 1 ]* 100 * _Point , _Digits );
  }

배열의 셀 2에서 보류 중인 주문에 대한 미래 가격 값을 추가하려고 합니다. 저것들. Ask price에 100포인트를 추가한 다음 주문할 때 price 매개변수에 이 배열 셀을 지정하십시오. 그러나이 명령을 다시 실행하면 동일한 오류가 발생합니다.


왜요?

 
Gilmor :

셀에 쓰는 논리에 따라 배열의 셀 1의 데이터를 동일한 배열의 셀 2에 복사합니다. 결과는 심각한 오류 입니다.

왜요?

배열이 무엇인지 이해하지 못했기 때문에 도움말을 읽고 제대로 작동하지 않으면 "손가락으로"

이것은 배열 선언입니다:

 double tick[ 2 , 2 ];

컴파일러에게 "4개의 메모리 위치" --> 2x2를 예약하도록 지시합니다.

가장 낮은 요소에 대한 액세스는 인덱스 0을 갖습니다. 즉, 여기 귀하의 경우 배열 tick[ 2 , 2 ]에는 다음과 같은 배열 요소만 있습니다.

틱[ 0 , 0 ] 틱[ 0 , 1 ]

틱[ 1 , 0 ] 틱[ 1 , 1 ]

4개의 배열 요소가 있습니까? .... 그러나 배열의 가장 낮은 인덱스는 숫자 0을 가지며 숫자 1에서 원하는 대로(또는 정신적으로 계산하는 데 익숙하지 않음)


따라서 배열의 가장 오래된 요소는 숫자를 갖습니다. 배열의 크기에서 1을 뺀 값

어레이의 크기를 넘어선 경우 중요한 런타임 오류가 발생합니다. 배열 tick[ 2 , 2 ]의 경우 숫자 tick[ 2 , 2 ]배열 요소가 없습니다 .

 

글쎄, 적어도 나는 내가 초보자라는 것을 인정합니다 :)

고맙습니다.

글쎄, "손가락에"에 대해 - 습관입니다. "손가락에", 더 쉽게 인식할 수 있습니다. 그리고 내가 이 언어로 일반적으로 0인 사람에게 이것을 설명했다면, 나는 또한 설명에 내 발가락을 연결해야 할 것입니다 =))

 
Gilmor :

글쎄, 적어도 나는 내가 초보자라는 것을 인정합니다 :)

고맙습니다.

글쎄, "손가락에"에 대해 - 습관입니다. "손가락에", 더 쉽게 인지할 수 있습니다. 그리고 내가 이 언어로 일반적으로 0인 사람에게 이것을 설명했다면, 나는 또한 설명에 내 발가락을 연결해야 할 것입니다 =))

특히 주제 스레드가 초보자를 위한 것이기 때문에 초보자는 부끄럽지 않습니다. 이것은 질문에 대한 답변을 빠르게 얻을 수 있는 몇 안 되는 포럼 중 하나입니다.)

또한 도움말 시작 부분을 읽으십시오. https://docs.mql4.com/en/basis/variables

 
Igor Makanu :

특히 주제 스레드가 초보자를 위한 것이기 때문에 초보자는 부끄럽지 않습니다. 이것은 질문에 대한 답변을 빠르게 얻을 수 있는 몇 안 되는 포럼 중 하나입니다.)

또한 도움말 시작 부분을 읽으십시오. https://docs.mql4.com/en/basis/variables

덕분에.