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

 
Igor Makanu :

이 코드는 작동합니다. 유추하여 수행하십시오.

최소한의 변경 - OrderMagicNumber() 분석을 제거하고 3개의 로그를 추가했습니다.
불행히도 결과는 동일합니다. 홍보 참조 - 첫 번째 스크린샷에서 시작(0에서 시작하지 않는 이유는 명확하지 않음)이지만 두 번째 위치에서는 124에서 99로 점프합니다.

정수 번호 주문()
{
정수 i,res=0,k=OrdersTotal(); 문자열 sy=Symbol();

for(i=0; i<k; i++)
{
log("k = " + k +"; ");
log("나는 = " + 나는 +"; ");
if( 주문 선택 (i,SELECT_BY_POS, MODE_TRADES ))
{
if((OrderSymbol()==sy)) res++; //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
log("res = " + res +"; ");

}
}
반환(res);
}

파일:
test_1.png  6 kb
test_2.png  6 kb
 
Alexey Viktorov :
이 코드는 오류 없이 컴파일됩니까? 난 믿지 않아...
의심되는 것은 무엇입니까? 어쨌든 MQL4에서는 오류가 발생하지 않습니다.
 
Algotrader18 :

(그가 0에서 시작하지 않는 이유는 분명하지 않지만) 2위인 그는 124에서 99로 뛰어올랐습니다.

터미널이 print()의 일부를 "ate"하기 때문에 MQL에서 정보 출력의 우선 순위가 가장 낮기 때문에 Print( ) 전에 Slepp(123)을 추가하면 공백이 없습니다.

법원 기록에도 불구하고 사이클 카운터만 인쇄합니다.

 
Igor Makanu :

터미널이 print()의 일부를 "ate"하기 때문에 MQL에서 정보 출력의 우선 순위가 가장 낮기 때문에 Print() 전에 Slepp(123)을 추가하면 공백이 없습니다.

법원 기록에도 불구하고 사이클 카운터만 인쇄합니다.

이것은 매우 흥미롭습니다. 조금 더 자세히 설명해 주시겠습니까? 이 "먹는" 과정은 어떻게 이루어집니까?

귀하의 답변에서 나는 그것을 "먹었다"는 인상을 받았습니다. 우선 순위가 더 높았기 때문에 로그에 표시되지 않았을 뿐이지만 실제 작업은 모든 주문을 정렬하고 그 중 일부를 삭제하는 것이었습니다. 그리고 나는 어드바이저가 일부를 건너뛰는 것을 알아차렸습니다(이것은 더 이상 가장 낮은 우선순위를 가진 정보의 출력 이 아닙니다). 이유를 이해하기 위해 작업을 단순화하기 시작했고 결과적으로 열거 자체와 로그에 대한 출력만 남았지만 여기에서는 건너뛰는 주문도 볼 수 있습니다. 고문은 여러 주문을 뛰어 넘습니다. 가장 낮은 정보 출력 우선 순위는 0에서 시작하지 않는 출력을 잘 설명하지만, 예를 들어 124에서 99로 점프하는 경우 일관성 없는 출력을 어떻게 설명할 수 있습니까?

"먹었다"가 다른 것을 의미한다면 무엇을 이해하고 싶습니까?
파일:
test_2.png  6 kb
 
neverness :

이것은 훌륭합니다!

소설!

예를 들어, 저는 20년의 경험을 가진 성공적인 거래자입니다.

"입력된 쌍의 마감과 이동 평균 간의 차이"가 필요한 이유를 이해하지 못합니다.

또한 이러한 차이를 기반으로 이동 평균을 만들 수 있습니까? - 공상!

견적을 기반으로 이동 평균을 구축하는 방법을 알고 있습니까? - 그것도 아니요?

그래서 문제가 무엇입니까?

종가에 대한 평균의 차이가 종가의 차이에 대한 평균과 같지 않습니다.

 
Algotrader18 :
의심되는 것은 무엇입니까? 어쨌든 MQL4에서는 오류가 발생하지 않습니다.

1. 코드를 삽입 하는 방법을 배웁니다.

알고트레이더18 :

최소한의 변경 - OrderMagicNumber() 분석을 제거하고 3개의 로그를 추가했습니다.
불행히도 결과는 동일합니다. 홍보 참조 - 첫 번째 스크린샷에서 시작(0에서 시작하지 않는 이유는 명확하지 않음)이지만 두 번째 위치에서는 124에서 99로 점프합니다.

 int NumberOfOrders()
  {
   int i,res= 0 ,k= OrdersTotal (); string sy= Symbol ();
  
   for (i= 0 ; i<k; i++)
     {
       log ( "k = " + k + "; " );
       log ( "i = " + i + "; " );
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
         if (( OrderSymbol ()==sy)) res++;   //if((OrderMagicNumber()==magic_) && (OrderSymbol()==sy)) res++;
         log ( "res = " + res + "; " );
        
        }
     }
   return (res);
  }

2. 로그는 로그입니다???

메모

MathLog() 함수 대신 다음 함수를 사용할 수 있습니다. 로그 () .

MathLog - Математические функции - Справочник MQL4
MathLog - Математические функции - Справочник MQL4
  • docs.mql4.com
MathLog - Математические функции - Справочник MQL4
 
Roman Sharanov :

나는 또한 심각한 결함을 발견했습니다. CopyClose() 호출 이 많이

루프의 통화 쌍 배열에서 인용문을 복사하는 방법을 알려주실 수 있습니까?

이중 배열은 이어야 하지만 MQL은 이를 지원하지 않습니다.

"이중 배열"은 무엇을 의미합니까?

 
Alexey Viktorov :

"이중 배열"은 무엇을 의미합니까?

잘 2 차원

 
Roman Sharanov :

잘 2 차원

CopyClose 가 데이터를 2차원 배열로 복사한다는 내용은 어디에 있습니까? 일반적으로 2차원 배열이 언급된 이유는 무엇입니까?

 
Alexey Viktorov :

CopyClose가 데이터를 2차원 배열로 복사한다는 내용은 어디에 있습니까? 일반적으로 2차원 배열이 언급된 이유는 무엇입니까?

또한 배열에 따옴표 배열을 저장해야 합니다.

루프에서 한 번 복사한 다음 CloseCopy 가 아닌 ArrayCopy를 통해 계산을 수행하려면

사유: