메타트레이더4 테스터에서 테스트할 때 수동으로 포지션을 열 수 있습니까? 계산기에서 포인트를 계산하지 않고 버튼을 누르면 주문 열기 창이 뜨고 데이터를 입력하고 F12를 누르면 테스터 자체가 고문이 열었을 때의 상태로 간주합니다. 아마도 이것에 대한 일종의 기성 프로그램이있을 것입니다. 검색하여 찾지 못했습니다.
1: 레벨이 있고 가격이 이 레벨과 같으면 주문을 엽니다. 문제는 가격이 이 수준을 통과할 수 있는지, 어떻게든 빠르게 날아가 내가 가지고 있는 수준과 같지 않은지, 또는 GAP가 필요한 곳, 즉 수준에서 주문을 열 것인지 여부입니다.
2: 로그에서 오류가 발생합니다. 오류가 무엇을 의미하는지 알고 싶습니다. 알려주세요. [B]1-Signal-failed parse 신호,[/B] [B]2-DataCenter 연결 실패 [2] 및 [6][/B] 3-(정확히 기억나지 않지만 순서를 수정할 때, 그것은 완전히 비활성화되었다고 말합니다) ? 이러한 경우 또는 다른 경우에 해야 할 일을 알려주세요. 다시 한 번 감사드립니다!
-변수 Bid(0.86084)의 값에서 변수 massiv[S](0.85375)의 값을 뺍니다.
- 결과 차이 0.00709는 상수 0과 비교됩니다.
- 차이가 > 0인 경우 - if 문의 본문이 제어되지 않고 주문이 열리지 않습니다.
-if 차이 <= 0 - if 문의 본문에서 제어가 수신되고 주문이 열립니다.
ArrayBsearch(massiv, value, WHOLE_ARRAY , 0, MODE_ASCEND) 함수 의 실행을 상상한 방법
HELP: 배열의 첫 번째 차원에서 처음 발견된 요소의 인덱스를 반환합니다.
배열에 지정된 값을 가진 요소가 없으면 함수는 필요한 값이 있는 요소 중 가장 낮은 값의 인덱스를 반환합니다.
-함수는 마지막 틱의 가격과 동일한 값을 얻습니다( 입찰가 -0.86084).
- 함수는 가장 작은 값에서 가장 큰 값까지 배열의 값을 반복합니다. - 배열 값과 값 값 간에 완전한 일치를 찾지 못합니다.
- 값0.86084 가 배열에 없기 때문에 함수는 배열의 가장 가까운 낮은값을 반환합니다. 0.820864(첫 번째), 0.81074, 0.85375 , 0.80084, 0.81084, 0.86088 (마지막) 0.85375에 가장 가까운 값0.86084더 낮은 값.0.85375와0.86088사이 는 원하는 값 = 0.86084입니다.
ArrayBsearch() EVERYWHERE 함수가 0(요소의 인덱스로)을 반환하는 것을 봅니다. 숫자 1.0408은 배열의 0번째 셀에 있습니다. 코드로 돌아가 보겠습니다.
if ( ( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 ))
이제 얻은 변수 값을 이 조건으로 대체합니다(그림에서 Bid는 0.8-0.9 이내, 이 범위의 최대값은 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). 조건이 제대로 충족되었습니다!!! 어레이를 채우는 데 오류가 있는지 확인하십시오. 아마도 당신은 ArrayBsearch() 함수의 이 지점에 주의를 기울이지 않았을 것입니다:
참고 : 이진 검색은 정렬된 배열만 처리합니다. ArraySort() 함수는 숫자 배열을 정렬하는 데 사용됩니다.
PS Print는 그림으로 제공하는 것이 아니라 터미널 창에서 바로 이 인쇄(10-20줄이면 충분)의 여러 줄(SHIFT 사용 - 수행 방법을 모르는 경우)을 동시에 선택하여 제공하는 것이 바람직합니다. 선택 항목을 복사하고 SRC 버튼을 사용하여 코드로 게시물에 붙여넣습니다.
PPS 방금 명백한 구문 오류를 발견했습니다. 이 줄은 start() 함수 외부(앞)로 이동해야 합니다.
ArrayBsearch() EVERYWHERE 함수가 0(요소의 인덱스로)을 반환하는 것을 봅니다. 숫자 1.0408은 배열의 0번째 셀에 있습니다. 코드로 돌아가 보겠습니다.
이제 얻은 변수 값을 이 조건으로 대체합니다(그림에서 Bid는 0.8-0.9 이내, 이 범위의 최대값은 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). 조건이 제대로 충족되었습니다!!! 어레이를 채우는 데 오류가 있는지 확인하십시오. 아마도 당신은 ArrayBsearch() 함수의 이 지점에 주의를 기울이지 않았을 것입니다:
참고 : 이진 검색은 정렬된 배열만 처리합니다. 숫자형 배열을 정렬하려면 ArraySort() 함수를 사용하십시오.
이진 검색이 무엇을 의미하는지 잘 모르겠습니다. 2차원 배열에서 검색합니까? 하지만 하나가 있습니다.
무슨 일이 일어나고 있는지 이해하려면 계산을 인쇄해야 합니다.
그리고 결과를 분석합니다.나는 내가 뭔가를 놓치고 있다는 것을 깨달았다.
if 헤더에서 조건 실행을 상상한 방법
- 프로그램은 Bid 변수(0.86084)의 값을 받습니다.
-변수 Bid(0.86084)의 값에서 변수 massiv[S](0.85375)의 값을 뺍니다.
- 결과 차이 0.00709는 상수 0과 비교됩니다.
- 차이가 > 0인 경우 - if 문의 본문이 제어되지 않고 주문이 열리지 않습니다.
-if 차이 <= 0 - if 문의 본문에서 제어가 수신되고 주문이 열립니다.
ArrayBsearch( massiv, value, WHOLE_ARRAY , 0, MODE_ASCEND) 함수 의 실행을 상상한 방법
HELP: 배열의 첫 번째 차원에서 처음 발견된 요소의 인덱스를 반환합니다.
배열에 지정된 값을 가진 요소가 없으면 함수는 필요한 값이 있는 요소 중 가장 낮은 값의 인덱스를 반환합니다.
-함수는 마지막 틱의 가격과 동일한 값을 얻습니다( 입찰가 -0.86084).
- 함수는 가장 작은 값에서 가장 큰 값까지 배열의 값을 반복합니다. - 배열 값과 값 값 간에 완전한 일치를 찾지 못합니다.
- 값 0.86084 가 배열에 없기 때문에 함수는 배열의 가장 가까운 낮은 값을 반환합니다. 0.820864(첫 번째), 0.81074, 0.85375 , 0.80084, 0.81084, 0.86088 (마지막) 0.85375 에 가장 가까운 값 0.86084 더 낮은 값. 0.85375와 0.86088 사이 는 원하는 값 = 0.86084입니다.
===================================================== ===================================================
Massiv[S] 요소의 값 외에도, print 함수의 매개변수로 massiv[S-1] 및 massiv[S+1]도 있습니다 . 즉, massiv[S](0.85375) 1의 값은 다음과 같습니다. 먼저 뺀 다음 1을 더합니다.
if 헤더(또는 ArrayBsearch ())에서 먼저 massiv[S] 값에서 1을 뺀 다음 1을 더한 다음 MQL 교과서를 읽지 않았다는 사실에 대해 읽지 않았습니다.
이 점에 대해 설명해 주시거나 링크를 주시면 감사하겠습니다.
고맙습니다.
Massiv[S] 요소의 값 외에도, print 함수의 매개변수로 massiv[S-1] 및 massiv[S+1]도 있습니다 . 즉, massiv[S](0.85375) 1 값에서 먼저 뺀 다음 1을 더합니다.
if 헤더(또는 ArrayBsearch ())에서 먼저 massiv[S] 값에서 1을 뺀 다음 1을 더한 다음 MQL 교과서를 읽지 않았다는 사실에 대해 읽지 않았습니다.
이 점을 저에게 설명하거나 링크를 주시면 감사하겠습니다.
고맙습니다.
이 링크에서 인쇄하십시오.
http://clip2net.com/s/4MRjJe
는 사실에 주목했다.
- massiv[0]의 값(아마도 [S])은 배열이 시작되는 첫 번째 값입니다.
- massiv [1](아마도 [S+1] )의 값은 배열의 두 번째 값입니다. 배열이 시작하는 값을 따릅니다.
-이 값은 PRINT 가 트리거될 때마다 반복됩니다.
============================================
- 2000년에는 가격 값이 점 뒤에 4자리 더 추가되었습니다.
- 차트의 테스터에서 - 5자
- 테스터의 결과 - 5자
- 테스터 내 매거진 내 인쇄물 - 4자
그리고 배열에 5개의 문자가 있습니다.
질문 - 프로그램은 몇 글자를 읽습니까?
이 링크에서 인쇄하십시오.
https://www.mql5.com/go?link=http://clip2net.com/s/4MRjJe
거기에서 뭔가 봤어???
ArrayBsearch() EVERYWHERE 함수가 0(요소의 인덱스로)을 반환하는 것을 봅니다. 숫자 1.0408은 배열의 0번째 셀에 있습니다. 코드로 돌아가 보겠습니다.
이제 얻은 변수 값을 이 조건으로 대체합니다(그림에서 Bid는 0.8-0.9 이내, 이 범위의 최대값은 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). 조건이 제대로 충족되었습니다!!! 어레이를 채우는 데 오류가 있는지 확인하십시오. 아마도 당신은 ArrayBsearch() 함수의 이 지점에 주의를 기울이지 않았을 것입니다:
참고 : 이진 검색은 정렬된 배열만 처리합니다. ArraySort() 함수는 숫자 배열을 정렬하는 데 사용됩니다.
PS Print는 그림으로 제공하는 것이 아니라 터미널 창에서 바로 이 인쇄(10-20줄이면 충분)의 여러 줄(SHIFT 사용 - 수행 방법을 모르는 경우)을 동시에 선택하여 제공하는 것이 바람직합니다. 선택 항목을 복사하고 SRC 버튼을 사용하여 코드로 게시물에 붙여넣습니다.
PPS 방금 명백한 구문 오류를 발견했습니다. 이 줄은 start() 함수 외부(앞)로 이동해야 합니다.
#include <MASSIV.mqh>
는 사실에 주목했다.
- 테스터 내 매거진 내 인쇄물 - 4자
문서 읽기 https://docs.mql4.com/ru/common/print
배열은 Print() 함수에 전달할 수 없습니다. 배열은 요소별로 인쇄되어야 합니다.
더블 데이터는 도트 뒤에 소수점 4자리로 출력됩니다. 정밀도를 높이려면 DoubleToStr() 함수를 사용해야 합니다.
거기에서 뭔가 봤어???
ArrayBsearch() EVERYWHERE 함수가 0(요소의 인덱스로)을 반환하는 것을 봅니다. 숫자 1.0408은 배열의 0번째 셀에 있습니다. 코드로 돌아가 보겠습니다.
이제 얻은 변수 값을 이 조건으로 대체합니다(그림에서 Bid는 0.8-0.9 이내, 이 범위의 최대값은 0.9): if (0.9000 - 1.0408 <= 0) OrderSend(). 조건이 제대로 충족되었습니다!!! 어레이를 채우는 데 오류가 있는지 확인하십시오. 아마도 당신은 ArrayBsearch() 함수의 이 지점에 주의를 기울이지 않았을 것입니다:
참고 : 이진 검색은 정렬된 배열만 처리합니다. 숫자형 배열을 정렬하려면 ArraySort() 함수를 사용하십시오.