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

 
EVGENII SHELIPOV # :

Alex 사진을 확대하십시오

증가했습니다. 화살표가 아래에서 두 번째 주문의 가격과 끝에서 두 번째의 기준에 맞지 않는 주문의 티켓을 가리키는 것을 정확히 보았습니다. 내 코드를 실행하고 가장 낮은 순서의 티켓을 참조하십시오. 그리고 더 낮은 BUY 주문이 아니라 아래에서 두 번째 주문을 받을 때까지 이 기능을 완료할 수 있습니다.

 
Alexey Viktorov # :

증가했습니다. 화살표가 아래에서 두 번째 주문의 가격과 끝에서 두 번째의 기준에 맞지 않는 주문의 티켓을 가리키는 것을 정확히 보았습니다. 내 코드를 실행하고 가장 낮은 순서의 티켓을 참조하십시오. 그리고 더 낮은 BUY 주문이 아니라 아래에서 두 번째 주문을 받을 때까지 이 기능을 완료할 수 있습니다.

내 질문은 끝에서 두 번째 주문의 티켓을 결정하는 코드의 오류가 어디에 있습니까 ???

 //+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return (penultimate_ticket);
  }
 
EVGENII SHELIPOV # :

내 질문은 끝에서 두 번째 주문의 티켓을 결정하는 코드의 오류가 어디에 있습니까 ???

오류는 주문 가격이 어떤 식으로든 고려되지 않는다는 것입니다.

대화의 어딘가에 전체를 배열에 넣고 티켓을 원하는 수만큼 정렬하도록 하는 조언이 있습니다. 그러나 이에 대한 응답으로이 작업을 수행하는 방법에 대한 이해 부족 ...

이와 같이

 //+------------------------------------------------------------------+
//| Расчет тикета второго снизу ордера BUY в сетке                   |
//+------------------------------------------------------------------+
int GetTicketMaxOrder()
 {
   int total = OrdersTotal (),
      arrSize = 0 ;
   double arr[][ 2 ];
   for ( int cnt = 0 ; cnt < total; cnt++)
   {
     if ( OrderSelect (cnt, SELECT_BY_POS) && OrderSymbol() == Symbol ()) // && OrderMagicNumber() == Magic)
     {
       if (OrderType() == OP_BUY)
       {
        arrSize = ArrayRange (arr, 0 );
         ArrayResize (arr, arrSize+ 1 );
        arr[arrSize][ 0 ] = OrderOpenPrice();
        arr[arrSize][ 1 ] = OrderTicket();
       }
     }
   }
   ArraySort (arr);
   return (( int )arr[ 1 ][ 1 ]);
 }
/*****************************End program****************************/
 
EVGENII SHELIPOV # :

내 질문은 끝에서 두 번째 주문의 티켓을 결정하는 코드의 오류가 어디에 있습니까 ???

 //+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0 ;
     {
       for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--)
        {
         if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
           {
             if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
              {
               if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                   if (OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder() )
                     penultimate_ticket = OrderTicket() ;
                 }
              }
           }
        }
     }
   return (penultimate_ticket);
  }

그리고 또 다른 중대한 실수는 루프에서 순서를 반복하는 동안 함수를 호출한다는 것입니다. 이 함수도 순서대로 반복합니다 ... 그리고 코드 실행이 함수로 돌아올 때 다른 순서가 이미 선택되어 있습니다... 그리고 OrderTicket()은 예상과 완전히 다른 것을 반환합니다 .

 
Alexey Viktorov # :

오류는 주문 가격이 어떤 식으로든 고려되지 않는다는 것입니다.

대화의 어딘가에 전체를 배열에 넣고 티켓을 원하는 수만큼 정렬하도록 하는 조언이 있습니다. 그러나 이에 대한 응답으로이 작업을 수행하는 방법에 대한 이해 부족 ...

이와 같이

Alexey, 로그의 오류에 대해 의견을 말씀해 주시겠습니까?

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: ArraySort 기능의 잘못된 시작 위치 0

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: 'eGriD2.mq4'의 범위를 벗어난 배열(664,18)

2021.11.07 12:17:40.792 2020.01.02 06:00:00 EA의 치명적인 오류로 인해 테스트 통과가 중지되었습니다.


 
EVGENII SHELIPOV # :

Alexey, 로그의 오류에 대해 의견을 말씀해 주시겠습니까?

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: ArraySort 기능의 잘못된 시작 위치 0

2021.11.07 12:17:40.791 2020.01.02 06:00:00 eGriD2 EURUSD,M5: 'eGriD2.mq4'의 범위를 벗어난 배열(664,18)

2021.11.07 12:17:40.792 2020.01.02 06:00:00 EA의 치명적인 오류로 인해 테스트 통과가 중지되었습니다.


이것은 내 코드의 오류가 아닙니다. 저는 영어를 모릅니다. 이 사이트의 내장 번역기를 사용합니다. 그가 번역하는 방법은 다음과 같습니다.

ArraySort 함수의 잘못된 시작 위치 0 - ArraySort 함수의 잘못된 시작 위치 0

'eGriD2.mq4'의 범위를 벗어난 배열(664,18) — 'eGriD2.mq4'의 범위를 벗어난 배열(664,18)

EA의 심각한 오류로 인해 테스트 통과가 중지됨 - EA의 심각한 오류로 인해 테스트 통과가 중지됨

따라서 코드는 스튜디오에 있습니다.

추신; 하지만 주문이 2개 미만일 때 이 함수를 호출하면 이러한 오류가 발생합니다. ......에 대한 보호는 하지 않았지만, 분명히 필요했던 것 같다.

바로 이런 이유로 누군가를 돕고 싶은 마음이 완전히 부족합니다 ... 당신은 내 팁의 의도적 인 적용에 의존하고 있지만 ....... ...

 
안녕하세요. n 막대에 대한 최소/최대 검색을 구현하는 방법을 알려주십시오.
 
Snajper007 # :
안녕하세요. n 막대에 대한 최소/최대 검색을 구현하는 방법을 알려주십시오.
iHighest

i최저

 
MakarFX

또 다른 질문입니다. 프랙탈을 그리는 지표가 있습니다. n개의 막대에 대한 신호의 존재를 확인하는 방법은 무엇입니까?

 
Snajper007 # :

또 다른 질문입니다. 프랙탈을 그리는 지표가 있습니다. n개의 막대에 대한 신호의 존재를 확인하는 방법은 무엇입니까?

우선 프랙탈을 그리는 지표에 따라 다릅니다.