摩尔斯电码 - 页 5

 
莫尔斯电码版本 "1.004":修正了错误--图案被倒着读。
附加的文件:
Morse_code.mq5  15 kb
 
Vasiliy Sokolov:

问题:市场上出现符合要求的64位数字的组合的概率是多少?答案:(1/2^64)*BarsCount。也就是说,以接近100%的概率,这样的组合不会被发现。所以,很明显,只有数字int或long不能完全描述模式,所以我们需要一个额外的参数来指定模式的长度。

这是在我们看了所有64位的情况下。但这显然是没有必要的。

当我进行这样的调查时,我发现把烛台形态的长度超过5是不合理的。此外,如果我们不仅以 "牛熊 "来区分酒吧,而且还以它们的大小来区分,即使这个长度也太长了。

如果我们有一个长度很大的模式--指定 "特征特性 "并简单地用最小值和最大值来限制长度是更合理的。

 

还没有完全形成,但大致的想法是:两个参数--长度和0到3的int参数。专家顾问内部已经在解释这个数字(伪比特表示法)。

䵮䵮长度(又称面具)伪比特表示法
0х0
1х1
2xx00
3xx01
4xx10
5xx11
6xxx000
7xxx001
8xxx010
9xxx011
10xxx100
11xxx101
12xxx110
13xxx111

现在还需要决定如何对这些参数进行编码。一个直接的解决方案:一个结构,其中每个int参数(表格的第一列)对应于一个Pseudobit表示(第三列)。如果你把掩码限制在只有五个字符(XXXXX),结构就不会很大。

而最重要的是--优化器允许你重新安排结构!

 

你也可以在属性窗口中为这三支蜡烛制定三个独立的参数。一举两得--既明确又优化。

对10个烛台也可以这样做。

 
Dmitry Fedoseev:

你也可以在属性窗口中为这三支蜡烛制定三个独立的参数。一举两得--既明确又优化。

对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参数。专家顾问内部已经在解释这个数字(伪比特表示法)。

䵮䵮长度(又称面具)伪比特表示法
0х0
1х1
2xx00
3xx01
4xx10
5xx11
6xxx000
7xxx001
8xxx010
9xxx011
10xxx100
11xxx101
12xxx110
13xxx111

现在还需要决定如何对这些参数进行编码。一个直接的解决方案:一个结构,其中每个int参数(表格的第一列)对应于一个Pseudobit表示(第三列)。如果你把掩码限制在只有五个字符(XXXXX),结构就不会很大。

而最重要的是--优化器允许你重新安排结构!


这是从x到xxxx的掩码的枚举。

//+------------------------------------------------------------------+
//| 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);
  }

有两个问题得到了解决。

1).用户在输入参数中看到的图案是 "0101"。

方便地查看输入参数

2).输入参数在测试器中得到了完美的优化。

附加的文件:
Morse_code.mq5  20 kb
 
Vladimir Karputov:

莫尔斯码版本 "1.005"

有两个问题得到了解决。

1).用户在输入参数中看到的图案是 "0101"。

2).输入参数在测试器中得到了完美的优化。

用户可以根据最初的想法,在没有数学计算 的情况下指定一个蜡烛图组合?

 
Pyxis:

用户可以在不进行数学计算 的情况下指定一个烛台组合,就像最初设想的那样?


是的,他可以不用任何数学计算。而现在你不需要手动输入组合--只需从"模式掩码"下拉列表中选择适当的蜡烛图组合。
 
在测试器中运行(完全优化)莫尔斯码版本 "1.005"--纯模式(像现在这样)完全没有腥味:(。