我们可以从相反的方向开始。
- 我们设定条件,在给定的条数下,我们必须取多少个点。
- 然后寻找这样的地方
- 在发现 "鱼 "点后,分析在 "鱼 "点之前有哪些条形组合(图案)。
Maxim Dmitrievsky:
这是可能的,它是在图形图像的识别领域(机器视觉)。
有什么好的办法可以做到这一点吗?可以计算不同的概率和价格水平,如何做到这一点?
也许这就是 你正在寻找的东西。
Как искать паттерны в биржевых данных и использовать их в торговле?
- habrahabr.ru
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли. Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения. В статье есть несколько приятных бонусов в виде кода...
Vladimir Karputov:
我们可以从相反的方向开始。
- 我们设定条件,在给定的条数下,我们必须取多少个点。
- 然后寻找这样的地方
- 在发现 "鱼 "点后,分析在 "鱼 "点之前有哪些条形组合(图案)。
基本上,是的,但当模式这样或那样发展时,盈利概率不会被考虑在内。最好从一开始就引入这些风险,而不是在过程中纠正它们。
所以你也要对模式进行分组(计算)....
Maxim Dmitrievsky:
原则上,是的,但它不会考虑到当模式向一个方向移动时的盈利概率。
原则上,是的,但它不会考虑到当模式向一个方向移动时的盈利概率。
你是什么意思?首先,我们要寻找 "鱼的地方"。第二阶段是分析 "鱼地方 "之前的酒吧状态。
Igor Yeremenko:
这是有可能的,这是在图像识别(机器视觉)领域。
这是有可能的,这是在图像识别(机器视觉)领域。
将其附加到mql上需要时间...而且我对预测不感兴趣,而是对寻找最佳的输入和输出感兴趣
Vladimir Karputov:
你是什么意思?毕竟,首先要找的是 "鱼的地方"。第二步是分析鱼点之前的酒吧状态。
你是什么意思?毕竟,首先要找的是 "鱼的地方"。第二步是分析鱼点之前的酒吧状态。
我想给模式和它们的子波分配一些概率估计,在我看来,仅仅寻找N个点的位置太原始了。我们需要从统计学上描述这个模式,但我还没有想出办法。
Maxim Dmitrievsky:
我想给这些模式和它们的子波分配一些概率性的估计。有必要从统计学上描述这个模式,我还没有想出办法。
我想给这些模式和它们的子波分配一些概率性的估计。有必要从统计学上描述这个模式,我还没有想出办法。
一个人应该一步一步地走下去。起初,只需找到一定大小的蜡烛。视觉上看到我们有什么。
搜索一个模式,版本 "1.000"
//+------------------------------------------------------------------+ //| Search of a pattern.mq5 | //| Copyright © 2017, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.000" #property description "Индикатор поиска свечей с заданным размером тела" #property description "Найденные свечи отмечаются символами из набора Wingdings" #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Arrows #property indicator_label1 "Bull candle" #property indicator_type1 DRAW_ARROW #property indicator_color1 clrBlue #property indicator_width1 1 #property indicator_label2 "Bear candle" #property indicator_type2 DRAW_ARROW #property indicator_color2 clrRed #property indicator_width2 1 //--- input параметры sinput string __1__ = ""; // Параметр тела свечи input ushort min_size_candel = 15; // Минимальный размер тела свечи () input ushort bull_code = 226; // Код символа бычьего бара(32-255) input ushort bear_code = 225; // Код символа медвежьего бара(32-255) sinput string __2__ = ""; // Параметр смещения input uchar vertical_shift = 15; // Смещение стрелок по вертикали (0-255) //--- индикаторные буфера для построения double BufferBull[]; double BufferBear[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,BufferBull,INDICATOR_DATA); SetIndexBuffer(1,BufferBear,INDICATOR_DATA); //--- зададим код символа для отрисовки в PLOT_ARROW PlotIndexSetInteger(0,PLOT_ARROW,bull_code); PlotIndexSetInteger(1,PLOT_ARROW,bear_code); //--- зададим cмещение стрелок по вертикали в пикселях PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,-(int)vertical_shift); PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,(int)vertical_shift); //--- установим в качестве пустого значения 0 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { static datetime prev_time=0; //--- работаем только в момент рождения нового бара, внутри бара не работаем if(prev_time==time[rates_total-1]) return(rates_total); //--- на новом баре запоминает время его рождения prev_time=time[rates_total-1]; //--- блок расчета значений индикатора int start=1; if(prev_calculated>0) start=prev_calculated; //--- цикл расчета for(int i=start;i<rates_total;i++) { //--- если предыдущая свеча имеет тело больше минимального if(MathAbs(open[i-1]-close[i-1])/Point()>min_size_candel) { if(open[i-1]<close[i-1]) BufferBull[i-1]=high[i-1]; if(open[i-1]>close[i-1]) BufferBear[i-1]=low[i-1]; } } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
附加的文件:
比方说,我们有一块图表。我们需要(在历史上)研究出开启交易的最佳方式。在哪里买,在哪里卖,在哪里买更多,在哪里关闭,等等。但我们必须考虑到模式可能是不同的,我们必须找到最有效的方法来计算任何模式的开仓 位置,同时将风险降到最低。 一个模式中可能有几个交易。还有一个重要的条件,图案可以在一定范围内变化,比如20%。也就是说,一开始我们看到的是一个模式,而在下一个小节,它将发生一些变化,尽管它的基本特征保持不变(但我们将始终看到整个模式和它的所有未来变化)。也就是说,我们需要引入一些其他的误差因素。
你有什么好的办法吗?可以计算各种概率和价格水平,如何做到这一点?