欢迎光临散文网 会员登陆 & 注册

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

2023-10-12 14:53 作者:大牛啊呢  | 我要投稿

为交易设计的训练神经网络准备数据的一个基本问题是准备必要的输入数据。例如,当我们使用十几个指标时,请考虑这种情况。这些指标可能代表一组若干信息图表。如果我们将这些指标计算到一定的深度,那么结果将多达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;        }     }  }


股票量化软件:赫兹量化系统中计算机视觉的评论 (共 条)

分享到微博请遵守国家法律