文章 "使用带 ENCOG 机器学习框架的 MetaTrader 5 指标进行时间序列预测" - 页 4

 

有人使用这款神经网络智能交易系统赚到钱了吗?

 

希望能将其翻译到 Encog 3.1 中;因为我在挪威平台上使用原始版本时遇到了问题。

在 3.1 平台上,我不确定如何进行时间拳击,而当跳过这一步时,网络似乎不会产生最终结果。


// 第 2 步:规范化
Console.WriteLine("Step 2:创建未来指标");

var analyst = new EncogAnalyst();
var wizard = new AnalystWizard(analyst);
wizard.Wizard(new System.IO.FileInfo(STEP2_FILENAME), true, AnalystFileFormat.DecpntComma);
analyst.
analyst.Script.Normalize.NormalizedFields[0].MakePassThrough(); //Is this needed?MakePassThrough();
var norm = new AnalystNormalizeCSV();
norm.Analyze(new System.IO.FileInfo(STEP2_FILENAME), true, CSVFormat.English, analyst);
norm.ProduceOutputHeaders = true;

norm.Normalize(new System.IO.FileInfo(STEP4_FILENAME));

// 第 3 步省略,因为我不知道如何在 3.1 中设置时间框。原始示例中写着 "可选"。

Console.WriteLine("Step 4: Train");
Console.ReadKey();
INeuralDataSet training = (BasicNeuralDataSet)EncogUtility.LoadCSV2Memory(STEP4_FILENAME, 3 + externalIndicatorCount, // 我找不到关于输入计数和理想计数应该是多少的详细记录。相同吗?
3 + externalIndicatorCount, true, CSVFormat.English, true);
BasicNetwork network = new BasicNetwork();
network.AddLayer(new BasicLayer(new ActivationTANH(), true, inputNeurons));
network.AddLayer(new BasicLayer(new ActivationTANH(), true, HIDDEN1_NEURONS));
network.AddLayer(new BasicLayer(new ActivationLinear(), true, outputNeurons));
network.Structure.FinalizeStructure();
network.Reset();
// 训练神经网络
EncogUtility.TrainConsole(network, training, 3);
Console.WriteLine(@"Training complete, saving network."); // 它从未到达这里,所以显然出了问题
EncogDirectoryPersistence.SaveObject(new System.IO.FileInfo(STEP5_FILENAME), network);

目前的情况是(在原始示例/版本中),我在 ind.Process 行遇到了第一个问题,生成的文件只有 3 列。分析(Analyze)步骤似乎能正确获取全部 6 列的文件,但生成的文件应该有 7 列。将国家设置设为美国(英语)时,生成的文件没有问题,但这不是我的正常配置,而且还带来了一些我想避免的其他问题。


            ProcessIndicators ind = new ProcessIndicators();
            ind.Analyze(STEP1_FILENAME, true, CSVFormat.DECIMAL_POINT);
            int externalIndicatorCount = ind.Columns.Count - 3;
            ind.AddColumn(new BestReturn(RESULT_WINDOW,true)); 
            ind.Process(STEP2_FILENAME);    
 

您好、

我最终找到了放置 dlls 的位置,脚本和指标也能正常工作,但电子交易系统却不行。

我的英特尔 i7 核心第一代笔记本希望访问 OpenCL 进行多核计算,而我似乎没有,因此电子表格不想知道。

我把所有这些都转移到了我的英特尔 i7 核心第二代笔记本电脑上,现在它需要我的 64 位版本 EncogNNTrainDLL.dll!

我在互联网上搜索了一下,但似乎找不到这个文件,谁有什么好主意?

顺便说一句,这篇文章写得很好,我一直对神经网络很感兴趣--从计算机内存以千字节为单位的时代就开始了。

我喜欢杰夫-希顿的视频,非常值得一看。

谢谢 - Rewop

 

你好,Ivesteo、

文章不错,谢谢!

请问您使用的是哪种训练方法?您使用的是 SOM 还是前馈网络?我不是很清楚你使用的理想数据是什么。

谢谢、

HyperPro.

 

什么是 RESULT_WINDOW?我的理解是否正确,这些条形图仅在网络训练期间提供?毕竟,在工作时没有任何地方可以获取未来的条形图

