트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 1850

 
알렉세이 비아즈미킨 :

분봉이 열릴 때 OI를 종전 기록으로 받아들여야 한다는 데 동의하는가? 예를 들어, 23:49:55에 대해 10:00분에 시작합니다.

내가 이해하는 한 M1의 표시기를 사용하고 0 막대에서 필요한 모든 정보를 가져오고 원하는 시프트가 있는 표시기 버퍼의 정보 요청을 고려하여 EA에서 다른 비교를 수행하는 것이 좋습니다.

파일의 세 번째 값(첫 번째 날짜, 두 번째 OI 및 세 번째)에 대해 무엇을 가지고 있습니까? 델타를 생각했지만 작동하지 않습니다.

일반적으로 표시기 를 다시 수정했습니다. 위에서 쓴 대로 정확히 OI를 읽고 표시하며 작업 속도가 크게 증가했습니다. 테스트해 보세요.

예, 파일에 데이터가 있고 중단된 경우 파일에서 읽기가 작동해야 하지만 시장이 닫혀 확인하지 않았습니다.

사실, 그것은 전혀 중요하지 않습니다. 기록된 데이터가 항상 표시기에 올바르게 로드되는 것이 중요합니다. 사실 이러한 오류는 교육 파일을 저장하기 전에 허용됩니다. 그리고 우리가 그러한 규칙을 명시한다면, 그렇게 될 것입니다. 가장 중요한 것은 실생활에서 지표가 아이러니하게도 이 규칙을 따를 것이라는 것입니다.

Alexey, 제공된 표시기에 감사드립니다. 그러나 절약 EA에 대해 질문이 있습니다. 1분 이내에 OI가 변경될 때마다가 아니라 1분마다 동일하게 작성하도록 할 수 있습니까?

일반적으로 나는 내 작업에서 제로 바를 사용하지 않습니다. 또한 첫 번째 막대에 신호가 나타난 후 30초 후에 모든 계산을 수행합니다. 따라서 일반적으로 신호 사이에는 계산이 발생하지 않습니다. 그러나 첫 번째 막대에 신호가 있으면 30초 후에 표시기 모델의 모든 참가자가 호출되며 이론상 이러한 표시기는 마지막 호출(신호)에서 현재 호출까지의 전체 기록을 계산해야 합니다. 차트에. 그것은 실제로 터키가 현재 값을 적절하게 얻기 위해 파일에서 읽어야 하는 구멍입니다.

사실 나는 역사의 공백과 구멍에 민감한 인용 의존 데이터(이것이 내가 직접 불렀던 것입니다 :-))를 사용한다는 것입니다.

제가 사용하는 지표를 코딩할 수 있도록 도와주세요. 훈련 세트를 준비할 때 몇 가지 핵심 아이디어를 알려주시면 감사하겠습니다. + 서비스에 37달러가 있습니다. 문제 없이 제공하겠습니다. 그러나 실제 작업 중 Expert Advisor에 데이터 수신의 완전한 신뢰성이 달성되는 조건에서만 가능합니다.

내가 가진 주요 문제는 차트에 AI 어드바이저를 던지고 새로운 신호를 받았을 때 다시 컴파일해야 하고 지표에서 적절한 데이터를 요청한다는 것입니다. 그러나 문제는 칠면조 자체에 있습니다. 나는 그것들을 차트에 던지고, 그는 역사를 올바르게 그렸고, 실제 위에 서서 계속 데이터를 씁니다. 잠시 후 재컴파일을 하고 실생활에서 작성된 테일이 값을 변경합니다.

막대를 기준으로 올바르게 계산되는 누적 델타 지표도 있습니다. 그러나이 지표의 오랜 역사와 이것은 M5에서 3 개월이므로 사본에서 데이터를 가져 오기 때문에 한주기에 대해 계산할 시간이 없습니다. ..체스키한 주기 수.

최신 업데이트로 트레이닝 파일을 생성할 때 메모리가 3~6개월 동안 14개 기기에 대한 요청이 들어왔기 때문에 메모리가 과격해졌습니다. 결과적으로 RAM 8기가로는 충분하지 않습니다. 그리고 이 칠면조는 실생활에서 내가 필요로 하지 않는 제로 바를 씁니다. 제로 바가 나타날 때 첫 번째 것만 로드하는 것으로 충분합니다.

글쎄, 일반적으로 약간의 도움에 관심이 있다면 거기에 개인적인 글을 쓰면 더 구체적으로 동의 할 것입니다. 덕분에!!!!

파일:
CumDelta.mq5  55 kb
 
마이클 마르쿠카이테스 :

사실, 그것은 전혀 중요하지 않습니다. 기록된 데이터가 항상 표시기에 올바르게 로드되는 것이 중요합니다. 사실 이러한 오류는 교육 파일을 저장하기 전에 허용됩니다. 그리고 우리가 그러한 규칙을 명시한다면, 그렇게 될 것입니다. 가장 중요한 것은 실생활에서 지표가 아이러니하게도 이 규칙을 따를 것이라는 것입니다.

Alexey, 제공된 표시기에 감사드립니다. 그러나 절약 EA에 대해 질문이 있습니다. 1분 이내에 OI가 변경될 때마다가 아니라 1분마다 동일하게 작성하도록 할 수 있습니까?

일반적으로 나는 내 작업에서 제로 바를 사용하지 않습니다. 또한 첫 번째 막대에 신호가 나타난 후 30초 후에 모든 계산을 수행합니다. 따라서 신호 사이에는 일반적으로 계산이 없습니다. 그러나 첫 번째 막대에 신호가 있으면 30초 후에 모델에 참여하는 모든 지표가 호출되며 이론상 이러한 지표는 마지막 호출(신호)부터 현재까지의 전체 이력을 계산해야 합니다. 차트에. 그것은 실제로 터키가 현재 값을 적절하게 얻기 위해 파일에서 읽어야 하는 구멍입니다.

문제는 특히 빠른 시장에서 훈련과 적용을 완벽하게 재현할 수 없다는 것입니다. 이제 지연은 새 데이터와 관련하여 최대 10초(역사에 대해 이야기하는 경우)이고 막대를 시작할 때만 쓰면 지연은 이미 60초 이상이 됩니다. 막대를 열 때 얻은 데이터로 작업하면 (교대하지 않음) 표시기에 오류가 발생합니다. 미래를 엿볼 수 있다. 일반적으로 여기서 우리는 이데올로기에 대해 다시 생각할 필요가 있습니다. 이제 데이터는 더 최근이지만 이것은 모두 이론입니다. 새로운 막대 가 나타날 때 기록된 데이터를 가져와서 학습하는 것으로 충분할 수 있습니다.

글쎄, 당신은 단순히 1분 안에 불필요한 줄을 제거하는 스크립트를 만들 수 있으며 파일 크기는 10배 작아질 것입니다.

마이클 마르쿠카이테스 :

내가 가진 주요 문제는 차트에 AI 어드바이저를 던지고 새로운 신호를 받았을 때 다시 컴파일해야 하고 지표에서 적절한 데이터를 요청한다는 것입니다. 그러나 문제는 칠면조 자체에 있습니다. 나는 그것들을 차트에 던지고, 그는 역사를 올바르게 그렸고, 실제 위에 서서 계속 데이터를 씁니다. 잠시 후 재컴파일을 하고 실생활에서 작성된 테일이 값을 변경합니다.

내가 준 표시기의 버전을 사용해보십시오. 문제가 사라지지 않으면 지표가 아닌 고문에있을 수 있습니다. 표시기에서 데이터를 가져오는 코드를 표시합니다.

 
마이클 마르쿠카이테스 :
중단이 브로커 측에서 전역적으로 발생하면 아무 것도 수행할 수 없습니다. 데이터 절약 조언자는 VPS 서버 에 있으며 데이터는 손실 없이 작성되었다고 말할 것입니다.

이제 기록 기록을 위한 EA는 표시기 및 거래 고문의 작동과 동시에 데이터를 저장할 것으로 예상되므로 연결이 끊어지거나 터미널이 닫힐 때 파일에서 새 기록 데이터를 가져옵니다. 긴급하게 작업을 계속할 수 있도록 한 다음 파일을 VPS로 교체하고 어드바이저를 다시 시작할 수 있습니다.

 
마이클 마르쿠카이테스 :

\Aleksey, 제공된 표시기에 감사드립니다. 그러나 저장 EA에 대해 질문이 있습니다. 1분 안에 OI가 변경될 때마다가 아니라 1분마다 동일하게 작성하도록 할 수 있습니까?

특히 신경 쓰지 않는다면 이 옵션을 확인하십시오.

   MqlTick last_tick;
   if ( SymbolInfoTick (Name_instrFS,last_tick))
      StartDate=last_tick.time;
   else StartDate= TimeCurrent ();
   if (isNewBar(Name_instrFS, 0 , PERIOD_M1 ))
   {
       for ( int i= 0 ; i< 100 && ! IsStopped (); i++)
      {
         h= FileOpen ( "OpenI\\" +Name_instr+ "_OI.csv" , FILE_WRITE | FILE_READ | FILE_ANSI | FILE_CSV | FILE_COMMON | FILE_SHARE_READ , "," );
         if (h!= INVALID_HANDLE )
         {

             FileSeek (h, 0 , SEEK_END );
             FileWrite (h,StartDate, DoubleToString (interest, 0 ));
             FileClose (h);
             Sleep ( 100 );
             break ;
         }
      }
       //inter=interest;
       // byOR=byORD;
       // sellOR=sellORD;
   }
 
알렉세이 비아즈미킨 :

특히 신경 쓰지 않는다면 이 옵션을 확인하십시오.

Alexey는 매우 감사합니다. 반드시 모든 것을 확인하고 결과를 알려 드리겠습니다. 미래를 내다본다면 이것은 절대적으로 중요하지 않으며 조언자가 지표를 읽는 것처럼 쓴다면 일어나지 않을 것입니다. 그들 사이에 차이가 없다면 그것은 중요하지 않습니다. 옵션으로 새 막대 가 나타나면 ROI의 첫 번째 변경을 기다리고 첫 번째 이전 막대에 대해 이 새 값을 씁니다. 우리는 새로운 값이 아니라 첫 번째 막대의 마지막이었던 이전 값을 쓸 수도 있습니다. 즉, 실제로 막대가 닫힐 때 기록이 있습니다.

중요한 것은 분 표시줄에 할당한 ROI가 아니라 파일에서 표시기를 읽는 방법입니다.

 
마이클 마르쿠카이테스 :

Alexey는 매우 감사합니다. 반드시 모든 것을 확인하고 결과를 알려 드리겠습니다. 미래를 내다본다면 이것은 절대적으로 중요하지 않으며 조언자가 지표를 읽는 것처럼 쓴다면 일어나지 않을 것입니다. 그들 사이에 차이가 없다면 그것은 중요하지 않습니다. 옵션으로 새 막대 가 나타나면 ROI의 첫 번째 변경을 기다리고 첫 번째 이전 막대에 대해 이 새 값을 씁니다. 우리는 새로운 값이 아니라 첫 번째 막대의 마지막이었던 이전 값을 쓸 수도 있습니다. 즉, 실제로 막대가 닫힐 때 기록이 있습니다.

중요한 것은 분 표시줄에 할당한 ROI가 아니라 파일에서 표시기를 읽는 방법입니다.

전체 코드와 실제 질문을 알려주세요.

interest= SymbolInfoDouble (Name_instrFS, SYMBOL_SESSION_INTEREST ); 


   if ((interest!=inter))
  {

   MqlTick last_tick;
   /*if(SymbolInfoTick(Name_instrFS,last_tick)) 
    StartDate=last_tick.time;
    else StartDate=TimeCurrent();*/
    StartDate= iTime (Name_instrFS, PERIOD_M1 , 1 );
   if (isNewBar(Name_instrFS, 0 , PERIOD_M1 ))
   {  
     for ( int i= 0 ;i< 100 && ! IsStopped ();i++)
    { 
      h= FileOpen ( "OpenI\\" +Name_instr+ "_OI.csv" , FILE_WRITE | FILE_READ | FILE_ANSI | FILE_CSV | FILE_COMMON | FILE_SHARE_READ , "," );
       if (h!= INVALID_HANDLE )                                                         
       {  
         
         FileSeek (h, 0 , SEEK_END );
         FileWrite (h,StartDate, DoubleToString (inter, 0 )); 
         FileClose (h); 
         Sleep ( 100 );
         break ; 
       }
    }   
    inter=interest;
   // byOR=byORD;
   // sellOR=sellORD;
  }
}


새 막대가 열리고 5틱 이내에 ROI에 변화가 없으면 새 막대의 조건으로 들어갑니까?

아이디어에 따르면 그래야 한다고 생각합니다. 왜냐하면 이것이 새로운 bar 함수에 대한 첫 번째 호출이 될 것이고 그 후에야 결과가 false로 변경되기 때문입니다. 왜요?

 
머릿속에서 코드 작업을 시뮬레이션한 결과 병목 현상을 발견했습니다. 어제 세션의 마지막 막대는 오늘 세션의 분 막대가 열릴 때 첫 번째 변경 시 기록됩니다. EA가 다시 비활성화되면 ROI 값이 0으로 날아가 불쾌한 0 입력으로 이어질 것입니다. 어제 세션의 마지막 바. 여전히 첫 번째 막대에 이전 ROI 값을 기록하지 않고 현재 ROI, 즉 새 막대 에서 첫 번째가 될 ROI를 기록하기로 결정했다고 생각합니다. 좋아, 나는 그것들을 완벽하게 동기화하고 싶었지만 그렇게 할 것이라고 생각합니다 ... 그래서 ... 큰 소리로 생각 ...
 
알렉세이 비아즈미킨 :

문제는 특히 빠른 시장에서 훈련과 적용을 완벽하게 재현할 수 없다는 것입니다. 이제 지연은 새 데이터와 관련하여 최대 10초(역사에 대해 이야기하는 경우)이고 막대를 시작할 때만 쓰면 지연은 이미 60초 이상이 됩니다. 막대를 열 때 얻은 데이터로 작업하면 (교대하지 않음) 표시기에 오류가 발생합니다. 미래를 엿볼 수 있다. 일반적으로 여기서 우리는 이데올로기에 대해 다시 생각할 필요가 있습니다. 이제 데이터는 더 최근이지만 이것은 모두 이론입니다. 새로운 막대 가 나타날 때 기록된 데이터를 가져와서 학습하는 것으로 충분할 수 있습니다.

글쎄, 당신은 단순히 1분 안에 불필요한 줄을 제거하는 스크립트를 만들 수 있으며 파일 크기는 10배 작아질 것입니다.

내가 준 표시기의 버전을 사용해보십시오. 문제가 사라지지 않으면 지표가 아닌 고문에있을 수 있습니다. 표시기에서 데이터를 가져오는 코드를 표시합니다.

얼굴에 이상이 있었다는 이력 표시를 확인했다. 사실은 시세 창에서 첫 번째 분 양초의 시간이 10:00이지만 이 양초의 값은 이전 양초에서 가져온 것입니다. 즉, 촛불을 10시 00분에 열고 10시 59분에 닫았다가 써야 하는 값이죠? 표시기는 플로팅될 때 23:59:59에서 이 막대의 값을 가져옵니다.
 
마이클 마르쿠카이테스 :
얼굴에 이상이 있었다는 이력 표시를 확인했다. 사실은 시세 창에서 첫 번째 분 양초의 시간이 10:00이지만 이 양초의 값은 이전 양초에서 가져온 것입니다. 즉, 촛불을 10시 00분에 열고 10시 59분에 닫았다가 써야 하는 값이죠? 표시기는 플로팅될 때 23:59:59에서 이 막대의 값을 가져옵니다.
만세. 이제 파일을 분 단위로 작성하든 틱 단위로 작성하든 상관없이 양초에 대한 올바른 값을 작성합니다. 즉, 양초 에 개장 시간 이 있으면 이 양초가 닫힐 때의 값을 양초에 씁니다...
 
마이클 마르쿠카이테스 :
얼굴에 이상이 있었다는 이력 표시를 확인했다. 사실은 시세 창에서 첫 번째 분 양초의 시간이 10:00이지만 이 양초의 값은 이전 양초에서 가져온 것입니다. 즉, 촛불을 10시 00분에 열고 10시 59분에 닫았다가 써야 하는 값이죠? 표시기는 플로팅될 때 23:59:59에서 이 막대의 값을 가져옵니다.

고문이 지연 시간이기는 하지만 막대 열기에 대해 작업하는 경우 양초 닫기에 대한 데이터를 제출하는 것이 맞습니까? 미래를 내다봐? 따라서 이 양초를 사용하기 전에 가장 최근에 기록된 데이터, 즉 사전이 아닌 약간의 지연.


마이클 마르쿠카이테스 :

전체 코드와 실제 질문을 알려주세요.


새 막대가 열리고 5틱 이내에 ROI에 변화가 없으면 새 막대의 조건으로 들어갑니까?

아이디어에 따르면 그래야 한다고 생각합니다. 왜냐하면 이것이 새로운 bar 함수에 대한 첫 번째 호출이 될 것이고 그 후에야 결과가 false로 변경되기 때문입니다. 왜요?

여기서 5틱의 개수는 어디에 있습니까? 전체 1분 동안 트랜잭션이 없으면 막대를 건너뛰므로 OI 볼륨의 변화에 대한 비교를 제거하여 새 양초 가 열릴 때 데이터가 즉시 기록되도록 했습니다. 내가 고려하지 않았을 수도 있고 데이터에 대한 테스트가 필요하지만 어제는 거기에 없었지만 오늘은 근무일입니다 :(

사유: