MA 피드 축적 감지를 알고리즘화하는 방법은 무엇입니까? - 페이지 15

 

질문이 제거되었습니다. 오류는 Expert Advisor에서 언로드할 때 클래스에 더 많은 제어 매개변수를 추가했다는 것입니다!

좋은 하루, 말해주세요 - 무엇을 잡지 못했습니까?

데이터를 .bat 에 업로드한 다음 업로드하지만 첫 번째 레코드만 치고 데이터가 일치하지 않습니다.


코드의 의미는 -

지시자

- 파일에 있는 경우 새 데이터를 추가합니다.

고문

- 수업에 데이터를 업로드합니다.


표시기에서 다음과 같이로드합니다.

 //+------------------------------------------------------------------+
//| Выгружаю данные с файла если он есть                             |
//+------------------------------------------------------------------+
void TextCsv0( int size)
  {
   ArrayFree (cand_buff);
   ArrayResize (cand_buff, 0 );
   long count= FileLoad ( "test.bin" ,cand_buff);
   if (count!=- 1 )
     {
       for ( int i= 0 ; i<count; i++)
         PrintFormat ( "%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u" ,
                     TimeToString (cand_buff[i].time, TIME_DATE | TIME_SECONDS ),
                     cand_buff[i].bar,cand_buff[i].period,cand_buff[i].praceMA);
     }
   TextCsv1(size,( int )count);
  }
//+------------------------------------------------------------------+
//| Загружаю новые данные                                            |
//+------------------------------------------------------------------+
void TextCsv1( int size, int count)
  {
   int _count= 0 ;
   if (count==- 1 ) count= 0 ;
   for ( int i= 0 ; i<size; i++)
       if (TextCsv2(count,i)== true )
        {
         ArrayResize (cand_buff,count+( int )_count+ 1 );
         cand_buff[count+_count].period=Alt[i].period;
         cand_buff[count+_count].bar=Alt[i].bar;
         cand_buff[count+_count].praceMA=Alt[i].praceMA;
         cand_buff[count+_count].time=Alt[i].time;
         cand_buff[count+_count].High=Alt[i].High;
         cand_buff[count+_count].Low=Alt[i].Low;
         cand_buff[count+_count].type=Alt[i].type;
         _count++;
        }
   TextCsv(size,_count,count);
  }
//+------------------------------------------------------------------+
//| Проверка на новые данные                                         |
//+------------------------------------------------------------------+
bool   TextCsv2( long count, int i)
  {
   bool fl= true ;
   for ( int j=( int )count- 1 ; j>= 0 ; j--)
       if (cand_buff[j].period==Alt[i].period)
         if (cand_buff[j].time==Alt[i].time)
             return ( false );
   return ( true );
  }
//+------------------------------------------------------------------+
//| Загрузка                                                         |
//+------------------------------------------------------------------+
void TextCsv( int size, int _count, int count)
  {
//--- откроем файл для записи массива структуры в файл (если его нет, то создастся автоматически)
   ResetLastError ();
   int file_handle= FileOpen ( "test.bin" , FILE_READ | FILE_WRITE | FILE_BIN ); //FileOpen("test "+"//"+_symbol(),FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON);
   if (file_handle!= INVALID_HANDLE )
     {
       FileSeek (file_handle, 0 , SEEK_END );
       //--- подготовим счетчик количества байт
       uint counter= 0 ;
       //--- в цикле запишем значения массива
       for ( int i= 0 ; i<_count; i++)
         counter+= FileWriteStruct (file_handle,cand_buff[count+i]);
       //  PrintFormat("В файл %s записано %d байт информации",_symbol(),counter);
       PrintFormat ( "Всего байтов: %d * %d * %d = %d, %s" ,size, 4 , 7 ,size* 4 * 7 ,size* 4 * 7 ==counter ? "Верно" : "Ошибка" );
       //--- закрываем файл
       FileClose (file_handle);
       // PrintFormat("Данные записаны, файл %s закрыт",_symbol());
     }
   else
       PrintFormat ( "Не удалось открыть файл %s, Код ошибки = %d" ,_symbol(), GetLastError ());
  }

