[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 367

 
LOA :


마지막이 아닌 해당 기간 동안 3개의 최고점입니다. 또는 오히려 후자일 필요는 없습니다.

봐: 값이 있는 배열이 있습니다. 이 배열에서 세 개의 최대값을 찾아야 합니다. 시계열 배열에서 마지막이거나 첫 번째일 필요는 없습니다. 세 개의 최대값을 찾으면 됩니다.

1. 어레이를 임시 어레이로 복사합니다(임시 어레이에서 검색할 것입니다):

정수 ArrayCopy ( 개체 &dest[], 개체 소스[], int start_dest=0, int start_source=0, int count=WHOLE_ARRAY)

한 배열을 다른 배열로 복사합니다. 배열은 같은 유형이어야 합니다. double[], int[], datetime[], color[] 및 bool[] 유형의 배열은 동일한 유형의 배열로 복사할 수 있습니다.
복사된 요소의 수를 반환합니다.
옵션:
목적지[] - 대상 배열.
원천[] - 소스 배열.
시작_목적지 - 수신 배열의 시작 인덱스입니다. 기본적으로 시작 인덱스는 0입니다.
시작 소스 - 원래 배열의 시작 인덱스입니다. 기본적으로 시작 인덱스는 0입니다.
세다 - 복사할 요소의 수입니다. 기본적으로 전체 어레이( WHOLE_ARRAY ).


2. 임시 배열에서 최대값을 찾고 있습니다.

정수 ArrayMaximum ( 이중 배열[] , int count=WHOLE_ARRAY, int start=0)

최대값을 가진 요소를 검색합니다. 이 함수는 배열에서 최대 요소의 위치를 반환합니다.
옵션:
정렬[] - 검색할 숫자 배열입니다.
세다 - 검색할 항목 수입니다.
시작 - 검색할 시작 인덱스입니다.


3. 찾은 인덱스를 배열에 저장합니다(예: MassIndexMaxValue[] ).

4. 임시 배열에서 찾은 최대값을 재설정합니다. 거기에 0을 쓰십시오.

5. 다시 임시 배열에서 다음 최대값을 찾고 있습니다(처음 찾은 인덱스는 이미 MassIndexMaxValue[] 에 저장되어 있고 이 최대값의 값은 0으로 설정되어 있음).

임시 배열에서 필요한 최대값 수를 찾을 때까지 이 주기를 계속합니다.

이제 MassIndexMaxValue[] 배열에는 배열에서 원하는 최대값 수의 인덱스가 포함됩니다.
임시 배열의 크기는 검색이 완료된 후 0으로 재설정됩니다. 메모리를 막힐 필요가 없습니다.

그런거...

추신 ... 여기 무릎에 빠르게 스케치했습니다 ... 어딘가에서 실수를 한 것 같습니다. 깨어 있고 아무것도 확인하지 않았지만 기능은 다음과 같습니다.

 void FindMaxValue( double &ms[], int &ind[], int NumMaxValue) {   
   int i, IndMax;
   double tmp[];                       // создаём временный массив
   ArrayResize (ind,NumMaxValue);       // изменяем размер массива индексов максимальных значений под количество макс. значений
   ArrayResize (tmp, ArraySize (ms));     // размер временного массива = размеру вашего массива значений
   ArrayCopy (tmp, ms);                 // копируем ваш массив во временный
   for (i= 0 ; i<NumMaxValue; i++) {     // цикл по количеству искомых максимумов
      IndMax= ArrayMaximum (tmp);         // ищем индекс максимального значения
      ind[i]=IndMax;                   // сохраняем индекс i-го максимального значения
      tmp[IndMax]= 0 ;                   // обнуляем i-е найденное максимальное значение во временном массиве
      }
   ArrayResize (tmp, 0 );                 // обнуляем размер временного массива
   return ;   
}

호출 시:

FindMaxValue(Ваш_Массив_Значений, MassIndexMaxValue, 3 );

... 이전에 정의된 배열 int MassIndexMaxValue[] 는 Your_Array_Values[]에서 발견된 세 개의 최대값의 인덱스를 포함해야 합니다 .

 

거래당 이익 비율과 거래당 손실 비율이 어떻게 계산되는지 이해할 수 없습니다. 말하다?

http://www.assessor.ru/forum/index.php?t=822

 
artmedia70 :

봐: 값이 있는 배열이 있습니다. 이 배열에서 세 개의 최대값을 찾아야 합니다. 시계열 배열에서 마지막이거나 첫 번째일 필요는 없습니다. 세 개의 최대값을 찾으면 됩니다.


Artyom, 대단히 감사합니다!

배열의 최대값을 0으로 만드는 내 아이디어가 정확하고 다른 배열에 복사하여 모든 것을 자세히 그렸습니다. 이제 작은 것을 이해할 것입니다.

블라디미르의 조언에 따라 저는 프로그램 알고리즘부터 시작하여 귀하의 정보를 처리하고 모든 것이 잘 될 것이라고 확신합니다. 선생님들은 훌륭합니다.

기사에 대한 특별한 감사 https://www.mql5.com/en/articles/1357

 

안녕하세요!

맞춤형 지표 에서 Expert Advisor로 신호를 수신하는 방법을 알려주시겠습니까?

iCustom을 사용했지만 올빼미는 여전히 신호를받지 못합니다

 double Signal_I= iCustom ( NULL , 0 , "FL" , 0 , 0 );
 
skyjet :

안녕하세요!

맞춤형 지표에서 Expert Advisor로 신호를 수신하는 방법을 알려주시겠습니까?

iCustom을 사용했지만 올빼미는 여전히 신호를받지 못합니다


아마도 iCustom 표시기 코드가 적합하지 않을 수 있습니다. 질문에 답변할 정보가 너무 적습니다.
 
skyjet :

안녕하세요!

맞춤형 지표에서 Expert Advisor로 신호를 수신하는 방법을 알려주시겠습니까?

iCustom을 사용했지만 올빼미는 여전히 신호를받지 못합니다


다른 지표도 마찬가지인가요? 그렇다면 iCustom() 함수를 잘못 사용하고 있는 것입니다. 그렇지 않은 경우 표시기 코드를 살펴보십시오. 표시기가 표시기 버퍼를 전혀 사용하지 않을 수도 있습니다. 이 코드 는 그래픽 개체의 구성 과 함께 작동합니다.
 

안녕하세요. 기능이 있습니다:

 bool Trade()
{
   if (! IsConnected ())
  {
     Print ( "Связь отсутствует." );
     return (false);
  }

   if (! IsExpertEnabled ())
  {
     Print ( "Торговля экспертами выключена." );
     return (false);
  }
  
   if (DayOfWeek()== 0 || DayOfWeek()== 6 )
  {
     Print ( "В выходные не торгуем." );
     return (false);
  }
  
   if (! IsTradeAllowed ())
  {
     Print ( "Торговля запрещена? WTF???." );
     return (false);
  }
   return (true);
}

그러나 어떤 이유로 작동하지 않습니다. 다음과 같이 int start() 이후 시작 부분에서 EA에서 바로 호출됩니다.

   if (!Trade())
  {
     Sleep ( 5000 );
     return ;
  }

탭에서 Journal 및 Expert Advisor가 성공적으로 로드되었으며 다른 것은 없습니다. "주말에는 거래하지 않습니다"라는 메시지가 표시되어야 합니다. 2011년 11월 26일 - 토요일.

오류는 어디에 있으며 내가 무엇을 잘못하고 있습니까?

 
Roman. :

아마도 iCustom 표시기 코드가 적합하지 않을 수 있습니다. 질문에 답변할 정보가 너무 적습니다.
표시기는 시각화 중에 관리하는 지지선과 저항선을 그립니다 . 교차할 때 표시기 자체는 신호 LT_1 == 1 또는 -1을 제공합니다.
 if ((Close[i] > BuyLevel) 
         {
    
          LT_1= 1 ;
               
         }                                 
       if ((Close[i] < CloseLevel)
         {
           
           LT_1=- 1 ;
               
         }
 
ivan2k2 :

안녕하세요. 기능이 있습니다:

그러나 어떤 이유로 작동하지 않습니다. 다음과 같이 int start() 이후 시작 부분에서 EA에서 바로 호출됩니다.

탭에서 Journal 및 Expert Advisor가 성공적으로 로드되었으며 다른 것은 없습니다. "주말에는 거래하지 않습니다"라는 메시지가 표시되어야 합니다. 2011년 11월 26일 - 토요일.

오류는 어디에 있으며 내가 무엇을 잘못하고 있습니까?


오늘 토요일은 휴무입니다. Expert Advisor를 시작하면 초기화가 수행되지만 종료 및 틱이 없으므로 시작 기능이 시작되지 않습니다(즉, Trade()가 호출되지 않음). 작업의 정확성을 확인하려면 초기화 블록에 이 함수를 호출하거나 테스터에서 테스트해야 합니다.
 
skyjet :
표시기는 시각화 중에 관리하는 지지선과 저항선을 그립니다. 교차할 때 표시기 자체는 신호 LT_1 == 1 또는 -1을 제공합니다.

그런 다음 전혀 걱정하지 마십시오. 거래 기준을 충족하기 위해 칠면조 코드를 전문가에게 전송하면 됩니다. 그런 다음 올빼미에서 이 칠면조에서 전송된 거래 조건에 따라 다음을 통해 포즈를 엽니다. 고문 그리고 그게 다야...