패턴의 가장 중요한 통계적 특성 분석 및 이에 대한 거래 방법 선택.

 

그래프 조각이 있다고 가정해 보겠습니다. 거래를 시작하는 가장 최적의 방법을 (역사에 대해) 알아낼 필요가 있습니다. 구매처, 판매처, 기타 구매처, 마감 장소 등. 그러나 패턴이 다를 수 있다는 점을 고려해야 하며 위험을 최소화하면서 모든 패턴에 대해 포지션을 여는 장소를 계산하는 가장 효과적인 방법을 선택해야 합니다. 패턴에 대해 여러 거래가 있을 수 있습니다. 또 다른 중요한 조건이 있습니다. 패턴은 특정 범위 내에서 변할 수 있습니다. 예를 들어 20%씩 변한다고 가정해 보겠습니다. 즉, 처음에는 하나의 패턴이 표시되고 다음 막대에서는 주요 특성이 동일하게 유지되었지만 이미 다소 변경되었습니다(그러나 항상 전체 패턴과 모든 후속 변경 사항을 관찰할 것입니다). 즉, 더 많은 오류 요인을 도입해야 합니다.

이 작업을 수행하는 가장 좋은 방법에 대한 아이디어가 있습니까? 다양한 확률적 특성과 가격 수준을 계산하는 것이 가능합니다. 어떻게 할까요?

 

뒤로가기 시작할 수 있습니다.

  • 주어진 막대 수에 대해 몇 점을 취해야 하는지에 대한 조건을 설정합니다.
  • 그런 장소에 대한 추가 검색
  • "물고기" 장소를 찾은 후 "물고기" 장소 앞에 있는 막대(패턴)의 실제 조합이 무엇인지 분석합니다.

 
Maxim Dmitrievsky :

이 작업을 수행하는 가장 좋은 방법에 대한 아이디어가 있습니까? 다양한 확률적 특성과 가격 수준을 계산하는 것이 가능합니다. 어떻게 할까요?

할 수 있습니다. 이것은 그래픽 이미지(머신 비전) 인식 분야에서
 
아마도 여기 에 당신이 찾고있는 것입니다.
Как искать паттерны в биржевых данных и использовать их в торговле?
Как искать паттерны в биржевых данных и использовать их в торговле?
  • habrahabr.ru
Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли. Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения. В статье есть несколько приятных бонусов в виде кода...
 
Rafael Sahibgareev :
아마도 여기 에 당신이 찾고있는 것입니다.
기사는 없지만 MQL5에 대한 끔찍한 뒷맛을 남깁니다. MQL5에서 무릎을 꿇고 연구하는 것은 어리석은 이지만 불가능합니다.
 
Vladimir Karputov :

뒤로가기 시작할 수 있습니다.

  • 주어진 막대 수에 대해 몇 점을 취해야 하는지에 대한 조건을 설정합니다.
  • 그런 장소에 대한 추가 검색
  • "물고기" 장소를 찾은 후 "물고기" 장소 앞에 있는 막대(패턴)의 실제 조합이 무엇인지 분석합니다.


원칙적으로 그렇습니다. 그러나 여기에서 패턴이 한 방향 또는 다른 방향으로 "가는" 경우 이익의 확률은 고려되지 않습니다. 초기에 이러한 위험을 감수하고 도중에 조정하지 않는 것이 바람직합니다.
 

즉, 패턴에 대한 클러스터링도 설정(계산)하고 싶습니다.

 
Maxim Dmitrievsky :

원칙적으로 예, 그러나 여기에서 패턴이 한 방향 또는 다른 방향으로 "가는" 경우 이익 확률은 고려되지 않습니다.

뭐라고요? 어쨌든 먼저 "물고기 장소"를 찾고 있습니다. 2단계에서는 낚시터 앞 바의 상태를 분석한다.
 
Igor Yeremenko :
할 수 있습니다. 이것은 그래픽 이미지(머신 비전) 인식 분야에서

지금은 mql에 고정합니다... 예, 예측은 필요하지 않지만 최고의 진입 및 퇴장 검색
 
Vladimir Karputov :

뭐라고요? 어쨌든 먼저 "물고기 장소"를 찾고 있습니다. 2단계에서는 낚시터 앞 바의 상태를 분석한다.

나는 발견된 패턴과 그 하위 파동에 확률적 추정치를 할당하고 싶었습니다. n-포인트에서 섹션을 찾는 것이 어찌보면 너무 원시적인 것 같았습니다. 패턴을 통계적으로 설명해야 합니다.
 
Maxim Dmitrievsky :

나는 발견된 패턴과 그 하위 파동에 확률적 추정치를 할당하고 싶었습니다. n-포인트에서 섹션을 찾는 것이 어찌보면 너무 원시적인 것 같았습니다. 패턴을 통계적으로 설명해야 합니다.


단계별로 진행해야 합니다. 먼저 주어진 크기의 양초를 찾으십시오. 어떤 일이 일어났는지 시각적으로 확인하세요.

패턴 검색, 버전 "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);
  }
//+------------------------------------------------------------------+

MetaTrader 거래 플랫폼 스크린샷

EURUSD, M5, 2017.04.02

MetaQuotes Software Corp., MetaTrader 5, 데모

패턴 검색, 버전 "1.000"

EURUSD, M5, 2017.04.02, MetaQuotes Software Corp., MetaTrader 5, 데모


파일: