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

 
马克西姆-德米特里耶夫斯基

是的,然后在未来检测它们,并选择一个在这个特定集群上运行良好的模型

你也可以直接把它作为一个特征归档,NS/Forest会自己建立子模型。
 
mcpd.mcpdreport C# (CSharp) Code Examples - HotExamples
  • csharp.hotexamples.com
C# (CSharp) mcpd.mcpdreport - 6 examples found. These are the top rated real world C# (CSharp) examples of mcpd.mcpdreport extracted from open source projects. You can rate examples to help us improve the quality of examples.
 

关于Habra的NS培训的有趣文章(只是阅读)用神经网络恢复照片

最有价值的,像往常一样,是用户的评论--在整个文章中,作者描述了他工作中的一个重大突破,像往常一样与第三方软件进行比较,但用户立即指出了缺陷--绿色的主导地位。

结论 - 输入数据的准备比NS培训技术本身更重要

Реставрируем фотографии с помощью нейросетей
Реставрируем фотографии с помощью нейросетей
  • habr.com
Всем привет, я работаю программистом-исследователем в команде компьютерного зрения Mail.ru Group. Ко Дню Победы в этом году мы решили сделать проект по реставрации военных фотографий. Что такое реставрация фотографий? Она состоит из трех этапов: находим все дефекты изображения: надломы, потертости, дырки; закрашиваем найденные дефекты...
 
伊戈尔-马卡努

结论是,输入数据的准备比NS训练技术本身更重要。

巫师在10亿页前就说过这个问题。

先生们,你们什么时候才能学会倾听对方的意见?这种乡下人的狭隘和愚蠢是怎么回事?这真的很烦人,令人气愤。

 
伊戈尔-马卡努

关于Habra的NS培训的有趣文章(只是阅读)用神经网络恢复照片

最有价值的,像往常一样,是用户的评论--在整个文章中,作者描述了他工作中的一个重大突破,像往常一样与第三方软件进行比较,但用户立即指出了缺陷--绿色的主导地位。

结论 - 输入数据的准备比训练NS的技术更重要

关键是图片不动,不改变,指纹也是如此。而在模式识别中,机器学习是不可缺少的。

但当MO应用于外汇的历史数据时,它只会造成一种错觉,即它已经找到了最佳选择。

而事实上,它只是学会了如何绕过历史上所有的危险区域,从而形成了一个巨大的收益图。

但是,定价是一个动态的过程,总是在不断变化和前进,没有人能够猜到价格的走向:因此,基于机器学习的机器人在实际交易中总会在异常情况 下犯错。

 
佩特罗斯-沙塔赫兹扬

但当MO应用于外汇的历史数据时,它只会造成一种错觉,即它已经找到了最佳选择。

而实际上,他只是在历史上学会了绕开所有的危险区域,从而获得了巨大的收益图。

看完这些https://habr.com/ru/post/443240/

但它也不是那么糟糕,我将尝试第一百次表明我的观点:MO不比GA策略测试器好,也不比GA策略测试器差。

但这仍然是一个非常有趣的话题,它很吸引人 ))))

Понимание Q-learning, проблема «Прогулка по скале»
Понимание Q-learning, проблема «Прогулка по скале»
  • habr.com
Привет, Хабр! Предлагаю вашему вниманию перевод статьи «Understanding Q-Learning, the Cliff Walking problem» автора Lucas Vazquez. В последнем посте мы представили проблему «Прогулка по скале» и остановились на страшном алгоритме, который не имел смысла. На этот раз мы раскроем секреты этого серого ящика и увидим, что это совсем не так...
 

嗯,事实证明,它很容易应用。从例子1来看。

我们设定了状态的数量,以及转换的序列(比如说,历史的)。即处于某一特定状态的概率。然后它计算所有州的总概率。

或者在MAshki上做一个简单的例子作为开头,但到目前为止我还是不知道怎么做,也许@mytarmailS 会解释。

