交易中的机器学习:理论、模型、实践和算法交易 - 页 3182

 
fxsaber #:

谢谢,我会试试 MathRand 增量。

Aleksey Nikolayev#:

最常用的可能是蒙特卡罗。

看起来我有一个有趣的随机生成器。

double GetAvgPrice( const MqlTick &Tick )
{
  return((Tick.bid + Tick.ask) / 2);
}

void SetAvgPrice( MqlTick &Tick, const double Price )
{
  const double Spread = (Tick.ask - Tick.bid) / 2;
  
  Tick.bid = NormalizeDouble(Price - Spread, 8);
  Tick.ask = NormalizeDouble(Price + Spread, 8);
  
  return;
}

// Случайный знак приращения средней цены.
bool RandomPrice( MqlTick &Ticks[] )
{  
  const int Size = ArraySize(Ticks) - 1;
  
  if (Size > 0)
  {
    Print("Random price...");
    
    MqlTick PrevTick = Ticks[Size];
    double PrevPrice = GetAvgPrice(PrevTick);
    
    MathSrand((int)TimeLocal());
    
    for (uint i = Size; (bool)i--;)
    {
      const double Diff = GetAvgPrice(PrevTick) - GetAvgPrice(Ticks[i]);
      
      PrevTick = Ticks[i];

      SetAvgPrice(Ticks[i], PrevPrice += !(MathRand() & 1) ? Diff : -Diff);
    }
  }
  
  return(Size >= 0);
}

上面是真实符号,下面是随机符号。

RandomPrice 可以迭代应用。价差和时间都会保留。


通过对数来生成是正确的,但我并没有这样做。如果我们加以改进,它可能是蒙特卡罗生成具有所需统计特性的随机符号的最佳选择。

 
fxsaber #:

可能是生成具有所需统计特性的随机符号的最佳选择。

使用同一组进行虱子测试。

上图 - 真实,下图 - 随机。

失败。

 

区别在于,优化结果中什么也没找。也就是说,前五个优化结果从未在 OOS 上运行过。

 

交易、自动交易系统和交易策略测试论坛

交易中的机器学习:理论、模型、实践和算法交易

Valeriy Yastremskiy, 2023.08.17 10:44 AM

假阳性和假阴性的概率降低似乎是合乎逻辑的,但在我看来,这并不是防止错误的灵丹妙药。

您认为应该更信任train_optim + test_forward 模型而不是(train+test)_optim 模型吗?

 
Aleksey Vyazmikin #:

没有错误 没有错误 没有错误

我又取了一个样本--47% 的单位和少 5 倍的示例--经过几次检测后,我可以说它已经找到了许多量子段。

我还注意到了初始目标和生成目标的相似度--它们的相似度为 49%--也许有必要设置一些阈值--相似度不能超过 30%?有什么想法吗?

我做了一个图表--如果有匹配则"-1",如果没有匹配则 "+1",我得到了这样一个平衡。

这上面有很多趋势,你怎么看?

 
fxsaber #:

顶部是真实的,底部是随机的。

我对真实符号和生成符号进行了优化,设置相同。


真实。


随机。


没有对随机符号进行训练。

 
fxsaber #:

用相同的设置对真实角色和生成角色进行了优化。


真实。


随机。


没有接受过随机训练。

随机符号生成了多少次?)显然,序列越长,生成的次数也就越多。
 
fxsaber #:

不同之处在于,优化结果中没有搜索到任何内容。也就是说,前五个优化结果从未在 OOS 上运行过。

我不知道该怎么简单地说。

在测试优化之后,你 "手工 "在 OOS 上挑选更好的变体,这并不合适......

而如果算法在优化后选择了 OOS 上的最佳变体,那就已经是拟合了......为什么?

从全套选项中选择最佳选项/变体就是优化....。用手工还是用算法并不重要。

也许您只与 MT 测试人员合作过,对优化本身及其应用方法的理解有点公式化,所以我们才会产生一些误解。


 
fxsaber #:

用相同的设置对真实角色和生成角色进行了优化。


真实。


随机。


它没有经过随机训练。

随机数是否与价格特征相匹配? 平均值、标准差、协方差?
 

Maxim Dmitrievsky #:
Сколько раз был сгенерирован рандом символ?)

一。

很明显,序列越长,需要生成的次数也就越多。

我不明白这句话的意思。下面两个选项是什么意思?

  1. 您需要运行多次随机化 迭代才能使其生效。
  2. 如果你创建了很多随机化字符,那么其中出现可行字符的概率就会增加。

看似简单的事情,因为即使在不同的真实符号上,相同的 TC 也不起作用。

随机化的算法如下

  1. 获取真实的跳动历史。
  2. 从中提取平均((买入价+卖出价)/2)价格的增量序列。
  3. 在这个序列中,每个项随机乘以 +1 或 -1 。
  4. 从获得的增量序列中收集新的刻度线历史记录,其中时间和价差与点 1 重合。
  5. 新的刻度历史记录以自定义符号写入。
也就是说,某个真实符号被随机化了。第 3 项的应用次数不限,如果在第 5 项之后重复了所有五个点,则等同于重复了两次第 3 项。