股票量化软件:赫兹量化系统中计算机视觉

为交易设计的训练神经网络准备数据的一个基本问题是准备必要的输入数据。例如,当我们使用十几个指标时,请考虑这种情况。这些指标可能代表一组若干信息图表。如果我们将这些指标计算到一定的深度,那么结果将多达100个条目,在某些情况下甚至更多。我们能用计算机视觉使神经网络训练更容易吗?为了解决这个问题,让我们使用卷积神经网络,这是经常用来解决分类和识别问题。

为神经网络训练和测试准备一组图像

在准备一组图像之前,先定义神经网络的用途。理想情况下,在轴枢点上训练网络会很好。根据这个目的,我们需要用最后一个极值柱做截图。然而,这个实验没有实际价值。这就是为什么我们将使用另一组图像。此外,还可以使用不同的数组进行实验,包括上面提到的数组。这也可能为神经网络在解决基于图像的分类任务时的效率提供额外的证据。在连续时间序列上获得的神经网络响应需要额外的优化。

也可以附加任何其他指标,我随意拿了这些指标。还建议根据您的硬件功能找到最佳图表大小。

使用以下脚本创建图像数组。

 
 

//+------------------------------------------------------------------+ //| CNNet.mq5 | //| Copyright 2021, Andrey Dibrov. | //| https://www.mql5.com/en/users/tomcat66 | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, Andrey Dibrov." #property link "https://www.mql5.com/en/users/tomcat66" #property version "1.00" #property strict #property script_show_inputs input string Date="2017.01.02 00:00"; input string DateOut="2018.12.13 23:00"; input string DateTest="2019.01.02 00:00"; input string Dataset="Train"; string Date1; int count,countB,countS; int day; double DibMin; double DibMax; int HandleDate; long WIDTH; long HEIGHT; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- MqlDateTime stm; ChartSetInteger(0,CHART_SHIFT,false); ChartSetInteger(0,CHART_AUTOSCROLL,false); ChartSetInteger(0,CHART_SHOW_OBJECT_DESCR,false); WIDTH=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS); ChartSetInteger(0,CHART_SHOW_PRICE_SCALE,false); if(Dataset=="Test") { HandleDate=FileOpen(Symbol()+"Date.csv",FILE_CSV|FILE_READ|FILE_WRITE|FILE_ANSI,";"); ChartNavigate(0,CHART_END,-(iBarShift(NULL,PERIOD_H1,StringToTime(DateTest)))); Sleep(1000); for(int i=iBarShift(NULL,PERIOD_H1,StringToTime(DateTest)); i>0; i--) { Date1=TimeToString(iTime(NULL,PERIOD_H1,i)); if(DateTest<=Date1) { if(ChartNavigate(0,CHART_END,-i)) { Sleep(20); if(ChartScreenShot(0, (string)count + ".png", (int)WIDTH, (int)WIDTH, ALIGN_LEFT)) { FileWrite(HandleDate,TimeToString(iTime(NULL,PERIOD_H1,i))); count++; Sleep(20); } } } } } if(Dataset=="Train") { ChartNavigate(0,CHART_END,-iBarShift(NULL,PERIOD_H1,StringToTime(Date))); Sleep(1000); for(int i=iBarShift(NULL,PERIOD_H1,StringToTime(Date)); i>=iBarShift(NULL,PERIOD_H1,StringToTime(DateOut)); i--) { TimeToStruct(iTime(NULL,PERIOD_H1,i),stm); Date1=TimeToString(iTime(NULL,PERIOD_H1,i)); if(DateOut>=Date1 && Date<=Date1) { if(ChartNavigate(0,CHART_END,-i)) { Sleep(20); if(day != stm.day) { FileCopy("Sell" + (string)countS + ".png", 0, "Buy" + (string)(countB+1) + ".png", FILE_REWRITE); FileDelete("Sell" + (string)countS + ".png", 0); FileCopy("Buy" + (string)countB + ".png", 0, "Sell" + (string)(countS+1) + ".png", FILE_REWRITE); FileDelete("Buy" + (string)countB + ".png", 0); countB ++; countS ++; } day = stm.day; if(stm.hour == 0) { DibMin = iOpen(NULL, PERIOD_H1, i); DibMax = iOpen(NULL, PERIOD_H1, i); } if(iLow(NULL, PERIOD_H1, i+1) < DibMin) { DibMin = iLow(NULL, PERIOD_H1, i+1); countS ++; ChartScreenShot(0, "Sell" + (string)countS + ".png", (int)WIDTH, (int)WIDTH, ALIGN_LEFT); } if(iHigh(NULL, PERIOD_H1, i+1) > DibMax) { DibMax = iHigh(NULL, PERIOD_H1, i+1); countB ++; ChartScreenShot(0, "Buy" +(string)countB + ".png", (int)WIDTH, (int)WIDTH, ALIGN_LEFT); } Sleep(20); } } else break; } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值