//+------------------------------------------------------------------+
//|                                                          HMM.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Math\Alglib\dataanalysis.mqh>
CMCPDState states;
CMCPDReport report;
CMatrixDouble track0, track1, results;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   track0.Resize(5, 2);
   track1.Resize(4,2);
   
   track0[0].Set(0, 1.0);
   track0[0].Set(1, 0.0);
   
   track0[1].Set(0, 0.95);
   track0[1].Set(1, 0.05);
   
   track0[2].Set(0, 0.92750);
   track0[2].Set(1, 0.07250);
   
   track0[3].Set(0, 0.91738);
   track0[3].Set(1, 0.08263);
   
   track0[4].Set(0, 0.91282);
   track0[4].Set(1, 0.08718);
   
   track1[0].Set(0, 0.8);
   track1[0].Set(1, 0.2);
   
   track1[1].Set(0, 0.86);
   track1[1].Set(1, 0.14);
   
   track1[2].Set(0, 0.887);
   track1[2].Set(1, 0.113);
   
   track1[3].Set(0, 0.89915);
   track1[3].Set(1, 0.10085);
   
   CMarkovCPD::MCPDCreate(2, states);
   CMarkovCPD::MCPDAddTrack(states, track0, 5);
   CMarkovCPD::MCPDAddTrack(states, track1, 4);
   CMarkovCPD::MCPDSolve(states);
   CMarkovCPD::MCPDResults(states, results, report);
   
   for(int i=0;i<results.Size();i++)
     {
      Print(results[i][0]);
      Print(results[i][1]);
     }
  }
//+------------------------------------------------------------------+
 

这里描述了这样一个带有MAs(非常简单)的策略

https://www.quantstart.com/articles/market-regime-detection-using-hidden-markov-models-in-qstrader

Market Regime Detection using Hidden Markov Models in QSTrader | QuantStart
Market Regime Detection using Hidden Markov Models in QSTrader | QuantStart
  • www.quantstart.com
In the previous article on Hidden Markov Models it was shown how their application to index returns data could be used as a mechanism for discovering latent "market regimes". The returns of the S&P500 were analysed using the R statistical programming environment. It was seen that periods of differing volatility were detected, using both...
 
马克西姆-德米特里耶夫斯基

嗯,事实证明,它很容易应用。从例子1来看。

我们设定了状态的数量,以及转换的序列(比如说,历史的)。即处于某一特定状态的概率。然后它计算所有州的总概率。

或者在MAshki上做一个简单的例子作为开端,但是到目前为止我还是不知道怎么做,也许@mytarmailS 会解释。

//+------------------------------------------------------------------+
//|                                                          HMM.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Math\Alglib\dataanalysis.mqh>
CMCPDState states;
CMCPDReport report;
CMatrixDouble track0, track1, results;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   track0.Resize(5, 2);
   track1.Resize(4,2);
   
   track0[0].Set(0, 1.0);
   track0[0].Set(1, 0.0);
   
   track0[1].Set(0, 0.95);
   track0[1].Set(1, 0.05);
   
   track0[2].Set(0, 0.92750);
   track0[2].Set(1, 0.07250);
   
   track0[3].Set(0, 0.91738);
   track0[3].Set(1, 0.08263);
   
   track0[4].Set(0, 0.91282);
   track0[4].Set(1, 0.08718);
   
   track1[0].Set(0, 0.8);
   track1[0].Set(1, 0.2);
   
   track1[1].Set(0, 0.86);
   track1[1].Set(1, 0.14);
   
   track1[2].Set(0, 0.887);
   track1[2].Set(1, 0.113);
   
   track1[3].Set(0, 0.89915);
   track1[3].Set(1, 0.10085);
   
   CMarkovCPD::MCPDCreate(2, states);
   CMarkovCPD::MCPDAddTrack(states, track0, 5);
   CMarkovCPD::MCPDAddTrack(states, track1, 4);
   CMarkovCPD::MCPDSolve(states);
   CMarkovCPD::MCPDResults(states, results, report);
   
   for(int i=0;i<results.Size();i++)
     {
      Print(results[i][0]);
      Print(results[i][1]);
     }
  }
//+------------------------------------------------------------------+

在alglib中,按照我的理解(可能是错误的),你必须自己按所需的集群数量来编译轨道。在Python的那些例子中,你要求正确的集群数量,它将自己重新分配数据。

虽然如果分类,有2个类,我们可能可以按以下方式连锁:从0开始,直到变成1;从1开始,直到变成0。 由于我们没有中间的0.95,0.8等。

 
elibrarius

在alglib中,按照我的理解(可能是错误的),你必须自己按正确的簇数来编译轨道。而在那些Python例子中,你要求正确的集群数量,它就会自己重新分配数据。

虽然如果分类,有2个类,你可能可以这样连锁:从0开始,直到变成1;从1开始,直到变成0。 因为我们没有中间的0.95,0.8等。

我完全不明白它是如何运作的。你为什么不直接通过NS使用分类?

我不明白它如何在python中输出结果,包括新的数据。而在alglib中,如何在新的数据上获得预测状态,并对每个维度分别进行预测。每次都有太多的巴克利人。

而alglib似乎有问题,是一个不同的模型