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

 
Maxim Dmitrievsky:

这里的条形图是按死亡时间重新索引的,因为在历史上可能有遗漏的条形图,所以没有漏洞。然后抛出空值,然后我们通过MA进行去趋势。

在交易员中没有任何遗漏,因为最后的n个小节都被拿走了。它们不应该被颠覆。

我认为这不会影响什么。我不认为会有什么不同。 但我可能会重新做,看看。

好吧,不是重做,只是把它打印出来,与原件进行比较 - 如果方向正确的话
 
与这里所写的类似,预测过去的未知栏比未来的更容易。
 
elibrarius:
好吧,不重做,只是打印出来,与原件比较--如果方向没有错的话。
...        ...      ...
3267  0.001091  1.18140
3268  0.000421  1.18077
3269  0.001455  1.18191
3270  0.001636  1.18225
3271  0.001829  1.18258

[3258 rows x 2 columns]
>>>
...        ...      ...
3225  0.001091  1.18140
3226  0.000421  1.18077
3227  0.001455  1.18191
3228  0.001636  1.18225
3229  0.001829  1.18258

[3230 rows x 2 columns]

没关系,最后一个值与终端的最后一个条形图的价格相对应。

 

我将分享我的经验--当使用分钟条上TF的当前条的OHLC值时,确保获得的数据的稳定性,它很可能在应用模型时至关重要,因为没有人保证在不考虑当前分钟条的OHLC累积的情况下获得价格。

我做了一个解决这个问题的函数,现在分享一下

//+------------------------------------------------------------------+
//|Получение информации о ценах OHLC текущего бара                   |
//+------------------------------------------------------------------+
void Get_OHLC(string symbol,ENUM_TIMEFRAMES TF, double &arr_OHLC[])
{
   ArrayResize(arr_OHLC,4);
   arr_OHLC[0]=iOpen(symbol,TF,0);
   arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   if(TF!=PERIOD_M1)
   {
      double arr_High[];
      double arr_Low[];
      int copied=0;
      datetime s=iTime(symbol,TF,0);
      datetime f=iTime(symbol,PERIOD_M1,1);
      if(s<f)
      {
         copied=CopyHigh(symbol,PERIOD_M1,s,f,arr_High);
         if (copied>0)
         {
            arr_OHLC[1]=arr_High[ArrayMaximum(arr_High,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_High");
         }
         copied=CopyLow(symbol,PERIOD_M1,s,f,arr_Low);
         if (copied>0)
         {
            arr_OHLC[2]=arr_Low[ArrayMinimum(arr_Low,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_Low");
         }
      }
      else
      {
         if(s==f)//Если ТФ открылся на прошлом минутном баре
         {
            arr_OHLC[1]=iHigh(symbol,PERIOD_M1,1);
            arr_OHLC[2]=iLow(symbol,PERIOD_M1,1);
         }
         if(s>f)//Если ТФ открылся на текущем минутном баре
         {
            arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
            arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
         }
      }
   }
   else
   {
      arr_OHLC[0]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   }
}
 
Aleksey Vyazmikin:

我将分享我的经验--当使用分钟条上TF的当前条的OHLC值时,确保获得的数据的稳定性,它很可能在应用模型时至关重要,因为没有人保证在不考虑当前分钟条的OHLC累积的情况下获得价格。

我做了一个函数,解决了这个问题。

这是一个终端错误还是什么?
我想,随着第一个刻度的出现,例如在星期一的0:00,所有的条形图都会自动出现,直到每周一次。

如果它是一个错误,请将请求连同描述和代码发送给servicedek,以便重新播放。将在下一个版本中修复它。

 
elibrarius:

这是个终端错误还是什么?
我想,在第一次打勾时,例如在星期一的0:00,所有一周以内的条形图都会自动出现。

如果它是一个bug - 发送一个带有描述和代码的请求给servicedek,以便进行复制。这将在下一个版本中得到修复。

在收到该工具的"√"时,条形图才会打开。可能在很长一段时间内都不会有虱子;-)

 
elibrarius:

这是个终端错误还是什么?
我想,在第一次打勾时,例如在星期一的0:00,所有的条形图都会自动出现,直到每周一次。

如果它是一个bug - 发送一个带有描述和代码的请求给servicedek,以便进行复制。这将在下一个版本中得到修复。

这是一个错误,不是一个修复。

情况可能是这样的:一个新的分钟条的新刻度线到来,我们使用的指标没有从第一个刻度线开始计算,跳过了这个刻度线,或者只是进入了所有预测器的计算,到了这个时间,在代码的中间询问了当前条的OHLC。OHLC一直在变化,在MO的情况下,它可能是关键。只是自己遇到了不同的预测器的计算方法,这取决于tick建模 的类型,事实上在将模型应用于市场时也是如此。

 

为术语,请告知。

"predictor "只是提交给训练的向量中的一个元素(其中一个值)吗?
,只是关于同一事物的一堆名称。

 

对不起,我的脸皮太厚了!

你也可以通过神经网络运行这些数据,当然,如果你有空闲时间的话。


EURUSD_options - 这个文件包含了所有可以在时间序列 中出现的选项。


EURUSD_data - 时间序列本身(最后收到的值在文件的末尾)。

有三栏,第一栏是应该预测的内容,另外两栏是答案的变体。

事实上,我们需要教NS从两个变体中选择正确的变体。 如果有可能预测有变体答案的列的下一个值,那也是可以的。

附加的文件:
 
Evgeny Dyuka:

为术语,请告知。

"predictor "只是提交给训练的向量中的一个元素(其中一个值)吗?
,只是关于同一事物的一堆名称。

是的,其同义词是fetch、input、predictor。