/// 使用的未来条数。
        /// </summary> 

public const int RESULT_WINDOW = 5

// 为获得最佳结果而使用的前进 条数

        /// </summary>
        public const int RESULT_WINDOW = 5;

 

好文章,我是一名非常优秀的 C# 开发人员。

我按照你之前的文章,让非托管 DLL 与 .NET 应用程序对话。然后,我使用托管管道让我的 C# 封装代码通过 WCF 与 .NET 网络应用程序对话。

我计划将其备份到 SQL 数据库,并对 EA 进行报告和远程订单管理。下一步是插入一些神经网络 代码并开始测试。

再次感谢,这是我最近读到的最好的文章。

 

讨论突然中断了......

有人使用过这个图书馆吗?值得研究吗?

我非常喜欢这篇文章。向作者致敬!

 

你们好、

我想把这篇文章移植到 encog v.3.2 版,但在第 3 步时间框方面遇到了问题。 有人 完成 步骤 3 吗?


 // 第 1 步:创建未来指标
            Console.WriteLine("Step 1: Analyze MT5 Export & Create Future Indicators");
            ProcessIndicators ind = new ProcessIndicators();
            ind.Analyze(new FileInfo(STEP1_FILENAME), true, CSVFormat.DecimalPoint);
            int externalIndicatorCount = ind.Columns.Count - 3;
            ind.AddColumn(new BestReturn(RESULT_WINDOW, true));
            ind.Process(new FileInfo(STEP2_FILENAME));
            Console.WriteLine("External indicators found: " + externalIndicatorCount);

            // 第 2 步:标准化
            Console.WriteLine("Step 2: Create Future Indicators");
            var analyst = new EncogAnalyst();
            var wizard = new AnalystWizard(analyst);
            wizard.Goal = AnalystGoal.Classification;
            wizard.Wizard(new System.IO.FileInfo(STEP2_FILENAME), true, AnalystFileFormat.DecpntComma);
            analyst.Script.Normalize.NormalizedFields[0].MakePassThrough();      // 是否需要这样做?
            analyst.Script.Normalize.NormalizedFields[1].MakePassThrough();

            var norm = new AnalystNormalizeCSV();
            norm.ExpectInputHeaders = true;
            norm.Format = CSVFormat.English;
            norm.Analyze(new FileInfo(STEP2_FILENAME), true, CSVFormat.English, analyst);
            norm.ProduceOutputHeaders = true;

            norm.Normalize(new FileInfo(STEP3_FILENAME));


            Console.WriteLine("Step 3: Time-boxses");
            // 神经元计数
            int inputNeurons = INPUT_WINDOW * externalIndicatorCount;
            int outputNeurons = PREDICT_WINDOW;

            FileInfo rawFile = new FileInfo(STEP3_FILENAME);


               //Step 3 

                HOW???
            
            Console.WriteLine("Step 4: Train");
            IMLDataSet training = (IMLDataSet)EncogUtility.LoadCSV2Memory(STEP4_FILENAME, inputNeurons,
                                                                                     outputNeurons, true, CSVFormat.English,false);
            

            BasicNetwork network = new BasicNetwork();
            network.AddLayer(new BasicLayer(new ActivationTANH(), true, inputNeurons));
            network.AddLayer(new BasicLayer(new ActivationTANH(), true, HIDDEN1_NEURONS));
            network.AddLayer(new BasicLayer(new ActivationLinear(), true, outputNeurons));
            network.Structure.FinalizeStructure();
            network.Reset();

            //EncogUtility.TrainToError(network, training, TARGET_ERROR);
            EncogUtility.TrainConsole(network, training, 3);
            Console.WriteLine(@"Training complete, saving network.");  // 它从来没有到过这里,所以显然出了问题
            EncogDirectoryPersistence.SaveObject(new System.IO.FileInfo(STEP5_FILENAME), network);
 

您好、

我也在尝试将所有必要的东西移植到 3.2 版。因为网上没有 2.6 版,所以我别无他法。但这似乎是在丛林中穿行。我已经工作了大约 4 周。但我看不到尽头。

有人成功移植了吗?谁能帮帮我?

非常感谢。

refltr

 
我已经成功地用 encog 3.3 和 mt4 移植了这个线程,但我还没有使用专家顾问。