English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
계량경제학 EURUSD 1단계 예측

계량경제학 EURUSD 1단계 예측

MetaTrader 4트레이딩 시스템 | 3 9월 2021, 11:24
126 0
СанСаныч Фоменко
СанСаныч Фоменко

소개

이 글은 EViews 소프트웨어를 사용하여 EURUSD에 대한 한 단계 앞선 예측과 EViews의 프로그램을 통한 예측 결과의 추가 평가 및 MQL4에서 개발된 Expert Advisor에 중점을 둡니다. 이는 추가 설명 없이 사용되는 제안의 "지표 통계 매개변수 분석" 문서를 기반으로 합니다.


1. 모델 구축

이전 글은 다음 회귀 방정식의 분석으로 마무리되었습니다.

EURUSD = C(1)*EURUSD_HP(1) + C(2)*D(EURUSD_HP(1)) + C(3)*D(EURUSD_HP(2))

이 방정식은 초기 종가 호가를 점진적으로 분해한 결과입니다. 그 배후의 아이디어는 초기 따옴표에서 결정적 구성 요소를 분리하고 결과 잔차에 대한 추가 분석을 기반으로 합니다.

2011년 9월 12일부터 2011년 9월 17일까지 일주일 동안 바에서 EURUSD H1에 대한 모델 구축을 시작하겠습니다.


1.1. 초기 EURUSD 시세 분석

다음 단계를 계획하기 위해 초기 EURUSD 시리즈의 분석을 시작합니다.

먼저 EViews에서 추가 분석을 위해 따옴표가 포함된 파일을 생성하겠습니다. 이를 위해 관련 차트에 겹쳐진 지표를 사용하여 따옴표가 있는 필수 파일을 생성합니다.

지표의 스크립트는 아래에 나와 있으며 내 의견으로는 설명이 필요하지 않습니다.

//+------------------------------------------------------------------+
//|                                                   Kotir_Out.mq4  |
//|   Quotes output indicator for EViews                             |
//|   Version of 29.08.2011                                          |
//+------------------------------------------------------------------+
//--- indicator in the main window
#property indicator_chart_window
//--- number of visible indicator buffers
#property indicator_buffers            1
//--- setting the indicator color
#property indicator_color1             Red      // Forecast      
//--- setting the line width
#property indicator_width1             2
//--- external parameters
extern   int      Number_Bars=100;     // Number of bars
extern   string   DateTime_begin    =  "2011.01.01 00:00";
extern   string   DateTime_end      =  "2011.01.01 00:00";
//--- global variables
//--- declaring buffers
double   Quotes[];         // Quotes not visible
int      Quotes_handle;    // Pointer to Quotes file
int      i;                // Counter in cycle
//--- names of files for exchange with EViews
string   fileQuotes;       // Quotes file name
//+------------------------------------------------------------------+
//|Indicator initialization function                                 |
//+------------------------------------------------------------------+
int init()
  {
//--- number of indicator buffers
   IndicatorBuffers(1);
//--- setting the drawing parameters
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,0);
   SetIndexDrawBegin(0,Number_Bars);

//--- binding the indicator number to the name
   SetIndexBuffer(0,Quotes);  // Index buffer

//--- initial buffer values
   SetIndexEmptyValue(0,0.0);
//--- indicator name
   IndicatorShortName("Forecast");
//--- generating names of files for exchange with EViews
   fileQuotes="kotir.txt";   // Quotes file name
   int       N_bars_begin   =  0;
   int       N_bars_end     =  0;

   datetime  var_DT_begin   =  0;
   datetime  var_DT_end     =  0;
   bool      exact          =  false;
//---
//--- creating quotes file for EViews operation
   Quotes_handle=FileOpen(fileQuotes,FILE_CSV|FILE_WRITE,',');
//--- abend exit
   if(Quotes_handle<1)
     {
      Print("Failed to create the file ",fileQuotes," Error #",GetLastError());
      return(0);
     }
   FileWrite(Quotes_handle,"DATE","kotir");  // Header
//---    
//--- calculating the number of bars for export
   var_DT_begin =  StrToTime(DateTime_begin);
   var_DT_end   =  StrToTime(DateTime_end);

   if(var_DT_begin!=var_DT_end)
     {
      N_bars_begin=iBarShift(NULL,Period(),var_DT_begin,exact);
      N_bars_end=iBarShift(NULL,Period(),var_DT_end,exact);
      Number_Bars=N_bars_begin-N_bars_end;

      Print("Number_Bars = ",Number_Bars,
            ", N_bars_end = ",N_bars_end,
            ", N_bars_begin = ",N_bars_begin);

      for(i=N_bars_begin; i>=N_bars_end; i--)
        {
         FileWrite(Quotes_handle,
                   TimeToStr(iTime(Symbol(),Period(),i)),
                   iOpen(Symbol(),Period(),i));
        }
     }
   else
     {
      for(i=Number_Bars-1; i>=0; i--)
        {
         FileWrite(Quotes_handle,
                   TimeToStr(iTime(Symbol(),Period(),i)),
                   iOpen(Symbol(),Period(),i));
        }
     }
// --- writing quotes
   FileWrite(Quotes_handle, "Forecast ", 0);   // Forecast area
   FileClose(Quotes_handle);                  // Close quotes file
   Comment("Created quotes file with the number of bars =",Number_Bars+1);
//--- end of Init() section
   return(0);
  }
//+------------------------------------------------------------------+
//| Indicator start function                                         |
//+------------------------------------------------------------------+
int start()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//--- remove the message from the display
   Comment("                                                     ");
//----
   return(0);
  }
//+------------------------------------------------------------------+

위에서 지정한 날짜를 설정한 후 119줄로 구성된 따옴표 파일을 얻었습니다. 마지막 줄은 "Forecast, 0" - 이것이 미래 예측이 있는 곳입니다. 저는 공개 가격을 사용하고 있음을 명심하세요. 또한 파일의 따옴표는 프로그래밍 언어에서와 같이 MQL4와 반대 순서로 정렬됩니다.

지표는 분명히 터미널 폴더 \expert\files\에 quote.txt 파일을 생성합니다. 아래에서 검토할 Expert Advisor는 DEMO 또는 REAL 모드에서 작동할 때 지정된 폴더에서 따옴표 파일을 가져옵니다. 그러나 테스트 모드에서 사용할 때 이 파일은 \tester\files\ 폴더에 있어야 하므로 수동으로 quote.txt를 터미널의 \tester\files\ 폴더에 넣습니다.

차트는 다음과 같습니다.


그림 1. EURUSD H1 시세 차트


우리는 하나 또는 수많은 추세를 관찰할 수 있지만 우리의 목표는 거래 시스템의 미래 안정성을 예측하는 것입니다. 따라서 우리는 초기 EURUSD H1 호가의 고정성에 대한 분석을 수행할 것입니다.

기술 통계량을 계산해 보겠습니다.



그림 2. 기술 통계


기술 통계는 다음을 시사합니다.

  • 오른쪽으로 치우쳐 있습니다(0이어야 하지만 0.244950이 있어야 함).
  • 초기 호가가 정규 분포가 될 확률은 9.64%입니다.

시각적으로 히스토그램은 정규 분포와 확실히 관련이 없지만 9.64%의 확률은 특정 환상을 불러일으킵니다.

이론과 비교하여 보여드리겠습니다.


그림 3. 이론적 정규 분포 곡선과 비교한 EURUSD 히스토그램


EURUSD_Рќ1 따옴표가 정규 분포와 거리가 멀다는 것을 시각적으로 확인할 수 있습니다.

그러나 호가에 결정적 요소가 존재함을 시사하는 경향을 볼 수 있는 반면, 그러한 요소의 존재는 랜덤 변수(따옴표)의 통계적 특성을 완전히 왜곡할 수 있다는 경향을 볼 수 있으므로 결론을 내리기는 아직 이릅니다.

따옴표의 자기상관 함수를 계산해 봅시다.

다음과 같이 나타납니다.


그림 4. EURUSD_H1 호가의 자기상관 함수


차트를 그릴 때 시차 간의 상관 관계가 부족할 확률을 얻었습니다. 처음 16개 시차는 0이 아닙니다. 차트와 확률은 EURUSD_H1의 시차 사이에 상관 관계가 있음을 분명히 나타냅니다. 즉, 고려 중인 호가에 결정적 구성 요소가 포함되어 있습니다.

초기 호가에서 결정적 구성 요소를 빼면 잔차에는 어떤 통계적 특성이 있습니까?

이를 위해 단위 루트 테스트를 적용하여 초기 호가의 첫 번째 차이(잔차)로 작업하는 것이 더 유망한지 여부를 확인합니다.


표 1. 단위 루트 테스트

위의 테스트는 다음을 보여줍니다.

  • 초기 따옴표가 단위 루트를 가질 확률(첫 번째 차이는 정규 분포)은 41%입니다.
  • DW(Durbin-Watson) 통계는 2.2를 약간 넘는데, 이는 첫 번째 차이가 정규 분포를 따른다는 것을 의미하기도 합니다.
결론: 가격 시리즈의 추세를 제거한 다음 추세 제거의 잔차를 분석하는 것이 합리적일 것입니다.


1.2. 스무딩

Hodrick-Prescott 필터는 이전 글과 유추하여 EURUSD 호가에서 결정적 구성 요소를 분리하는 데 사용됩니다.

시리즈 이름의 숫자 "10"은 Hodrick-Prescott 필터의 람다 매개변수를 나타냅니다. 이 도구 뒤에 있는 이론에 따르면 람다 값은 다음과 같이 나타나는 결과에 매우 중요합니다.



그림 5. Hodrick-Prescott 필터를 사용한 평활화 결과

EViews 표기법에서 다음과 같이 나타나는 이전 글의 방정식을 사용할 것입니다.

따옴표 = C(1) * HP(-1) + C(2) * D(HP(-1)) + C(3)*D(HP(-2))

즉, 이 방정식에서 초기 따옴표와 결정적 구성 요소 간의 차이를 의미하는 결정적 구성 요소와 노이즈를 고려합니다.

초기 호가의 현재 모델을 분석한 후 다음 회귀 방정식 매개변수를 얻습니다.


표 2. 회귀 방정식 추정


РќР 1_D(-1)이 확실히 매우 불쾌한 경우 계수가 0일 확률이 39%입니다. 우리가 제공할 예제는 데모용이므로 모든 것을 그대로 두겠습니다.

회귀 방정식 추정값(방정식 계수 추정값)을 얻은 후 한 단계 앞서 예측을 진행할 수 있습니다.

결과는 다음과 같습니다.



그림 6. EURUSD 한 단계 앞서 예측(월요일 오전 12시 기준)


1.3. 회귀 방정식에서 잔차 추정

회귀 방정식의 잔차에 대한 제한된 분석을 수행해 보겠습니다. 이 잔차는 초기 EURUSD 호가에서 회귀 방정식을 사용하여 계산된 값을 빼서 얻었습니다.

이 잔차의 특성이 거래 시스템의 미래 안정성을 추정하는 데 도움이 될 것임을 상기시켜 드리겠습니다.

먼저, 잔차 시차 간의 상관 관계 분석을 위한 테스트를 실행할 것입니다.



그림 7. 잔차의 자기상관 함수


불행히도, 시차 사이의 상관관계는 여전히 존재하며 이들의 존재는 통계 분석에 의문을 제기합니다.

다음으로 수행할 테스트는 잔차의 정규성 테스트입니다.

결과는 다음과 같이 나타납니다.


그림 8. 회귀 방정식의 잔차 히스토그램


잔차가 정규분포될 확률은 25.57%로 상당히 큰 수치입니다.

잔차의 이분산성에 대한 테스트를 수행해 보겠습니다.

결과는 다음과 같습니다.

  • GARCH형 이분산성이 없을 확률은 16.08%입니다.
  • White의 일반 이분산성이 없을 확률은 0.0066%입니다.
결론: 미분에 따라 정규 분포가 될 확률이 25%이고 상관 관계가 없을 확률이 0에 가까운 잔차를 얻었으며 우리는 White의 일반적인 이질성이 없다는 가설을 엄격하게 거부할 수 있습니다. 이것은 우리 모델이 다소 원시적이며 나중에 이분산성에 대해 다시 한 번 테스트할 시차 사이의 상관관계를 제거하고 그러한 이분산성이 존재할 경우 모델링해야 함을 의미합니다.

내 목표는 예측에 기반한 거래 시스템 개발을 시연하는 것이므로 거래자가 관심을 갖는 특성인 이익 또는 손실을 얻기 위해 계산을 계속할 것입니다.


2. 예측 결과 추정

우리는 거래를 할 때 예측오차보다 이익에 관심을 두는데, 이는 서로 다른 모델을 비교하기 위한 보조분석 도구로 삼아야 하지만 그 이상은 아닙니다.

예측 결과를 추정하기 위해 EViews 언어로 프로그램이 작성되었습니다. EURUSD 시세의 실제 증분 변동을 예상 변동과 비교합니다. 이러한 증가가 일치하면 이익이 발생합니다. 그렇지 않으면 손실이 있습니다. 또한 예측된 증분과 일치하는 모든 증분의 합계를 나타내는 이익과 각각의 손실을 계산합니다.

이익 대 손실 비율은 이익 요소로 지정됩니다. 그런 다음 수익 대 비수익 증분의 비율(손익 거래 비율)을 계산합니다. 연속 손실 거래 횟수와 이익 대비 연속 손실 거래의 손실 비율(회수 계수)도 계산됩니다.

거래 시스템 측면에서 모델링 결과를 추정하기 위한 EViews 언어 프로그램은 메인 프로그램과 2개의 서브루틴으로 구성됩니다.

주요(헤드) 프로그램은 다음과 같습니다.

' 
' One-step-ahead forecasting program
' Version of 26.09.2011 
'-----------------------------------------------
 include    sub_profit_factor
 include    sub_model_2
'
' 1. Create an EViews work file under the name МТ4 
'
 %path   = "C:\Program Files\BCS Trade Station\tester\files"
 cd      %path

 if @fileexist("work.wf1") = 0  then
  wfcreate(wf  = work)  u 510
 else
  wfopen   work
 endif
'
' Reads quotes from files
 read(t = txt)   kotir.txt date $ kotir
'
' Number of observations in the series without NA
 !number   = @obs(kotir)
 smpl     1  !number  - 1


 genr  trend    = NA        ' Trend = kotir_f(i) - kotir(i-1)
 genr  kotir_d  = d(kotir)  ' One-step increment in the price movement  - d(kotir)
'
 
' Calculate the model
 call  sub_model_2
'
' Calculate the profit table
 call sub_profit_factor

' Generate a file of results
 genr result   = 0
'
' Fill in the results
 result(1)  = kotir_f(!number)    ' One-step-ahead forecast
 result(2)  = kotir_f_se(!number) ' One-step-ahead forecast error
 result(3)  = trend(!number - 1)  ' Direction of the forecast
'-----------------------------------------------
' Return the result to МТ4
'
 smpl      1  10
 write(t=txt,na=0,d=c,dates)  EViewsForecast.txt   result

'-----------------End of program --------------
 smpl      1  !number
 save       work 
 close      @all
 exit
'
'-----------------------------------------------

메인 프로그램의 수가 모델을 포함하는 서브루틴의 수와 같다고 가정합니다(아래 참조). 이것은 작업을 단순화하기 위해 수행됩니다.

모델을 변경하려면 해당 모델의 서브루틴 이름 변경과 관련된 메인 프로그램의 두 줄을 변경해야 합니다.

모델을 포함하는 서브루틴(회귀 방정식):

subroutine  sub_model_2

  cd
  wfselect             work
  smpl          1    !number    -  1
' Smoothing the 1st level using НР filter quote with the first lambda
' and generating two files:  
'      hp1     -  smoothed file
'      p1_d    -   file of the residual
  hpf(lambda    =  10)   kotir hp1   @hp1_d
'
'  4. Estimating regression eq02 that uses the following series:
'        hp1  
'        hp1_d
  equation eq1.ls   kotir   hp1(-1)   hp1_d(-1) hp1_d(-2)


'  
'  Extending the sample to include the forecast area
  smpl              1 !number
'
'  Performing a one-step-ahead forecast and generating output series:
'    kotir_f     -  forecast
'    kotir_f_se  -  forecast error 
  fit(p)            kotir_f   kotir_f_se

  save              work

endsub

서브루틴의 수는 모델의 수와 같아야 합니다.

다른 모델의 경우 서브루틴의 이름과 당연히 메인 프로그램의 이름이 변경됩니다.

모델의 손익 매개변수를 계산하는 서브루틴:

' Subroutine for estimation of the forecast results
' Version of 27.09.2011 
' ----------------------------------------------------------------------------
' Comparing the forecast increment with the quote increment,
' the program calculates: 
'  profit factor with regard to increments;
'   profitability of the equation in the number of observations
'  recovery factor as a ratio of profit in pips to maximal drawdown
' ----------------------------------------------------------------------------
subroutine sub_profit_factor

' Local variables
   !profit = 0          ' Accumulated profit
   !lost = 0            ' Accumulated loss 
   !profit_factor = 0   ' Profit factor
   !i = 1               ' Work index
   !n_profit = 0        ' Number of profit trades
   !n_lost = 0          ' Number of loss trades
   !n_p_l = 0           '
   !pr = 0              '  Absence of consecutive losses
   !prosadka = 0        ' Drawdown - accumulation of consecutive losses
   !tek_prosadka = 0    ' Current drawdown
   !tek_pr = 0          '  Current number of loss trades

 cd
 wfselect       work
 smpl        1   !number

' Calculate the trend on each bar
 for  !i  =  1  to  !number - 1
  trend(!i) = kotir_f(!i + 1) - kotir(!i)
 next

'  Calculate profit if the forecast has been reached
 for  !i      =  1   to  !number - 1
  if  trend(!i) * kotir_d(!i) > 0   then    ' Does the trend coincide with increment? - Yes
   !profit   = !profit + @abs(kotir_d(!i))  '  Profit accumulation
   !n_profit = !n_profit +1                 '  Profit trades accumulation
   !tek_pr   = 0                            '  Resetting the current consecutive losses at zero
   !tek_prosadka  =   0                     ' Resetting the current drawdown at zero
  endif
  if  trend(!i) * kotir_d(!i) <  0   then   ' Does the trend coincide with increment? - No
   !lost   = !lost + @abs(kotir_d(!i))      ' Loss accumulation
   !n_lost = !n_lost + 1                    ' Loss trades accumulation

   !tek_pr = !tek_pr + 1                              ' Increase the number of current loss trades
   !tek_prosadka = !tek_prosadka + @abs(kotir_d(!i))  ' Increase the current drawdown
  endif

  '  Select the maximum loss trades
  if  !tek_pr > !pr then
   !pr  = !tek_pr
  endif

  ' Select the maximal drawdown
  if  !tek_prosadka  > !prosadka  then
   !prosadka  = !tek_prosadka
  endif
 next

'   Blocking division by zero
 if !lost = 0 then                 ' No loss trades
  !profit_factor = 1000
 else
  !profit_factor = !profit / !lost  ' Profit factor
 endif 
 
 if !n_lost = 0  then
  !n_p_l = !number      '  if loss trades are zero, 
                        '  profit trades are equal to the number of observations
 else
  !n_p_l =  !n_profit / !n_lost
 endif

 if !prosadka = 0  then
  !factor_reset = 1000
 else
  !factor_reset = !profit / !prosadka
 endif

'  Create a table of results if it does not exist
 if @isobject("tab_profit") = 0    then
  table(3,12)    tab_profit
  tab_profit.title  One-step-ahead forecast after the end of sample with profitability beyond the sample

' Make the table heading
  tab_profit.setfillcolor(1) yellow 
  tab_profit.setfillcolor(2) yellow
 
' Set the column characteristics
' 1st column
  setcolwidth(tab_profit,1,15)
  tab_profit(1,1)   = "Sample"
  tab_profit(2,1)   = "beginning"

' 2nd column
  setcolwidth(tab_profit,2,15)
  tab_profit(1,2)   = "Sample"
  tab_profit(2,2)   = "end"

' 3rd column
  setcolwidth(tab_profit,3,7)
   tab_profit(1,3)   = "Fact as of"
  tab_profit(2,3)   = "end "

' 4th column
  setcolwidth(tab_profit,4,7)
  tab_profit(1,4)   = "One-step"
  tab_profit(2,4)   = "forecast"

' 5th column
  setcolwidth(tab_profit,5,10)
  tab_profit(1,5)   = "Forecast"
  tab_profit(2,5)   = "error"

' 6th column
  setcolwidth(tab_profit,6,8)
  tab_profit(1,6)    =  "Profit of the"
  tab_profit(2,6)    =  "sample"

' 7th column
  setcolwidth(tab_profit,7,8)
  tab_profit(1,7)    =  "Loss of the"
  tab_profit(2,7)    =  "sample"

' 8th column
  setcolwidth(tab_profit,8,10)
  tab_profit(1,8)   = "Maximal"
  tab_profit(2,8)   = "drawdown"

' 9th column
  setcolwidth(tab_profit,9,8)
  tab_profit(1,9)   = "Amount of"
  tab_profit(2,9)    =  "loss"

' 10th column
  setcolwidth(tab_profit,10,7)
  tab_profit(1,10)    =  "P / F in"
  tab_profit(2,10)    =  "pips"

' 11th column
  setcolwidth(tab_profit,11,8)
  tab_profit(1,11)    =  "P / F in"
  tab_profit(2,11)    =  "observations"


' 12th column
  setcolwidth(tab_profit,12,8)
  tab_profit(1,12)   = "Recovery"
  tab_profit(2,12)   = "factor"
  tab_profit.setlines(R1C1:R2C12) +o +v 
 endif

 tab_profit.insertrow(3) 1
 tab_profit.setlines(R3C1:R3C12) +a +v +i

' Set the table output format 
 tab_profit.setformat(R3C1:R3C1)   c.16
 tab_profit.setformat(R3C2:R3C2)   c.16
 tab_profit.setformat(R3C3:R3C3)   f.4
 tab_profit.setformat(R3C4:R3C4)   f.4
 tab_profit.setformat(R3C5:R3C5)   f.4
 tab_profit.setformat(R3C6:R3C6)   f.4
 tab_profit.setformat(R3C7:R3C7)   f.4
 tab_profit.setformat(R3C8:R3C8)   f.4
 tab_profit.setformat(R3C9:R3C9)   f.0
 tab_profit.setformat(R3C10:R3C10) f.2
 tab_profit.setformat(R3C11:R3C11)  f.2
 tab_profit.setformat(R3C12:R3C12) f.2

' Fill the table with the results
 tab_profit(3 ,1) = date(1)
 tab_profit(3 ,2) = date(!number - 1)
 tab_profit(3 ,3) = kotir(!number - 1) 
 tab_profit(3 ,4) = kotir_f(!number - 1) 
 tab_profit(3 ,5) = kotir_f_se(!number - 1) 

 tab_profit(3 ,6) =  !profit
 tab_profit(3 ,7) =  !lost
 tab_profit(3 ,8) = !prosadka
 tab_profit(3 ,9) = !pr
 tab_profit(3,10) =  !profit_factor
 tab_profit(3,11) = !n_p_l
 tab_profit(3,12) = !factor_reset


' Save the table in the work file
 save        work
 show        tab_profit
 
endsub

우리 방정식에 대한 EViews의 위의 간단한 프로그램 결과는 다음과 같습니다.


표 3. EViews의 수익성 추정 결과

결과는 안타까운 일입니다. 손실이 이익보다 3배 더 많습니다. 그리고 이것은 19핍의 낙관적인 예측 오차 값에도 불구하고 말입니다. 이 모델은 개선이 필요하지만 여기 이 글에서는 그렇게 하지 않겠습니다. 수익성 있는 모델 개발에 참여하고자 하는 모든 사람들과 함께 포럼에서 계속 작업할 것입니다.

지금까지 EURUSD_H1 호가는 EViews 도구를 사용하여 분석되었습니다.

그러나 MetaTrader 4 터미널의 Expert Advisor에서 예측 결과를 적용하는 것은 매우 유혹적인 것으로 보입니다.

이제 EViews와 MetaTrader 4 간의 데이터 교환을 고려하고 MetaTrader 4의 Expert Advisor를 사용하여 결과를 다시 한 번 분석해 보겠습니다.


3. EViews와 MetaTrader 4 간의 데이터 교환


이 글에서 EViews와 MetaTrader 4 간의 데이터 교환은 .txt 파일을 사용하여 구현됩니다.

교환 알고리즘은 다음과 같습니다.

  1. MetaTrader 4 Expert Advisor:

    • 따옴표 파일을 생성합니다.
    • EView를 시작합니다.
  2. EViews:

    • Expert Advisor의 주문에 따라 작동을 시작합니다.
    • Expert Advisor에서 얻은 호가 파일 quote.txt에 대한 예측 계산 프로그램을 실행합니다.
    • 예측 결과를 EViewsForecast.txt 파일에 저장합니다.
  3. MetaTrader 4 Expert Advisor:

    • EViews에서 결과 생성이 완료되면 예측 파일을 읽습니다.
    • 포지션 진입 또는 퇴장을 결정합니다.

파일 위치에 대한 몇 마디.

MetaTrader 4 터미널의 파일은 표준 폴더에 있습니다. \expert 폴더의 Expert Advisor와 \expert\indicators 폴더의 지표(테스트에 필요하지 않음). 이들 모두는 터미널 디렉토리에 있습니다. Expert Advisor는 다른 Expert Advisor와 함께 설치됩니다.

Expert Advisor와 EViews 간의 교환을 위한 파일은 Expert Advisor가 작동하는 동안 Expert Advisor를 테스트할 때 \expert\파일과 \tester\files에 있습니다.

Expert Advisor가 EViews로 보낸 파일의 이름은 선택한 기호 및 기간에 관계없이 quotes.txt입니다. 따라서 Expert Advisor는 시작 시 Expert Advisor의 매개변수에 예측 단계가 지정되어야 하는 동안 모든 기호에 첨부될 수 있습니다.

EViews는 EVIEWSFORECAST.txt라는 파일을 반환합니다. EViews 작업 파일 worf.wf1은 터미널 디렉토리에 있습니다.

글에 첨부된 EViews 프로그램에 지정된 디렉토리는 컴퓨터에서 사용할 수 있는 디렉토리와 일치하지 않을 가능성이 높습니다. 이 프로그램을 디스크 루트 폴더에 설치했습니다. EViews에서는 기본 디렉토리에 대한 핸들을 얻거나 고유한 디렉토리를 지정해야 합니다(EViews 자체에서 사용하는 기본 디렉토리는 사용하지 않았습니다).


4. MQL4 Expert Advisor

Expert Advisor 작업 알고리즘은 최대로 단순화됩니다.

  • Expert Advisor는 모든 기호의 M1 시간 프레임에 첨부됩니다.
  • 분 단위의 예측 단계는 Expert Advisor의 매개변수에 지정됩니다. 기본 예측 단계는 60분(Рќ1)입니다. Expert Advisor를 M1에 연결하면 더 긴 시간 프레임으로 전환할 때 테스트 차트를 압축할 수 있으므로 테스트 결과를 더 잘 시각화할 수 있습니다.
  • EViews에서 예측하기 위해 Expert Advisor는 Expert Advisor의 매개변수에 지정된 바(관찰) 수로 quotes.txt 파일을 생성합니다.
  • 예측이 현재 가격보다 크면 포지션이 열립니다.
  • 예측이 현재 가격보다 낮으면 포지션이 열립니다.
  • Expert Advisor는 하나 이상의 직위를 열지 않습니다(직위를 추가하지 않고).
  • 예측에 관계없이 이전 포지션을 닫고 새 포지션을 엽니다. 포지션 개설 알고리즘은 EViews 프로그램의 손익 계산 알고리즘과 일치합니다.
  • 오픈할 포지션의 볼륨은 0.1랏입니다.
  • 손절매 및 이익실현 주문은 사용되지 않습니다(Expert Advisor에 예측 오류 간격으로 중지하는 코드가 있지만 100핍으로 설정됨).
  • 하나의 표준 예측 오차 간격에서 예측 값과 두 개의 선을 보여주는 차트가 그려집니다. Expert Advisor가 첨부된 것보다 짧은 시간 프레임에서 테스터의 차트를 볼 때 예측 라인이 뒤로 이동한다는 점을 명심하세요. 즉, 그려진 예측은 현재 가격이 기간의 끝에 도달해야 하는 예측입니다.

Expert Advisor는 M1 시간대에 첨부되어 있고 테스터에서는 M5에서 차트를 더 잘 볼 수 있습니다.

EURUSD 거래를 위한 MQL4 Expert Advisor의 소스 코드는 볼륨(약 600줄)으로 인해 이 글에서는 제공되지 않습니다. 이 글에 첨부된 EViews_MetaTrader_4.zip 아카이브의 EvewsMT4.mq4에서 찾을 수 있습니다.


5. Expert Advisor 테스트 결과

M1 시간 프레임에 테스터에서 Expert Advisor를 실행합니다.

입력 매개변수는 다음과 같습니다.



그림 9. Expert Advisor의 입력 매개변수


테스트 차트의 일부가 아래에 나와 있습니다.



그림 10. 시각화 모드에서 Expert Advisor 테스트


1시간(단계) 앞당겨 예측하는 Expert Advisor를 테스트한 결과는 아래와 같습니다.

전략 테스터 보고서

이브스MT4

실제(빌드 406)

상징

EURUSD(유로 vs 미국 달러)

시간 프레임

1분 (M1) 2011.09.12 00:00 - 2011.09.16 21:59 (2011.09.12 - 2011.09.17)

모델

모든 틱(가용 가능한 가장 짧은 시간 프레임을 기반으로 한 가장 정확한 모드)

매개변수

StepForecast=60; NumberBars = 101; MultSE=2;






내역 상의 바

7948

모델링된 틱

79777

모델링 품질

25.00%

불일치 차트 오류

0






초기 보증금

10000.00





순이익

-202.10

총 이익

940.72

총 손실

-1142.82

이익률

0.82

예상 수익

-1.73



절대 하락

326.15

최대 하락

456.15 (4.50%)

상대적인 하락

4.50% (456.15)


총 거래

117

숏 포지션(원 %)

58 (51.72%)

롱 포지션(원 %)

59 (45.76%)


이익 거래(총 %)

57 (48.72%)

손실 거래(전체의 %)

60 (51.28%)

최대

이익 거래

100.00

손실 거래

-79.00

평균

이익 거래

16.50

손실 거래

-19.05

최고

연속 우승(금전적 이익)

6 (105.00)

연속 손실(돈 손실)

8 (-162.00)

최대

연속 이익(개수)

166.00 (5)

연속 패배(횟수)

-162.00 (8)

평균

연속 우승

2

연속 손실

2




No.

시간

유형

주문

용량

가격

S / L

T / P

이익

균형

1

2011.09.12 01:00

매도

1

0.10

1.3609

1.3711

1.3509


2

2011.09.12 02:00

종료

1

0.10

1.3584

1.3711

1.3509

25.00

10025.00


그림 11. Expert Advisor 테스트 결과


결과는 EViews에서 얻은 것보다 낫습니다.

EView와 테스터의 결과 계산은 입력 데이터 측면에서 다릅니다. EViews는 118개의 바를 사용하고 회귀식 추정에 사용되는 바의 수를 증가시키면서 한 단계 앞선 예측이 기간의 끝으로 점차 이동함에 따라 왼쪽의 3개의 바에서 시작하여 예측을 계산합니다.

Expert Advisor는 118개 바의 창을 이동하고 바 119개의 예측을 계산합니다. 즉, EViews가 샘플 내의 창을 확장하고 Expert Advisor가 고정 너비의 창을 이동하기 때문에 회귀 방정식은 항상 118개 바에서 추정됩니다.

Expert Advisor는 확장된 모델 추정 테이블을 생성하는 데 도움이 됩니다. 위의 표는 단일 행으로 구성되어 있었지만 이제 예측이 생성된 모든 날짜에 대해 117개의 행을 포함합니다.

표는 다음과 같습니다.

시작
샘플
종료
샘플
현재

원스텝
예측
예측
오류
이익
샘플
손실
샘플
최대
감소
금액
손실
P/F 안

관측치의 P/F
회복 계수
12.09.2011 0:00 16.09.2011 21:00 1,3791 1,3788 0,0019 0,0581 0,1531 0,0245 7 0,38 0,67 2,37
12.09.2011 0:00 16.09.2011 21:00 1,3791 1,3788 0,0019 0,0581 0,1531 0,0245 7 0,38 0,67 2,37
09.09.2011 21:00 16.09.2011 20:00 1,3784 1,3793 0,0019 0,0569 0,1619 0,0245 7 0,35 0,64 2,32
09.09.2011 20:00 16.09.2011 19:00 1,3794 1,3796 0,002 0,0596 0,1609 0,0245 7 0,37 0,67 2,43
09.09.2011 19:00 16.09.2011 18:00 1,3783 1,3782 0,0021 0,0642 0,1554 0,0245 7 0,41 0,69 2,62
09.09.2011 18:00 16.09.2011 17:00 1,3783 1,3806 0,002 0,0616 0,1606 0,0245 7 0,38 0,68 2,51
09.09.2011 17:00 16.09.2011 16:00 1,3829 1,3806 0,002 0,0642 0,1586 0,0245 7 0,4 0,71 2,62
09.09.2011 16:00 16.09.2011 15:00 1,3788 1,3793 0,002 0,0626 0,1565 0,0245 7 0,4 0,71 2,56
09.09.2011 15:00 16.09.2011 14:00 1,3798 1,38 0,0021 0,063 0,1633 0,0245 7 0,39 0,73 2,57
09.09.2011 14:00 16.09.2011 13:00 1,3808 1,381 0,0022 0,062 0,1656 0,0318 9 0,37 0,71 1,95
09.09.2011 13:00 16.09.2011 12:00 1,3809 1,3813 0,0021 0,0602 0,1679 0,0318 9 0,36 0,66 1,89
09.09.2011 12:00 16.09.2011 11:00 1,3792 1,3808 0,0021 0,0666 0,1613 0,0245 7 0,41 0,73 2,72
09.09.2011 11:00 16.09.2011 10:00 1,3795 1,3826 0,0021 0,0666 0,167 0,0245 7 0,4 0,73 2,72
09.09.2011 10:00 16.09.2011 9:00 1,3838 1,3847 0,0022 0,0652 0,1668 0,0318 9 0,39 0,71 2,05
09.09.2011 9:00 16.09.2011 8:00 1,3856 1,3854 0,0022 0,0675 0,165 0,0318 9 0,41 0,73 2,12
09.09.2011 8:00 16.09.2011 7:00 1,386 1,3856 0,0022 0,0671 0,1652 0,0318 9 0,41 0,71 2,11
09.09.2011 7:00 16.09.2011 6:00 1,3861 1,3857 0,0022 0,067 0,1663 0,0318 9 0,4 0,68 2,11
09.09.2011 6:00 16.09.2011 5:00 1,3852 1,3855 0,0022 0,0655 0,1681 0,0318 9 0,39 0,63 2,06
09.09.2011 5:00 16.09.2011 4:00 1,3844 1,3851 0,0022 0,0662 0,1674 0,0318 9 0,4 0,66 2,08
09.09.2011 4:00 16.09.2011 3:00 1,3848 1,3869 0,0022 0,0654 0,1683 0,0318 9 0,39 0,68 2,06
09.09.2011 3:00 16.09.2011 2:00 1,3879 1,3875 0,0022 0,0694 0,1624 0,0318 9 0,43 0,73 2,18
09.09.2011 2:00 16.09.2011 1:00 1,3865 1,3879 0,0022 0,0698 0,1634 0,0318 9 0,43 0,71 2,19
09.09.2011 1:00 16.09.2011 0:00 1,3881 1,3883 0,0022 0,0726 0,1604 0,0245 7 0,45 0,76 2,96
09.09.2011 0:00 15.09.2011 23:00 1,3876 1,3882 0,0022 0,0721 0,162 0,0245 7 0,45 0,73 2,94
08.09.2011 23:00 15.09.2011 22:00 1,3885 1,3884 0,0022 0,0718 0,1614 0,0245 7 0,44 0,72 2,93
08.09.2011 22:00 15.09.2011 21:00 1,3888 1,3883 0,0022 0,0737 0,1597 0,0245 7 0,46 0,77 3,01
08.09.2011 21:00 15.09.2011 20:00 1,3885 1,3874 0,0022 0,0729 0,1604 0,0318 9 0,45 0,74 2,29
08.09.2011 20:00 15.09.2011 19:00 1,3867 1,386 0,0022 0,0721 0,1604 0,0318 9 0,45 0,74 2,27
08.09.2011 19:00 15.09.2011 18:00 1,3856 1,3834 0,0022 0,0721 0,1628 0,0318 9 0,44 0,72 2,27
08.09.2011 18:00 15.09.2011 17:00 1,385 1,3861 0,0023 0,0702 0,1651 0,0318 9 0,43 0,72 2,21
08.09.2011 17:00 15.09.2011 16:00 1,3885 1,3824 0,0023 0,0739 0,1638 0,0245 7 0,45 0,72 3,02
08.09.2011 16:00 15.09.2011 15:00 1,3773 1,3784 0,0021 0,0719 0,1556 0,0318 9 0,46 0,72 2,26
08.09.2011 15:00 15.09.2011 14:00 1,3795 1,3794 0,0021 0,0726 0,1537 0,0318 9 0,47 0,72 2,28
08.09.2011 14:00 15.09.2011 13:00 1,3814 1,3792 0,0021 0,0736 0,1564 0,0318 9 0,47 0,74 2,31
08.09.2011 13:00 15.09.2011 12:00 1,3802 1,3764 0,0021 0,0712 0,159 0,0318 9 0,45 0,74 2,24
08.09.2011 12:00 15.09.2011 11:00 1,3769 1,3753 0,0021 0,0719 0,1568 0,0318 9 0,46 0,72 2,26
08.09.2011 11:00 15.09.2011 10:00 1,3765 1,3732 0,0021 0,0721 0,1564 0,0318 9 0,46 0,74 2,27
08.09.2011 10:00 15.09.2011 9:00 1,3722 1,3718 0,0021 0,0716 0,1538 0,0318 9 0,47 0,72 2,25
08.09.2011 8:00 15.09.2011 7:00 1,371 1,3716 0,0021 0,0729 0,1542 0,0318 9 0,47 0,74 2,29
08.09.2011 8:00 15.09.2011 7:00 1,371 1,3716 0,0021 0,0729 0,1542 0,0318 9 0,47 0,74 2,29
08.09.2011 7:00 15.09.2011 6:00 1,3723 1,3727 0,0021 0,0716 0,1547 0,0318 9 0,46 0,72 2,25
08.09.2011 6:00 15.09.2011 5:00 1,3726 1,3725 0,0021 0,0711 0,1564 0,0318 9 0,45 0,69 2,24
08.09.2011 5:00 15.09.2011 4:00 1,3719 1,3731 0,0021 0,0711 0,1563 0,0318 9 0,45 0,69 2,24
08.09.2011 4:00 15.09.2011 3:00 1,374 1,3744 0,0021 0,0713 0,1547 0,0318 9 0,46 0,69 2,24
08.09.2011 3:00 15.09.2011 2:00 1,3748 1,3747 0,0021 0,0705 0,1547 0,0318 9 0,46 0,68 2,22
08.09.2011 2:00 15.09.2011 1:00 1,3743 1,3742 0,0021 0,0715 0,1544 0,0318 9 0,46 0,7 2,25
08.09.2011 1:00 15.09.2011 0:00 1,3738 1,3743 0,0021 0,0714 0,1544 0,0318 9 0,46 0,7 2,25
08.09.2011 0:00 14.09.2011 23:00 1,375 1,3743 0,0021 0,0724 0,1532 0,0318 9 0,47 0,73 2,28
07.09.2011 23:00 14.09.2011 22:00 1,375 1,3736 0,0021 0,0727 0,1532 0,0318 9 0,47 0,74 2,29
07.09.2011 22:00 14.09.2011 21:00 1,3751 1,3735 0,0021 0,0734 0,1532 0,0318 9 0,48 0,74 2,31
07.09.2011 21:00 14.09.2011 20:00 1,3748 1,3716 0,0021 0,0722 0,1555 0,0318 9 0,46 0,72 2,27
07.09.2011 20:00 14.09.2011 19:00 1,3714 1,3712 0,0021 0,0812 0,145 0,0189 6 0,56 0,74 4,3
07.09.2011 19:00 14.09.2011 18:00 1,371 1,3697 0,0021 0,0692 0,1577 0,0318 9 0,44 0,69 2,18
07.09.2011 18:00 14.09.2011 17:00 1,3673 1,369 0,0021 0,0695 0,154 0,0318 9 0,45 0,72 2,19
07.09.2011 17:00 14.09.2011 16:00 1,3687 1,3693 0,0021 0,0695 0,1548 0,0318 9 0,45 0,72 2,19
07.09.2011 16:00 14.09.2011 15:00 1,3704 1,3704 0,0021 0,066 0,1591 0,0318 11 0,41 0,69 2,08
07.09.2011 15:00 14.09.2011 14:00 1,373 1,37 0,002 0,066 0,1577 0,0318 10 0,42 0,69 2,08
07.09.2011 14:00 14.09.2011 13:00 1,3712 1,3681 0,002 0,066 0,1562 0,0318 9 0,42 0,69 2,08
07.09.2011 13:00 14.09.2011 12:00 1,3685 1,3653 0,002 0,0665 0,1534 0,0318 9 0,43 0,74 2,09
07.09.2011 12:00 14.09.2011 11:00 1,3655 1,3646 0,002 0,0673 0,1504 0,0318 9 0,45 0,77 2,12
07.09.2011 11:00 14.09.2011 10:00 1,3656 1,3634 0,002 0,0709 0,15 0,0318 9 0,47 0,77 2,23
07.09.2011 10:00 14.09.2011 9:00 1,3625 1,3625 0,002 0,0725 0,1461 0,0318 9 0,5 0,83 2,28
07.09.2011 9:00 14.09.2011 8:00 1,3631 1,3638 0,002 0,0719 0,1465 0,0318 9 0,49 0,8 2,26
07.09.2011 8:00 14.09.2011 7:00 1,3641 1,3643 0,002 0,0707 0,1481 0,0318 9 0,48 0,77 2,22
07.09.2011 7:00 14.09.2011 6:00 1,3635 1,3648 0,002 0,0724 0,1481 0,0318 9 0,49 0,8 2,28
07.09.2011 6:00 14.09.2011 5:00 1,3647 1,3656 0,002 0,0724 0,1476 0,0318 9 0,49 0,8 2,28
07.09.2011 5:00 14.09.2011 4:00 1,3665 1,3676 0,002 0,0667 0,1536 0,0318 9 0,43 0,72 2,1
07.09.2011 4:00 14.09.2011 3:00 1,3694 1,3683 0,002 0,0675 0,1504 0,0318 9 0,45 0,74 2,12
07.09.2011 3:00 14.09.2011 2:00 1,3682 1,3682 0,002 0,0672 0,1498 0,0318 9 0,45 0,74 2,11
07.09.2011 2:00 14.09.2011 1:00 1,3684 1,3686 0,002 0,067 0,1512 0,0318 9 0,44 0,72 2,11
07.09.2011 1:00 14.09.2011 0:00 1,3679 1,3686 0,002 0,067 0,1514 0,0318 9 0,44 0,72 2,11
07.09.2011 0:00 13.09.2011 23:00 1,3678 1,3691 0,002 0,0679 0,1507 0,0318 9 0,45 0,74 2,14
06.09.2011 23:00 13.09.2011 22:00 1,3692 1,3698 0,002 0,066 0,1517 0,0318 9 0,44 0,69 2,08
06.09.2011 22:00 13.09.2011 21:00 1,3708 1,3705 0,002 0,0652 0,1512 0,0318 9 0,43 0,69 2,05
06.09.2011 21:00 13.09.2011 20:00 1,3719 1,3709 0,002 0,0652 0,1512 0,0318 9 0,43 0,69 2,05
06.09.2011 20:00 13.09.2011 19:00 1,371 1,3691 0,002 0,0652 0,1517 0,0318 9 0,43 0,69 2,05
06.09.2011 19:00 13.09.2011 18:00 1,3677 1,3669 0,002 0,0666 0,1485 0,0318 9 0,45 0,72 2,09
06.09.2011 18:00 13.09.2011 17:00 1,3678 1,3677 0,002 0,0666 0,149 0,0318 9 0,45 0,72 2,09
06.09.2011 17:00 13.09.2011 16:00 1,3698 1,3659 0,002 0,0625 0,1555 0,0318 9 0,4 0,64 1,97
06.09.2011 16:00 13.09.2011 15:00 1,3658 1,3643 0,002 0,065 0,1513 0,0318 9 0,43 0,72 2,04
06.09.2011 15:00 13.09.2011 14:00 1,3665 1,3636 0,002 0,0643 0,1527 0,0318 9 0,42 0,69 2,02
06.09.2011 14:00 13.09.2011 13:00 1,3639 1,3619 0,002 0,0659 0,1552 0,0318 9 0,42 0,74 2,07
06.09.2011 13:00 13.09.2011 12:00 1,3617 1,3628 0,0021 0,0824 0,1432 0,0189 6 0,58 0,8 4,36
06.09.2011 12:00 13.09.2011 11:00 1,3616 1,361 0,0021 0,0824 0,1435 0,0189 6 0,57 0,8 4,36
06.09.2011 11:00 13.09.2011 10:00 1,3582 1,3631 0,002 0,0795 0,1435 0,0189 6 0,55 0,8 4,21
06.09.2011 10:00 13.09.2011 9:00 1,3654 1,3656 0,002 0,077 0,146 0,0189 6 0,53 0,74 4,07
06.09.2011 9:00 13.09.2011 8:00 1,3655 1,3664 0,0021 0,0813 0,1442 0,0189 6 0,56 0,77 4,3
06.09.2011 8:00 13.09.2011 7:00 1,3679 1,3673 0,0022 0,0834 0,1435 0,0189 6 0,58 0,77 4,41
06.09.2011 7:00 13.09.2011 6:00 1,3685 1,3668 0,0022 0,0828 0,1448 0,0189 6 0,57 0,74 4,38
06.09.2011 6:00 13.09.2011 5:00 1,3676 1,3669 0,0022 0,0879 0,1406 0,0189 6 0,63 0,85 4,65
06.09.2011 5:00 13.09.2011 4:00 1,3669 1,3653 0,0022 0,0821 0,1458 0,0189 6 0,56 0,8 4,34
06.09.2011 4:00 13.09.2011 3:00 1,3635 1,3639 0,0022 0,0821 0,1428 0,0189 6 0,57 0,8 4,34
06.09.2011 3:00 13.09.2011 2:00 1,3637 1,3646 0,0022 0,0821 0,1428 0,0189 6 0,57 0,8 4,34
06.09.2011 2:00 13.09.2011 1:00 1,3657 1,364 0,0022 0,0825 0,1407 0,0189 6 0,59 0,8 4,37
06.09.2011 1:00 13.09.2011 0:00 1,366 1,3639 0,0022 0,085 0,1384 0,0141 6 0,61 0,83 6,03
06.09.2011 0:00 12.09.2011 23:00 1,3678 1,3655 0,0022 0,083 0,1416 0,0141 6 0,59 0,8 5,89
05.09.2011 23:00 12.09.2011 22:00 1,366 1,3613 0,0022 0,0806 0,1424 0,0123 6 0,57 0,8 6,55
05.09.2011 22:00 12.09.2011 21:00 1,3572 1,3585 0,002 0,0731 0,1414 0,0152 6 0,52 0,77 4,81
05.09.2011 21:00 12.09.2011 20:00 1,3576 1,3601 0,002 0,0714 0,1432 0,0152 6 0,5 0,74 4,7
05.09.2011 20:00 12.09.2011 19:00 1,3607 1,3637 0,0021 0,0712 0,1406 0,0129 6 0,51 0,74 5,52
05.09.2011 19:00 12.09.2011 18:00 1,3632 1,3619 0,0021 0,0712 0,1405 0,0129 6 0,51 0,74 5,52
05.09.2011 18:00 12.09.2011 17:00 1,3609 1,3641 0,0021 0,073 0,1378 0,0129 6 0,53 0,77 5,66
05.09.2011 17:00 12.09.2011 16:00 1,3684 1,3659 0,002 0,0713 0,1334 0,0083 6 0,53 0,74 8,59
05.09.2011 16:00 12.09.2011 15:00 1,3665 1,3636 0,002 0,0727 0,1343 0,0083 6 0,54 0,77 8,76
05.09.2011 15:00 12.09.2011 14:00 1,363 1,3601 0,002 0,072 0,1348 0,0083 6 0,53 0,77 8,67
05.09.2011 14:00 12.09.2011 13:00 1,3603 1,3594 0,002 0,0752 0,1304 0,0083 6 0,58 0,83 9,06
05.09.2011 13:00 12.09.2011 12:00 1,3623 1,3589 0,002 0,0742 0,1304 0,0083 6 0,57 0,83 8,94
05.09.2011 12:00 12.09.2011 11:00 1,3597 1,3561 0,0019 0,0737 0,1291 0,0083 6 0,57 0,8 8,88
05.09.2011 11:00 12.09.2011 10:00 1,3561 1,3551 0,0019 0,0729 0,1275 0,0083 6 0,57 0,8 8,78
05.09.2011 10:00 12.09.2011 9:00 1,3556 1,3552 0,002 0,072 0,1283 0,0083 6 0,56 0,77 8,67
05.09.2011 9:00 12.09.2011 8:00 1,3536 1,3532 0,002 0,072 0,1271 0,0083 6 0,57 0,77 8,67
05.09.2011 8:00 12.09.2011 7:00 1,3519 1,3554 0,0019 0,0703 0,1288 0,0083 6 0,55 0,74 8,47
05.09.2011 7:00 12.09.2011 6:00 1,3583 1,3579 0,0019 0,072 0,1224 0,0083 6 0,59 0,77 8,67
05.09.2011 6:00 12.09.2011 5:00 1,3591 1,3582 0,0019 0,0715 0,1224 0,0083 6 0,58 0,77 8,61
05.09.2011 5:00 12.09.2011 4:00 1,3593 1,3589 0,0019 0,0713 0,1224 0,0083 6 0,58 0,75 8,59
05.09.2011 3:00 12.09.2011 2:00 1,3583 1,361 0,0019 0,0746 0,1192 0,0083 6 0,63 0,78 8,99


표 4. EViews의 테스트 결과


이 표는 우리 모델(너무 원시적이고 미완성)이 사실상 희망이 없음을 시사합니다. 개선이 필요합니다.

P/F(핍) 및 P/F(관측)의 두 열 차트를 플로팅하겠습니다.


그림 12. 118개 바의 샘플에 대한 모델 이익 계수 차트


이 차트는 분석의 바 수에 대한 이익 요인의 의존성을 나타냅니다. 분명한 상승세가 있습니다.

238개의 바 샘플에 대한 결과를 확인해 보겠습니다. 그린 차트는 다음과 같습니다.


그림 13. 236개의 바 샘플에 대한 모델 이익 계수 차트


이익 요인 차트가 다르다는 사실은 모형이 불안정하다는 것을 나타냅니다.


결론

이 글에서는 MetaTrader 4의 Expert Advisor 개발을 위해 EViews에서 생성한 한 단계 앞서가는 예측을 사용하는 방법을 다뤘습니다.

우리가 얻은 부정적인 결과는 EViews에서 모델을 구축하는 것이 Expert Advisors의 직관적인 개발보다 잠재적으로 더 생산적인 것으로 보이는 상당히 복잡한 작업임을 나타냅니다.


MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/1345

파일 첨부됨 |
EViewsMT4.zip (10.25 KB)
MQL5 코드용 자동 생성 설명서 MQL5 코드용 자동 생성 설명서
대부분의 Java 코더는 JavaDocs로 작성할 수 있는 자동 생성된 문서에 익숙합니다. 이 아이디어는 코드에 주석을 반구조적인 방식으로 추가한 후 쉽게 탐색할 수 있는 도움말 파일로 추출하는 것입니다. 또한 C++ 월드에는 Microsoft의 SandCastle과 Doxygen이 두 선두 업체인 수많은 문서 자동 생성기가 있습니다. 이 문서에서는 Doxygen을 사용하여 MQL5 코드의 구조화된 주석에서 HTML 도움말 파일을 만드는 방법에 대해 설명합니다. 실험은 매우 잘 진행되었고 Doxygen이 MQL5 코드로 제작한 도움말 문서는 많은 가치를 추가할 것이라고 생각합니다.
Kagi 차트 지표 Kagi 차트 지표
이 글에서는 다양한 차트 옵션과 추가 기능을 갖춘 Kagi 차트 지표를 제안합니다. 또한 지표 차트 작성 원리와 MQL5 구현 기능을 고려합니다. 거래에서 가장 인기 있는 구현 사례가 표시됩니다. 음/양 교환 전략, 추세선에서 멀어지고 지속적으로 "어깨" 증가/"허리" 감소.
MQL5.커뮤니티 - 유저 메모 MQL5.커뮤니티 - 유저 메모
방금 회원가입을 마치신 분들은 "메세지에 어떻게 그림을 넣나요?" "MQL5 소스 코드를 어떻게 포맷하나요?" "개인 메시지는 어디에 저장되나요?" 등의 다양한 질문을 가지고 계실 겁니다. 이 문서에서 MQL5.커뮤니티에 익숙해지고 다양한 기능들에 대해 알아보실 수 있는 꿀팁들을 준비하였습니다.
다중 통화 다중 시스템 Expert Advisor 만들기 다중 통화 다중 시스템 Expert Advisor 만들기
이 글에서는 여러 기호를 거래하고 여러 거래 시스템을 동시에 사용하는 Expert Advisor의 구조를 소개합니다. 모든 EA에 대한 최적의 입력 매개변수를 이미 식별하고 각각에 대해 개별적으로 좋은 백테스팅 결과를 얻었다면 모든 전략을 함께 사용하여 모든 EA를 동시에 테스트하면 어떤 결과를 얻을 수 있는지 자문해 보십시오.