摩尔斯电码 - 页 3

 

制作两个参数。一个用于人类--字符串,第二个用于机器--int。第三个变量是用于类型选择。在任何情况下,在启动指标时,打印组合编码的第二个选项。如果consequence设置为100,则打印附加信息--从多少到多少可以改变参数int。

对于开盘和收盘相等的蜡烛图,我们可以假设它具有开盘和收盘不相等的最近的蜡烛图的方向。如果一个蜡烛图用三个数字编码,0-代表相等的开盘和收盘,那么就会有太多的稀有序列。

 

优化器需要两个参数来运行:组合长度和计数器。假设我们的组合长度是4,那么2^4=16。这意味着计数器应该从0到15。在优化器中通过它,我们将得到4位数模式的所有组合。

为了不使用户感到困惑,你必须添加ENUM_PATTERN_TYPE结构,它设置模式类型:数字或字符串。如果你选择了一个字符串模式,不要使用组合的计数器 和长度。反之亦然,如果你想在优化器中运行,请选择数字模式类型。

 

我以前见过这样的东西,在Yandex上可以搜索到 "candlecode"

 
Vasiliy Sokolov:

优化器需要两个参数来运行:组合长度和计数器。假设我们的组合长度是4,那么2^4=16。这意味着计数器应该从0到15。在优化器中通过它,我们将得到4位数模式的所有组合。

为了不使用户感到困惑,你必须添加ENUM_PATTERN_TYPE结构,它定义了模式类型:数字或字符串。如果你选择了一个字符串模式,不要使用组合的计数器 和长度。反之亦然,如果我们想在优化器中运行,我们选择数字模式类型。


我已经添加了ENUM_PATTERN_TYPE结构,同时我建议向用户隐藏定义烛台组合类型的 "int "类型参数。

  • 反正 "int "类型是一个数字,与字符串参数的二进制类型没有任何关联。
  • 只有在优化过程中才需要 "int "类型。

但只留下这些参数。

CTrade         m_trade;                      // trading object
//+------------------------------------------------------------------+
//| Enum pattern type: numerical or string                           |
//+------------------------------------------------------------------+
enum ENUM_PATTERN_TYPE
  {
   PATTERN_TYPE_NUMERICAL=0,  // numerical
   PATTERN_TYPE_STRING=1,     // string 
  };
//---
input ENUM_PATTERN_TYPE    InpPatternType          = PATTERN_TYPE_STRING;  // pattern type
input string               InpsMorseCode           = "101";                // string Morse code (max 5 characters)
input ENUM_POSITION_TYPE   InpPosType              = POSITION_TYPE_BUY;    // posinion type
input double               InpLot                  = 0.1;                  // lot
sinput ulong               m_magic                 = 88430400;             // magic number
input ulong                m_slippage              = 30;                   // slippage
//---
string sExtMorseCode="";
int max_string_len=5;         // limitation of the length of the pattern "string"
int i_morse_code=0;           // int Morse code (use only if pattern type=numerical)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(InpPatternType==PATTERN_TYPE_STRING)
     {

输入莫尔斯码1.002

 

我不太明白--这些人是程序员还是傻瓜?

为什么要把某样东西翻译成某样东西?

如果我们需要一个代码101--那就是正常值5。就是这样,有什么问题吗?将十进制在精神上翻译成二进制?

我做了类似的实验,只是我的蜡烛多了四个尺寸--从小到大。这使得八种不同的蜡烛尺寸。因此,也就有了三个比特。在图案中,我们写上数字(ulong)--格子比二十条图案要大。

在我看来,这个问题很牵强。

 
George Merts:

我不太明白--这些人是程序员还是傻瓜?

为什么我们需要把一些东西翻译成某种东西?

如果我们需要一个代码101--那就是正常值5。就是这样,有什么问题吗?将十进制在精神上翻译成二进制?

我做了类似的实验,只是我的蜡烛多了四个尺寸--从小到大。这使得八种不同的蜡烛尺寸。因此,也就有了三个比特。在图案中,我们写上数字(ulong)--格子比二十条图案要大。

在我看来,这个问题很牵强。


普通用户无法在心理上将十进制转换为二进制 :)
 
George Merts:

我不太明白--这些人是程序员还是傻瓜?

为什么要把某样东西翻译成某样东西?

如果我们需要一个代码101--那就是正常值5。就是这样,有什么问题吗?将十进制在精神上翻译成二进制?

我做了类似的实验,只是我的蜡烛多了四个尺寸--从小到大。这使得八种不同的蜡烛尺寸。因此,也就有了三个比特。在图案中,我们写上数字(ulong)--格子比二十条图案要大。

在我看来,这个问题很牵强。


这个程序将被一个普通用户使用,而不是程序员(上面已经提到,而且不止一次)--对他来说,"101 "和 "5 "是两个不同的数字,而对他来说,"5 "并不包含任何关于蜡烛的相对位置的信息,但 "101 "明确表示 "看涨,看跌,看涨"。

 

你是如何编码躲避的?

例如,"黄昏之星 "形态可以是看涨-躲避(或狼形或针形条)-熊形。如果你忽略了躲避(狼或针棒),那么图案就不能正确识别。我认为1位编码的蜡烛是不够的,每1根蜡烛2位。

例如,牛市蜡烛是01,熊市蜡烛是10,其他蜡烛是11。那么,"晚星 "将是01 11 10,"晨星 "将是10 11 01。

....

我也在想。如何对接管模式进行编码?简单的看涨-看跌组合并不能说明什么,但看涨-看跌的组合已经告诉我们看涨-看跌的接管。或者,我们可以将这两个烛台相加为一个,并将相加的烛台编码为11。


 
Vitalii Ananev:

你是如何编码躲避的?

例如,"黄昏之星 "形态可以是看涨-躲避(或狼形或针形条)-熊形。如果你忽略了躲避(狼或针棒),那么图案就不能正确识别。我认为1位编码的蜡烛是不够的,每1根蜡烛2位。

例如,牛市蜡烛是01,熊市蜡烛是10,其他蜡烛是11。那么 "晚星 "将是01 11 10,"晨星 "将是10 11 01。


阴影没有以任何方式进行编码(至少在这个阶段)。也许以后......。
 
Vladimir Karputov:

阴影没有以任何方式进行编码(至少在这个阶段)。也许以后...


我们应该一次性考虑所有事情,以避免以后重做。

....

再次,如果我们回到 "黄昏之星 "形态,它可以被看作是一个看涨的小蜡烛--熊市和一个看涨的熊市接管。这意味着我们有一个由看涨蜡烛和看跌吸收组成的复合模式。而如果我们将所有三个蜡烛图的形态相加,我们又会得到一个针形柱。