从专业人员到超级专业人员的任何问题 - 1。 - 页 17

 
我认为我需要将字符串转换成一个整数数组,这样的假设是否正确?
 
hrenfx:
我认为我需要将字符串转换成一个整数数组,这样的假设是否正确?
到Unicode。整数阵列只是为了替代DLL
 

这个?

#define SIZEOF_INT 4
#define BYTE_BITS 8
#define SIZEOF_ANSI 1
#define SIZEOF_UNICODE 2

void StringToINT( string Str, int& Buffer[], bool UniCode = FALSE )
{
  int Koef;
  
  if (UniCode)
    Koef = SIZEOF_UNICODE;
  else
    Koef = SIZEOF_ANSI;
    
  int i = 0, j, Len = StringLen(Str);
  int Pos = 0, Size =  Koef * Len / SIZEOF_INT;
    
  if ((Koef * Len) % SIZEOF_INT > 0)
    Size++;
    
  ArrayResize(Buffer, Size);
    
  while (i < Len)
  {
    Buffer[Pos] = 0;
    
    for (j = 0; j < SIZEOF_INT / Koef; j++)
    {
      if (i < Len)
        Buffer[Pos] |= StringGetChar(Str, i) << (Koef * j * BYTE_BITS);
        
      i++;
    }
    
    Pos++;
  }
  
  return;
}

string INTToString( int& Buffer[], bool UniCode = FALSE )
{
  string Str = "";
  int Tmp, Size = ArraySize(Buffer);
  int Koef;
  
  if (UniCode)
    Koef = SIZEOF_UNICODE;
  else
    Koef = SIZEOF_ANSI;
  
  for (int i = 0; i < Size; i++)
  {
    Tmp = Buffer[i];
    
    while (Tmp != 0)
    {
      Str = Str + CharToStr(Tmp & 0xFF);
      
      Tmp >>= Koef * BYTE_BITS;
    }
  }  
  
  return(Str);
}

void start()
{
  int Buffer[];
  string Str = "abcde";
  
  StringToINT(Str, Buffer, FALSE); // ANSI
  Str = INTToString(Buffer, FALSE); // ANSI
  Print(ArraySize(Buffer));

  Print(Str);

  StringToINT(Str, Buffer, TRUE); // UNICODE
  Str = INTToString(Buffer, TRUE); // UNICODE  

  Print(ArraySize(Buffer));
  Print(Str);
  
  return;
} 
 

感谢你们所有人的帮助和参与。

在第15页--Zhunko和 TheXpert 已经为我指出了正确的方向,我几乎做对了所有的事情 :)


但由于经验不足,我忘记了,把MultiByteToWideChar 函数而不是CP_ACP发送到CP_UTF8

感谢Ilnur出现并 纠正了我的代码,否则我想在MT4上放弃这个机器人。


再次感谢大家的解答,我们是一个团伙在一起的。:)

 
附加的文件:
 

我正在开发一个结合了正态分布钟的指标。因此,这里是要解决的问题。

为了估计所获结果的统计学意义,我们需要找到测试N时刻的随机过程的标准差 值。在这种情况下,数学期望值是事先知道的,并且等于零,而每次试验的正面结果(+1)的概率等于负面结果(-1)的概率,并且相应地等于0.5。

例1.两名玩家将玩一个亚马逊的游戏,直到他们抛出1000个硬币。确定范围的极限,其中一个会赢,另一个会输,概率为99.7%。

也就是说,所需要的就是这个非常西格玛曲线的公式。我知道,这个问题和世界一样古老,我自己也知道如何在现有序列(MNC)的基础上计算这些偏差,但我需要自己计算,不需要BP本身。

 
C-4:

我正在开发一个结合了正态分布钟的指标。因此,这里是要解决的问题。

为了估计所获结果的统计学意义,我们需要找到测试N时刻的随机过程的标准差值。在这种情况下,数学期望值是事先知道的,并且等于零,而每次试验的正面结果(+1)的概率等于负面结果(-1)的概率,并且相应地等于0.5。

例1.两名玩家将进行老鹰游戏,直到他们抛出1000枚硬币。确定范围的极限,其中一个会赢,另一个会输,概率为99.7%。

也就是说,所需要的就是这个非常西格玛曲线的公式。我知道,这个问题和世界一样古老,我自己也知道如何在现有序列(OLS)的基础上计算这些偏差,但我需要自己计算,没有BP。

C-4,

对于二项分布,也就是这里的情况(当N很大时,它很接近于正态分布),标准差(sigma)是sqrt(N*p*q),其中N是试验次数,p是一次胜利的概率,q=1-p是一次失败的概率。

根添加))))

 

也就是说,sqrt(1000*0.5*0.5) = sqrt(250) = 15.81

因此,99.7%的人符合正负三个标准差的要求 3*15.81=47.434

 
一般来说,为了近似地确定二项式 方案的任何四分法,可以使用莫伊-拉普拉斯积分定理(google)。函数F(x)的值有很好的表格,并且有进行数字积分的算法。这个问题是标准的,所以它已经被解决了一百万次了)
 
alsu:

也就是说,sqrt(1000*0.5*0.5) = sqrt(250) = 15.81

因此,其中99.7%在正负三个标准差之内 3*15.81=47.434


谢谢你的提示。但由于某些原因,这个功能似乎有点狭窄。

使用了500个SB,但不知为何,99.7%的SB似乎并不适合在三个希格玛之内。