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

 

누구든지 이 배열과 같은 것을 사용하는 방법에 대한 다이어그램을 제안할 수 있습니까?

 int array[ 15 ]= { 0 , 0 , 5 , 5 , 5 , 1 , 9 , 9 , 9 , 0 , 2 , 2 , 1 , 0 , 0 };

행 3 이상의 배열에서 숫자를 가져옵니다. 즉, 적절한 값 "5" 및 "9"

유형을 얻을 필요가

값1=9;

값2=5;

또는 배열 값[]={9,5};

두 번째 날 나는 정신을 차리고 있는 동안 계획을 이해할 수 없습니까?

 
Fast235 :

누구든지 이 배열과 같은 것을 사용하는 방법에 대한 다이어그램을 제안할 수 있습니까?

행 3 이상의 배열에서 숫자를 가져옵니다. 즉, 적절한 값 "5" 및 "9"

유형을 얻을 필요가

값1=9;

값2=5;

또는 배열 값[]={9,5};

두 번째 날 나는 정신을 차리고 있는 동안 계획을 이해할 수 없습니까?

스케치했지만 이마로 결정했습니다. 일반적으로 작동하지만 내 솔루션이 마음에 들지 않았습니다.

 //+------------------------------------------------------------------+
void OnStart ()
{
   int array[ 15 ] = { 0 , 0 , 5 , 5 , 5 , 1 , 9 , 9 , 9 , 0 , 2 , 2 , 1 , 0 , 0 };
   int arrrepeat[];
   getRepeatNumbers(array, arrrepeat);
   ArrayPrint (arrrepeat);
}
//+------------------------------------------------------------------+
void getRepeatNumbers( const int &inArr[], int &result[])
{
   ArrayFree (result);
   for ( int i = 0 ; i < ArraySize (inArr) - 1 ; i++)
   {
       if (getRepeatCount(inArr, i) > 1 )
      {
         int sz = ArraySize (result);
         ArrayResize (result, sz + 1 );
         result[sz] = inArr[i];
      }
   }
}
//+------------------------------------------------------------------+
int getRepeatCount( const int &arr[], const int pos)
{
   int result = 0 ;
   for ( int i = pos + 1 ; i < ArraySize (arr) - 1 && arr[i] == arr[pos]; i++)
   {
      result++;
   }
   return (result);
}
//+------------------------------------------------------------------+

2020.09.10 11:51:26.323 tst (EURUSD,M5) 5 9

 
Igor Makanu :

스케치했지만 이마로 결정했습니다. 일반적으로 작동하지만 내 솔루션이 마음에 들지 않았습니다.

2020.09.10 11:51:26.323 tst (EURUSD,M5) 5 9

너무 많은 조치 감사합니다

여전히 루프에서 솔루션을 찾고 싶습니다. 지금 은 계속 문 을 사용하겠습니다. 그리고 휴식 견본

이것은 각각의 새 막대 prev_calculate-100의 표시기 버퍼에서 가져와야 합니다.

 
Fast235 :

너무 많은 조치 감사합니다

여전히 루프에서 솔루션을 찾고 싶습니다. 지금 은 계속 문 을 사용하겠습니다. 그리고 휴식 견본

이것은 각각의 새 막대 prev_calculate-100의 표시기 버퍼에서 가져와야 합니다.

부피가 크지 않고 마음에 들지 않았습니다. 다른 옵션을 찾지 않았습니다 - 나는 항상 이것을합니다

두 번째 함수의 루프를 첫 번째 함수의 본문에 추가합니다. .... 더 적은 제스처가 있습니다.


휴식 시간이 있어도, 없어도 마찬가지입니다. 이 작업은 2주기로 해결됩니다. 하지만 이것은 정확하지 않습니다! - 결정하다 ;)

 
Igor Makanu :

부피가 크지 않고 마음에 들지 않았습니다. 다른 옵션을 찾지 않았습니다 - 나는 항상 이것을합니다

두 번째 함수의 루프를 첫 번째 함수의 본문에 추가합니다. .... 더 적은 제스처가 있습니다.


휴식 시간이 있어도, 없어도 마찬가지입니다. 이 작업은 2주기로 해결됩니다. 하지만 이것은 정확하지 않습니다! - 결정하다 ;)

알아내도록 노력하겠습니다 가능하면 글을 쓰겠습니다

 
Fast235 :

알아내도록 노력하겠습니다 가능하면 글을 쓰겠습니다

한 번에 해결됨)))
 
Igor Makanu :

부피가 크지 않고 마음에 들지 않았습니다. 다른 옵션을 찾지 않았습니다 - 나는 항상 이것을합니다

두 번째 함수의 루프를 첫 번째 함수의 본문에 추가합니다. .... 더 적은 제스처가 있습니다.


휴식 시간이 있어도, 없어도 마찬가지입니다. 이 작업은 2주기로 해결됩니다. 하지만 이것은 정확하지 않습니다! - 결정하다 ;)

대기열에 3개 대신 4개의 "9"가 있으면 오류가 발생합니다. 결과는 다음과 같습니다.

5 9 9 2


 
Fast235 :

대기열에 3개 대신 4개의 "9"가 있으면 오류가 발생합니다. 결과는 다음과 같습니다.

5 9 9 2


내 결정이 마음에 들지 않는다고 말했어

다시 쓰기에는 너무 게으르다

google "배열 찾기 중복"-뭔가가 있다고 생각합니다.

 
Fast235 :

누구든지 이 배열과 같은 것을 사용하는 방법에 대한 다이어그램을 제안할 수 있습니까?

행 3 이상의 배열에서 숫자를 가져옵니다. 즉, 적절한 값 "5" 및 "9"

유형을 얻을 필요가

값1=9;

값2=5;

또는 배열 값[]={9,5};

두 번째 날 나는 정신을 차리고 있는 동안 계획을 이해할 수 없습니까?

int qty[10]; // счётчики по цифрам

int total; // всего элементов в исходном массиве arr[]

int code=arr[0]; // текущая цифра

int count=1; // кол-во повторов

for(int i=1;i<total;i++) {

if (arr[i]!=code) { if (count>qty[code]) qty[code]=count;  code=arr[i]; count=1;}

        else count++;

}

if (count>qty[code]) qty[code]=count; 

/// в массиве qty - требуемое

추가하다. arr[] 요소의 허용 가능성에 대한 검사(숫자임)는 취향에 추가

 

모두 좋은 하루!
mql4를 사용하여 MT-4 테스터에서 알고리즘을 테스트하고 있습니다. 소수점 이하 5자리로 입찰가를 기록하려면 Print() 함수가 필요합니다. 그리고 어떤 이유로 4자만 표시합니다. 다섯 번째 숫자를 추가하기 위해 NormalizeDouble(Bid, Digits ) 함수를 사용했지만 결과는 동일합니다.

내 실수를 수정하는 방법을 알려주십시오.
여기 내 코드가 있습니다.

무효 OnTick()
{
Print("=======입찰가 ======= ",NormalizeDouble(입찰가, 자릿수 ) );

}


동시에 Print()를 사용 하여 주문을 열고 닫는 가격(SL 및 TP로)을 인쇄하면 Print()는 NormalizeDouble( ) 의 도움 없이도 가격을 5자리로 인쇄합니다. 기능, 그리고 다른 기능의 도움 없이.
도움을 주셔서 감사합니다.