고문에서 나는 이것을 이렇게 언로드합니다-

 //+------------------------------------------------------------------+
//| Выгрузка                                                         |
//+------------------------------------------------------------------+
void LoadFail( datetime InpTimeDrawTo)
  {
   ArrayFree (buf0);
   long count= FileLoad ( "test.bin" ,buf0);
   if (count!=- 1 )
     {
       for ( int i= 0 ; i<count; i++)
        {
         PrintFormat ( "%s\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u" ,
                     TimeToString (buf0[i].time, TIME_DATE | TIME_SECONDS ),
                     buf0[i].bar,buf0[i].period,buf0[i].praceMA,buf0[i].High,buf0[i].Low,buf0[i].type);
        }
     }
  }
 
집에서 실행할 수 있도록 그러한 코드가 게시되어 있다면 비틀고 집어 올리십시오 ...
 

안녕하세요 계속해서 MA하네스를 알아보는 방법을 만들고 있습니다

나는 하나의 막대, 400개의 기간 값의 배열을 취했습니다: - sm.d[per-1].m[bar]

번들을 식별하는 방법에 대해 생각하기 위해 XY 차트로 가져왔습니다. 한 마디의 4~400 MA 범위

X축 - 기간 4-400



차별화, 이 그래프를 얻었습니다

결과 반올림이 번들임을 이해합니다.


특별한 프로그램으로 차별화를 시켰는데 mql에서는 안되네요. 누군가 mql5를 사용하여 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

이 반올림의 범위도 결정하기 쉽지 않지만!!! 누구든지 제안 사항이 있습니까?

이 범위를 결정하는 방법은 무엇입니까?

아니면 이것?


 
Mikhail Toptunov :

안녕하세요 계속해서 MA하네스를 알아보는 방법을 만들고 있습니다

나는 하나의 막대, 400개의 기간 값의 배열을 취했습니다: - sm.d[per-1].m[bar]

번들을 식별하는 방법에 대해 생각하기 위해 XY 차트로 가져왔습니다. 한 마디의 4~400 MA 범위

X축 - 기간 4-400



차별화, 이 그래프를 얻었습니다

결과 반올림이 번들임을 이해합니다.


특별한 프로그램으로 차별화를 시켰는데 mql에서는 안되네요. 누군가 mql5를 사용하여 이 작업을 수행하는 방법을 말해 줄 수 있습니까?

이 반올림의 범위도 결정하기 쉽지 않지만!!! 누구든지 제안 사항이 있습니까?

이 범위를 결정하는 방법은 무엇입니까?

아니면 이것?


"차별화" - 어떻게 되는지 자세히 설명해 주시겠습니까?
 

내 생각에는 - 상미분 방정식(미분과 적분)

파생상품:1(X),2(Y)

 
Mikhail Toptunov :

내 생각에는 - 상미분 방정식(미분과 적분)

파생상품:1(X),2(Y)

예를 들어 인용문이 있습니다.

구별하는 방법?

패키지, 코드가 없습니까?

 
Renat Akhtyamov :

예를 들어 인용문이 있습니다.

구별하는 방법?

패키지, 코드가 없습니까?

실례합니다, 당신이 나에게 묻는거야?

- 모르겠어요. 나는 스스로에게 물었습니다. 어떻게?

 
Mikhail Toptunov :

실례합니다, 당신이 나에게 묻는거야?

- 모르겠어요. 나는 스스로에게 물었습니다. 어떻게?

네. 흥미로운

여기, 구글링

시계열 미분 - 계열 X(t)에서 전환 일련의 차분 X(t) - X(t-1 )

 
Renat Akhtyamov :

네. 흥미로운

여기, 구글링

시계열 미분 - 계열 X(t)에서 전환 일련의 차분 X(t) - X(t-1 )

모르겠어요!

 

친애하는 전문가 여러분, 이 범위를 선택하는 방법은 무엇입니까?