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

 
MakarFX # :

"-1"이 마음에 들지 않으면 다음을 수행할 수 있습니다.

아니오, 그렇게 할 수 없습니다. 이와 같이 배열에 액세스하면 프로그램이 충돌합니다.

최상의 경우 내부 배열에 액세스하면 필요한 데이터를 놓치거나 루프에서 해당 데이터에 도달하지 못할 수 있습니다.

 
Nikolay Ivanov # :

일반적으로 여기에서는 모든 것이 간단합니다. 고유한 것은 서로 다른 마술사 간에 일치하지 않는 모든 주문을 요약합니다..

예를 들어 주문이 3개 있습니다.

첫 번째 반복 매직 = 1 고유 = 0, 반복이 끝날 때 고유 = 2

두 번째 반복 마법 = 2   고유 = 2, 반복 종료 시   유일한 것 = 3

3>=모든 주문의 수이므로 while 루프가 중단됩니다. 그리고 magic =3은 확인되지 않았습니다... Total magic again =2 등등 모두에 대해..

첫 번째 주문은 기본적으로 매직 = 1이 주어지며 루프가 작동합니다.

반복 시작 매직 = 1 고유 = 0, 끝에서 (마법 = 1인 주문이 이미 하나 있을 때) 매직은 여전히 1이고 고유 = 0
두 번째 반복 마법 = 2 고유 = 0, 마지막에 마법 = 2, 고유 = 1(일치 없음) 및 rethorn에 의해 2차 마법 = 2에 할당됩니다.
3차도 똑같았어야...

전체 프로세스를 인쇄하고 싶었지만 문제가 발생했습니다.

 int GetMagic()
{
   int magic = 0 ;
   int unique = 0 ;
   if ( OrdersTotal ()){
     do {
        magic++;
         for ( int i = OrdersTotal () - 1 ; i >= 0 ; i --){
           if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
             if (magic != OrderMagicNumber())
              unique ++;
          }
        }
         Print (" MAGIC ", magic, " | UNIQUE ", unique)
      } while (unique < OrdersTotal ());
  } else return (magic + 1 );

   return (magic);
}

-----------------------------------

'endless cycle.mq4'     endless cycle.mq4       1        1
'}' - semicolon expected        endless cycle.mq4       49        7
' else ' - ' while ' expected       endless cycle.mq4       50        5
' else ' - illegal ' else ' without matching ' if '   endless cycle.mq4       50        5
' OnTick ' - function declarations are allowed on global, namespace or class scope only   endless cycle.mq4       60        6
' OnTick ' - function already defined and has body        endless cycle.mq4       60        6
   see previous declaration of function ' OnTick '        endless cycle.mq4       60        6
'}' - unexpected end of program endless cycle.mq4       63        1
6 errors, 0 warnings             7        1
 
Nerd Trader # :

첫 번째 주문은 기본적으로 매직 = 1이 주어지며 루프가 작동합니다.

반복 시작 매직 = 1 고유 = 0, 끝에서 (마법 = 1인 주문이 이미 하나 있을 때) 매직은 여전히 1이고 고유 = 0
두 번째 반복 마법 = 2 고유 = 0, 마지막에 마법 = 2, 고유 = 1(일치 없음) 및 rethorn에 의해 2차 마법 = 2에 할당됩니다.
3차도 똑같았어야...

전체 프로세스를 인쇄하고 싶었지만 문제가 발생했습니다.

 int GetMagic()
{
   int magic = 0 ;
   int unique = 0 ;
   if ( OrdersTotal ()){
     do {
        magic++;
         for ( int i = OrdersTotal () - 1 ; i >= 0 ; i --){
           if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
             if (magic != OrderMagicNumber())
              unique ++;
          }
        }
         Print ( " MAGIC " , magic, " | UNIQUE " , unique) ; // <---
      } while (unique < OrdersTotal ());
  } else return (magic + 1 );

   return (magic);
}


 
Artyom Trishkin # :

더 많은 모든 프로그래밍 언어 를 목표 삼으십시오.

간단합니다. 프로그래밍 언어에서 카운트다운은 0부터 시작합니다. 배열의 첫 번째 셀의 인덱스는 0입니다. 따라서 이를 포함하여 0까지 루프백해야 합니다. 저것들. >=0

OrdersTotal()은 예를 들어 10을 제공합니다. 그리고 10에서 루프를 시작합니다. 그리고 배열의 마지막 인덱스는 9입니다(0에서 시작한다는 것을 기억하십니까?). 그리고 존재하지 않는 배열 셀에 접근하면 어떻게 될까요? 맞습니다 . 어레이에 할당되지 않은 메모리 영역으로 올라간 이후 심각한 오류로 인해 프로그램이 충돌했습니다.

이것은 바로 견고한 목발 입니다. 읽고, 연구하면 모든 것이 당신에게 올 것입니다.

감사해요. 나는 그것을 의미하지 않았다. 오픈 라이센스라면 모든 것이 mql에 대해 용서될 수 있습니다. 그래서, 나는 꼼짝 않고 있습니다. 글쎄, 예를 들어 NormalizeDouble 기능에서 플래그를 설정하고 비트 컷오프 또는 산술 반올림을 사용하는 것이 가능한 것 같았습니다. 또는 예를 들어 결제 또는 구매에 대해서만 열린 위치의 수를 반환하도록 위치 작업 기능을 확장할 수 있습니다. 또한 더 자세한 도움말을 작성할 수 있습니다. 그러나 그것은 아마추어의 생각일 뿐입니다. 그리고 마지막 말이 가혹하게 느껴졌다면 사과드립니다.
 

수많은 무료 및 우수한 C/C++ 과정이 있습니다.

Mql은 그들과 가깝고 자유롭게 배울 수 있습니다. 다행히 깊은 지식은 필요하지 않습니다. 그러나 적어도 언어의 구문과 알고리즘의 기본 기초.

그렇지 않으면 플랫폼 및 알고리즘에 대한 상담 대신 초등학교 수준의 대화가 주제의 일부 말도 안되는 것으로 판명되었습니다. 주기란 무엇이며 인덱스가 0인 이유

예를 들어 intuit.ru 사이트가 있습니다. C 및 알고리즘에 대한 과정이 있으며 최대 몇 주 동안 시간을 할애하십시오. 동시에 종이 한 장을 얻을 수 있습니다 :-)

 
Maxim Kuznetsov 언어의 구문과 알고리즘의 기본 기초.

그렇지 않으면 플랫폼 및 알고리즘에 대한 상담 대신 초등학교 수준의 대화가 주제의 일부 말도 안되는 것으로 판명되었습니다. 주기란 무엇이며 인덱스가 0인 이유

예를 들어 intuit.ru 사이트가 있습니다. C 및 알고리즘에 대한 과정이 있으며 최대 몇 주 동안 시간을 할애하십시오. 동시에 종이 한 장을 얻을 수 있습니다 :-)

이와 같이?


 
Artyom Trishkin # :

OrdersTotal()은 예를 들어 10을 제공합니다. 그리고 10에서 루프를 시작합니다. 그리고 배열의 마지막 인덱스는 9입니다(0에서 시작한다는 것을 기억하십니까?). 그리고 존재하지 않는 배열 셀에 접근하면 어떻게 될까요? 맞습니다 . 어레이에 할당되지 않은 메모리 영역으로 올라간 이후 심각한 오류로 인해 프로그램이 충돌했습니다.

조금 수정하겠습니다.. 치명적인 오류는 없고, 부울 OrderSelect만 false를 반환합니다.. 그뿐입니다. 하지만 물론 피하는 것이 좋습니다.. 코드의 기능을 잘못 사용하면 어렵기 때문입니다. 가능한 잼을 예측하기 위해 ..


괴상한 상인   # :

첫 번째 주문은 기본적으로 매직 = 1이 주어지며 루프가 작동합니다.

반복 시작 매직 = 1 고유 = 0, 끝에서 (마법 = 1인 주문이 이미 하나 있을 때) 매직은 여전히 1이고 고유 = 0
2차 반복 매직 = 2 unique = 0, 마지막에 magic = 2, unique = 1(일치 없음) 및 레토르트에 의해 2차에 매직 = 2가 할당됩니다.
3차도 똑같았어야...

나는 단지 고유 한 것이 매우 빠른 속도로 채워지고 한계에 도달하고 마법이 거의 성장하지 않는 것을 보았습니다.

이 컨텍스트에서 솔루션을 찾기 위해 인쇄하지만 문제를 다시 공식화하는 것이 좋습니다. 예를 들어, 사이클에서 주문의 최대 마법을 찾아 +1로 반환하면 올바른 간단한 솔루션이 될 것입니다.

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.10.19
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 

이 작업을 수행할 수 있습니다. 코드는 필요에 따라 호출되므로 가중치로 인해 문제가 발생하지 않습니다.

테스트를 위해 구매/판매를 사용했습니다.

 //+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
{
   Print (GetMagic());
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int GetMagic()
{
//Если должен быть открыт стопордер и если есть уже открытые или отложенные
//ордера, то возможно некоторые с маджиком, это надо проверить и сгенерировать
//для нашего ордера уникальный маджик
   int arr[];
   int n=- 1 ;
   int OT= OrdersTotal ();
   for ( int i= 0 ; i<OT; i++) {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) {
       if (OrderType() == OP_SELL || OrderType() == OP_BUY) {
         if (ArraySearchInt(arr, OrderMagicNumber())==- 1 ) {
          n++;
           ArrayResize (arr,n+ 1 );
          arr[n]=OrderMagicNumber();
        }
      }
    }
  }
   ArraySort (arr);
  OT= ArraySize (arr);
   for ( int i= 0 ; i<OT; i++)
     if (arr[i]!=i) return i;
   return OT;
}
//-- удаляет копии с массива
int ArraySearchInt( int & m[], int e)
{
   for ( int i= 0 ; i< ArraySize (m); i++) {
     if (m[i]==e) return (i);
  }
   return (- 1 );
}
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

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

비탈리 무지첸코 , 2021.10.19 23:08

 int GetMagic()
{
   int magic = 0 ;
   int unique = 0 ;
   if ( OrdersTotal ()){
     do {
        magic++;
         for ( int i = OrdersTotal () - 1 ; i >= 0 ; i --){
           if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
             if (magic != OrderMagicNumber())
              unique ++;
          }
        }
         Print ( " MAGIC " , magic, " | UNIQUE " , unique) ; // <---
      } while (unique < OrdersTotal ());
  } else return (magic + 1 );

   return (magic);
}


세미온 세미노비치.
Nikolay Ivanov # :

조금 수정하겠습니다.. 치명적인 오류는 없고, boolean OrderSelect만 false를 반환합니다.. 그뿐입니다. 하지만 물론 피하는 것이 좋습니다.. 왜냐하면 코드의 기능을 잘못 사용하면 어렵기 때문입니다. 가능한 잼을 예측하기 위해 ..


나는 고유의 채우기 가 매우 빠르고 한계에 도달하고 마법이 간신히 자라고 있음을 알 수 있습니다.

이 컨텍스트에서 솔루션을 찾기 위해 인쇄 하지만 문제를 다시 공식화하는 것이 좋습니다. 예를 들어, 사이클에서 주문의 최대 마법을 찾아 +1로 반환하는 것이 올바른 간단한 솔루션이 될 것입니다.

이 옵션이 실패할 경우 최후의 수단입니다. 그 사이에 인쇄물이 나왔습니다.

 int GetMagic()
{
   int magic = 0 ;
   int unique = 0 ;
   if ( OrdersTotal ()){
     do {
        magic++;
         for ( int i = OrdersTotal () - 1 ; i >= 0 ; i --){
           if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)){
             if (magic != OrderMagicNumber()){
              unique ++;
               Print ( " MAGIC " , magic, " | UNIQUE " , unique);
            }
          }
        }
      } while (unique < OrdersTotal ());
  } else return (magic + 1 );

   return (magic);
}
------------------------------------------------

2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 10 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 9
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 8
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 7
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 6
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 5
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 4
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 9 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 8
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 7
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 6
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 5
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 4
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 8 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 7
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 6
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 5
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 4
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 7 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 6
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 5
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 4
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 6 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 5
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 4
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 5 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 4
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 4 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 3
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 3 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 2
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 1 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 2 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5:  MAGIC 2 | UNIQUE 1
2021.10 . 20 02 : 02 : 10.841 2021.01 . 04 00 : 01 : 00   endless cycle EURUSD,M5: open # 1 buy 0.01 EURUSD at 1.22405 ok
2021.10 . 20 02 : 02 : 10.827 2021.01 . 04 00 : 00 : 00   endless cycle test started

 
Vitaly Muzichenko # :

이 작업을 수행할 수 있습니다. 코드는 필요에 따라 호출되므로 가중치로 인해 문제가 발생하지 않습니다.

테스트를 위해 구매/판매를 사용했습니다.

내일 봐야겠다, 지금은 파고들 힘이 없다.
사유: