모스 식 부호 - 페이지 5

 
모스 부호 버전 "1.004": 버그 수정 - 패턴이 거꾸로 읽혔습니다.
파일:
Morse_code.mq5  15 kb
 
Vasiliy Sokolov :

질문: 64비트에서 요구되는 조합과 일치하는 조합이 시장에 나타날 확률은 얼마입니까? 답: (1/2^64)*BarsCount. 저것들. 100%에 가까운 확률로 이러한 조합을 찾을 수 없습니다. 저것들. 분명히 int 또는 long 숫자만으로는 패턴을 완전히 설명할 수 없으므로 패턴의 길이를 나타내는 추가 매개변수가 필요합니다.

이것은 64비트를 모두 본 경우입니다. 그러나 이것은 분명히 불필요한 것입니다.

비슷한 연구를 해보니 촛대 패턴의 길이를 5 이상으로 하는 것은 바람직하지 않다는 것을 알게 되었습니다. 또한 "강세-약세" 막대를 구분할 뿐만 아니라 크기로 구분한다면 이 길이도 너무 크면 길이가 3이면 충분합니다.

패턴의 길이가 길면 "특징"을 설정하고 길이를 최소값과 최대값으로 제한하는 것이 훨씬 더 편리합니다.

 

나는 아직 그것을 형성하지 않았지만 일반적으로 아이디어는 다음과 같습니다: 두 개의 매개변수 - 길이와 0에서 3 사이의 int 매개변수. 이 숫자는 이미 EA(의사 비트 표현) 내부에서 해석되고 있습니다.

정수 길이(일명 마스크) 의사 비트 표현
0 엑스 0
하나 엑스 하나
2 더블 엑스 00
더블 엑스 01
4 더블 엑스
5 더블 엑스 열하나
6 트리플 엑스 000
7 트리플 엑스 001
여덟 트리플 엑스 010
아홉 트리플 엑스 011
트리플 엑스 100
열하나 트리플 엑스 101
12 트리플 엑스 110
열셋 트리플 엑스 111

이러한 매개변수를 인코딩하는 방법을 결정해야 합니다. 정면 솔루션: 각 int 매개변수(테이블의 첫 번째 열)가 의사 비트 표현(세 번째 열)에 해당하는 구조입니다. 마스크가 5자(ххххх)로 제한되어 있으면 구조가 그리 크지 않은 것으로 판명됩니다.

그리고 가장 중요한 것은 최적화 프로그램을 사용하여 구조를 분류할 수 있다는 것입니다!

 

3개의 양초의 경우 속성 창에서 3개의 개별 매개변수를 만들 수 있습니다. 하나의 돌을 가진 두 마리의 새가 시각적으로나 최적화되어 한 번에 죽습니다.

양초 10개도 마찬가지입니다.

 
Dmitry Fedoseev :

3개의 양초의 경우 속성 창에서 3개의 개별 매개변수를 만들 수 있습니다. 하나의 돌을 가진 두 마리의 새가 시각적으로나 최적화되어 한 번에 죽습니다.

양초 10개도 마찬가지입니다.

지원하다

 input bool svecha1 = true ;
input bool svecha2 = false ;
input bool svecha3 = true ;
input bool svecha4 = false ;
input bool svecha5 = true ;
 
Vladimir Karputov :

나는 아직 그것을 형성하지 않았지만 일반적으로 아이디어는 다음과 같습니다: 두 개의 매개변수 - 길이와 0에서 3 사이의 int 매개변수. 이 숫자는 이미 EA(의사 비트 표현) 내부에서 해석되고 있습니다.

정수 길이(일명 마스크) 의사 비트 표현
0 엑스 0
하나 엑스 하나
2 더블 엑스 00
더블 엑스 01
4 더블 엑스
5 더블 엑스 열하나
6 트리플 엑스 000
7 트리플 엑스 001
여덟 트리플 엑스 010
아홉 트리플 엑스 011
트리플 엑스 100
열하나 트리플 엑스 101
12 트리플 엑스 110
열셋 트리플 엑스 111

이러한 매개변수를 인코딩하는 방법을 결정해야 합니다. 정면 솔루션: 각 int 매개변수(테이블의 첫 번째 열)가 의사 비트 표현(세 번째 열)에 해당하는 구조입니다. 마스크가 5자(ххххх)로 제한되어 있으면 구조가 그리 크지 않은 것으로 판명됩니다.

그리고 가장 중요한 것은 최적화 프로그램을 사용하여 구조를 분류할 수 있다는 것입니다!


다음은 x에서 xxx까지의 마스크에 대한 열거입니다.

 //+------------------------------------------------------------------+
//| Enum pattern type: numerical or string                           |
//+------------------------------------------------------------------+
enum ENUM_PATTERN_MASK
  {
   _0=B '0' ,       // 
   _1=B '1' ,       //  
   _2=B '00' ,       // 
   _3=B '01' ,       // 
   _4=B '10' ,       // 
   _5=B '11' ,       // 
   _6=B '000' ,     // 
   _7=B '001' ,     // 
   _8=B '010' ,     // 
   _9=B '011' ,     // 
   _10=B '100' ,     // 
   _11=B '101' ,     // 
   _12=B '110' ,     // 
   _13=B '111' ,     // 
  };
 

모스 부호 버전 "1.005"

해결책은 다음과 같습니다. 마스크는 열거형으로 제공됩니다.

 //+------------------------------------------------------------------+
//| Enum pattern mask                                                |
//+------------------------------------------------------------------+
enum ENUM_PATTERN_MASK
  {
   _0    =   0     ,   // 0
   _1    =   1     ,   // 1

   _2    =   2     ,   // 00
   _3    =   3     ,   // 01
   _4    =   4     ,   // 10
   _5    =   5     ,   // 11

   _6    =   6     ,   // 000
   _7    =   7     ,   // 001
   _8    =   8     ,   // 010
   _9    =   9     ,   // 011
   _10   =   10    ,   // 100
   _11   =   11    ,   // 101
   _12   =   12    ,   // 110
   _13   =   13    ,   // 111

   _14   =   14    ,   // 0000
   _15   =   15    ,   // 0001
   _16   =   16    ,   // 0010
   _17   =   17    ,   // 0011
   _18   =   18    ,   // 0100
   _19   =   19    ,   // 0101
   _20   =   20    ,   // 0110
   _21   =   21    ,   // 0111
   _22   =   22    ,   // 1000
   _23   =   23    ,   // 1001
   _24   =   24    ,   // 1010
...

OnInit()에서 마스크는 ConvertNumberToString 함수의 문자열 변수 " sExtMorseCode "(변수 " sExtMorseCode "는 전역 프로그램 수준에서 선언됨)로 변환됩니다.

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool ConvertNumberToString( const ENUM_PATTERN_MASK num_mask, string &text)
  {
   bool result= true ;
//---
   switch (num_mask)
     {
       case 0 :  text= "0" ; break ;
       case 1 :  text= "1" ; break ;
       case 2 :  text= "00" ; break ;
       case 3 :  text= "01" ; break ;
       case 4 :  text= "10" ; break ;
       case 5 :  text= "11" ; break ;
       case 6 :  text= "000" ; break ;
       case 7 :  text= "001" ; break ;
       case 8 :  text= "010" ; break ;
       case 9 :  text= "011" ; break ;
       case 10 : text= "100" ; break ;
...
       case 53 : text= "10111" ; break ;
       case 54 : text= "11000" ; break ;
       case 55 : text= "11001" ; break ;
       case 56 : text= "11010" ; break ;
       case 57 : text= "11011" ; break ;
       case 58 : text= "11100" ; break ;
       case 59 : text= "11101" ; break ;
       case 60 : text= "11110" ; break ;
       case 61 : text= "11111" ; break ;
       default : text= "" ; return ( false );
     }
//---
   return (result);
  }

두 가지 문제 해결:

하나). 사용자는 입력 매개변수에서 "0101" 형식의 패턴을 봅니다.

입력 매개변수의 편리한 보기

2). 입력 매개변수는 테스터의 최적화에 완벽하게 적합합니다.

파일:
Morse_code.mq5  20 kb
 
Vladimir Karputov :

모스 부호 버전 "1.005"

두 가지 문제 해결:

하나). 사용자는 입력 매개변수에서 "0101" 형식의 패턴을 봅니다.

2). 입력 매개변수는 테스터의 최적화에 완벽하게 적합합니다.

사용자가 원래 아이디어에 따라 수학적 계산 없이 양초 조합을 설정할 수 있습니까?

 
Pyxis :

사용자가 원래 아이디어에 따라 수학적 계산 없이 양초 조합을 설정할 수 있습니까?


예, 수학적 계산 없이. 이제 조합을 수동으로 입력할 필요가 없습니다. " 패턴 마스크 " 드롭다운 목록에서 적절한 양초 조합을 선택하기만 하면 됩니다.
 
테스터(전체 최적화) 모스 코드 버전 "1.005" 에서 실행했습니다. 가장 순수한 형태로 패턴(지금과 같이)은 전혀 비정상적이지 않습니다.
사유: