English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Econometrics Previsioni EURUSD One-Step-Ahead

Econometrics Previsioni EURUSD One-Step-Ahead

MetaTrader 4Sistemi di trading | 11 gennaio 2022, 17:16
159 0
СанСаныч Фоменко
СанСаныч Фоменко

Introduzione

L'articolo si concentra sulla previsione anticipata per EURUSD utilizzando il software EViews e un'ulteriore valutazione dei risultati di previsione tramite il programma in EViews e un Expert Advisor sviluppato in MQL4. Si basa sull'articolo "Analisi dei parametri statistici degli indicatori" le cui proposizioni verranno utilizzate senza ulteriori chiarimenti.


1. Costruire un modello

L'articolo precedente si concludeva con l'analisi della seguente equazione di regressione:

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

Questa equazione è stata il risultato dell'implementazione della scomposizione graduale delle quotazioni di prezzo Close iniziali. L'idea alla base si basa sulla separazione di una componente deterministica dalle quotazioni iniziali e su un'ulteriore analisi del residuo risultante.

Iniziamo a costruire un modello per EURUSD H1 sulle barre per un periodo di una settimana dal 12 settembre 2011 al 17 settembre 2011.


1.1. Analisi delle quotazioni iniziali EURUSD

Iniziamo con l'analisi della serie EURUSD iniziale per pianificare il passaggio successivo.

Innanzitutto, creiamo un file contenente le quotazioni per ulteriori analisi in EViews. A tale scopo, utilizzo un indicatore sovrapposto al grafico pertinente per generare un file richiesto con quotazioni.

Lo script dell'indicatore è mostrato di seguito e secondo me non ha bisogno di commenti.

//+------------------------------------------------------------------+
//|                                                   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);
  }
//+------------------------------------------------------------------+

Dopo aver impostato le date sopra specificate, ho ottenuto il file delle quotazioni composto da 119 righe, l'ultima riga è "Previsione,0" – qui è dove sarà la previsione futura. Tieni presente che sto utilizzando i prezzi aperti. Si noti inoltre che le quotazioni nel file sono disposte nell'ordine opposto a quello di MQL4, ovvero come nei linguaggi di programmazione.

L'indicatore genera ovviamente il file quotes.txt nella cartella terminale \expert\files\. L'Expert Advisor che verrà esaminato di seguito prenderà il file delle quotazioni dalla cartella specificata quando opera in modalità DEMO o REAL; tuttavia, quando viene utilizzato in modalità di test, questo file deve trovarsi nella cartella \tester\files\ quindi inserirò manualmente quotes.txt nella cartella \tester\files\ del terminale.

Ecco il grafico:


Fig. 1. Grafico quotazioni EURUSD H1


Possiamo osservare uno o più trend, ma il nostro obiettivo è prevedere la stabilità futura del sistema di trading. Pertanto eseguiremo un'analisi per la stazionarietà delle quotazioni iniziali di EURUSD H1.

Calcoliamo la statistica descrittiva:



Fig. 2. Statistiche descrittive


La statistica descrittiva suggerisce che:

  • C'è un'inclinazione a destra (dovrebbe essere 0 mentre abbiamo 0,244950);
  • La probabilità che le nostre quotazioni iniziali siano distribuite normalmente è del 9,64%.

Visivamente l'istogramma non ha certo nulla a che vedere con la distribuzione normale ma la probabilità del 9,64% dà adito a certe illusioni.

Dimostriamolo rispetto alla teoria:


Fig. 3. Istogramma EURUSD rispetto alla curva di distribuzione normale teorica


Possiamo accertare visivamente che le quotazioni EURUSD_Рќ1 sono ben lungi dall'essere distribuite normalmente.

Tuttavia, è ancora presto per trarre una conclusione in quanto si osserva la tendenza che suggerisce la presenza di una componente deterministica nelle quotazioni. La presenza di tale componente può falsare completamente le caratteristiche statistiche della variabile casuale (quotazioni).

Calcoliamo la funzione di autocorrelazione delle quotazioni.

Appare come segue:


Fig. 4. Funzione di autocorrelazione delle quotazioni EURUSD_H1


Nel tracciare il grafico, abbiamo ottenuto una probabilità della mancanza di correlazione tra i ritardi: è diversa da zero per i primi 16 ritardi. Il grafico e la probabilità suggeriscono chiaramente che esiste una correlazione tra i ritardi in EURUSD_H1, ovvero le quotazioni in esame contengono una componente deterministica.

Se alle quotazioni iniziali viene sottratta la componente deterministica, quali caratteristiche statistiche avrà il residuo?

A questo scopo, applicheremo un test di radice unitaria per vedere se è più prospettico lavorare con la prima differenza (residuo) delle quotazioni iniziali.


Tabella 1. Test della radice dell'unità

Il test di cui sopra mostra che:

  • La probabilità che le quotazioni iniziali abbiano radice dell’unità (la prima differenza è distribuita normalmente) è del 41%;
  • La statistica DW (Durbin-Watson) è poco più di 2,2, il che suggerisce anche che la prima differenza è distribuita normalmente.
Conclusione: sarebbe ragionevole decurtare la serie dei prezzi e successivamente analizzare il residuo del detrending.


1.2. Smoothing

Il filtro di Hodrick-Prescott verrà utilizzato per separare la componente deterministica dalle quotazioni EURUSD, per analogia con l'articolo precedente.

Il numero "10" nei nomi delle serie indica il parametro lambda nel filtro Hodrick-Prescott. Sulla base della teoria alla base di questo strumento, il valore lambda è di grande importanza per il risultato che sembra essere il seguente:



Fig. 5. Il risultato di smoothing utilizzando il filtro Hodrick-Prescott

Useremo l'equazione dell'articolo precedente che nelle notazioni EViews appare come segue:

quotazioni = C(1) * HP(-1) + C(2) * D(HP(-1)) + C(3)*D(HP(-2))

cioè in questa equazione si tiene conto della componente deterministica e del rumore con cui si intende la differenza tra le quotazioni iniziali e la sua componente deterministica.

A seguito dell'analisi del modello attuale delle quotazioni iniziali, si ottengono i seguenti parametri dell'equazione di regressione:


Tabella 2. Stima dell'equazione di regressione


La probabilità del 39% che il coefficiente sia zero se 1_D(-1) è certamente spiacevole. Lasceremo tutto così com'è poiché l'esempio che forniremo è a scopo dimostrativo.

Ottenute le stime dell'equazione di regressione (stima dei coefficienti dell'equazione) si può procedere alla previsione one-step-ahead (un passo avanti).

Il risultato è il seguente:



Fig. 6. Previsioni EURUSD un passo avanti (alle 12 di lunedì)


1.3. Stima dei residui dall'equazione di regressione

Eseguiamo un'analisi limitata del residuo dall'equazione di regressione. Tale residuo è stato ottenuto sottraendo dalle quotazioni EURUSD iniziali i valori calcolati mediante l'equazione di regressione.

Vi ricordo che le caratteristiche di questo residuo ci aiuteranno a stimare la futura stabilità del sistema di negoziazione.

In primo luogo, eseguiremo un test per l'analisi delle correlazioni tra i ritardi nel residuo:



Fig. 7. Funzione di autocorrelazione del residuo


Sfortunatamente, le correlazioni tra i ritardi sono ancora lì e la loro presenza mette in dubbio l'analisi statistica.

Il prossimo test che andremo ad eseguire è il test di normalità del residuo.

Il risultato appare come segue:


Fig. 8. Istogramma del residuo dell'equazione di regressione


La probabilità che il residuo sia distribuito normalmente è del 25,57% che è una cifra abbastanza grande.

Eseguiamo test per l'eteroschedasticità del residuo.

I risultati sono i seguenti:

  • La probabilità che l'eteroschedasticità di tipo GARCH sia assente è del 16,08%
  • La probabilità che l'eteroschedasticità generale di White sia assente è dello 0,0066%
Conclusioni: a seguito della differenziazione, abbiamo ottenuto un residuo con una probabilità del 25% di essere distribuito normalmente e una probabilità prossima allo zero di essere esente da correlazioni. Possiamo quindi rifiutare rigorosamente l'ipotesi che l'eteroschedasticità generale di White sia assente. Ciò implica che il nostro modello è piuttosto grezzo e richiede l’eliminazione delle correlazioni tra i ritardi da testare nuovamente per l'eteroschedasticità e modelliamo tale eteroschedasticità nel caso sia presente.

Poiché il mio obiettivo è dimostrare lo sviluppo del sistema di trading in base alla previsione, continuerò i calcoli per ottenere le caratteristiche che interessano i trader: profitto o perdita.


2. Stima dei risultati di previsione

Quando si fa trading, siamo interessati più al profitto piuttosto che all'errore di previsione il quale dovrebbe essere considerato solo uno strumento di analisi ausiliario per il confronto di modelli diversi.

Per stimare i risultati della previsione, è stato scritto un programma in linguaggio EViews. Confronta i movimenti incrementali effettivi delle quotazioni EURUSD con quelli previsti. Se questi incrementi coincidono, c'è profitto; se non lo fanno, c'è una perdita. Inoltre, calcoliamo il profitto che rappresenta la somma di tutti gli incrementi che coincidono con gli incrementi previsti e la rispettiva perdita.

Il rapporto profitti/perdite è designato come fattore di profitto. Quindi calcoliamo il rapporto tra incrementi redditizi e non redditizi (rapporto profitti/perdite). Viene calcolato anche il numero di operazioni in perdita consecutive e il rapporto tra la perdita in operazioni in perdita consecutive e il profitto (fattore di recupero).

Il programma in linguaggio EViews per la stima dei risultati di modellazione in termini di trading system è costituito dal programma principale e da due subroutine.

Il programma principale (testa) è il seguente:

' 
' 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
'
'-----------------------------------------------

Si assume che il numero dei programmi principali sia uguale al numero dei sottoprogrammi contenenti modelli (vedi sotto); questo viene fatto per semplificare il lavoro.

La modifica del modello richiede la modifica di due righe del programma principale relative alla modifica del nome della subroutine per il modello.

La subroutine contenente il modello (equazione di regressione):

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

Il numero di sottoprogrammi deve essere uguale al numero di modelli.

Per un altro modello, il nome del sottoprogramma e, naturalmente, i nomi nel programma principale devono essere modificati.

Subroutine che calcola i parametri di profitto/perdita per il modello:

' 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

I risultati dei suddetti semplici programmi in EViews per la nostra equazione sono i seguenti:


Tabella 3. Risultati della stima della redditività in EViews

Il risultato è spiacevole: la perdita è tre volte superiore al profitto. E questo nonostante il valore di errore di previsione ottimistica di 19 pips. Il modello ha bisogno di miglioramenti ma non lo farò qui nell'articolo; Continuerò a lavorarci nel forum insieme a tutti coloro che desiderano partecipare allo sviluppo di un modello redditizio.

Fino ad ora, le quotazioni EURUSD_H1 sono state analizzate utilizzando gli strumenti EViews.

Tuttavia, sembra essere molto allettante applicare i risultati delle previsioni in un Expert Advisor del terminale MetaTrader 4.

Consideriamo ora lo scambio di dati tra EViews e MetaTrader 4 e poi analizziamo nuovamente i risultati utilizzando un Expert Advisor in MetaTrader 4.


3. Scambio di dati tra EViews e MetaTrader 4


Lo scambio di dati tra EViews e MetaTrader 4 in questo articolo viene implementato utilizzando file .txt.

L'algoritmo di scambio sembra essere il seguente:

  1. Expert Advisor di MetaTrader 4:

    • Genera il file delle quotazioni;
    • Avvia EView.
  2. EViews:

    • Inizia a operare in risposta a un comando dell'Expert Advisor;
    • Esegue un programma di calcolo delle previsioni per il file quote quotes.txt ottenuto da Expert Advisor;
    • Salva i risultati della previsione nel file EViewsForecast.txt.
  3. Expert Advisor di MetaTrader 4:

    • Al termine della generazione dei risultati in EViews, legge il file di previsione;
    • Decide di entrare o uscire da una posizione.

Qualche parola sulla posizione dei file.

I file del terminale MetaTrader 4 sono collocati nelle loro cartelle standard: un Expert Advisor nella cartella \expert e un indicatore (che non è richiesto per il test) nella cartella \expert\indicators. Tutti questi si trovano nella directory del terminale. L'Expert Advisor viene installato insieme ad altri Expert Advisor.

I file per lo scambio tra Expert Advisor ed EViews si trovano in \expert\files durante il funzionamento di Expert Advisor e nella cartella \tester\files durante il test di Expert Advisor.

Il file inviato dall'Expert Advisor a EViews è denominato quotes.txt indipendentemente dal simbolo e dall'intervallo di tempo selezionati. Pertanto l'Expert Advisor può essere associato a qualsiasi simbolo mentre la fase di previsione deve essere specificata nei parametri dell'Expert Advisor all'inizio.

EViews restituisce il file denominato EVIEWSFORECAST.txt. Il file di lavoro di EViews worf.wf1 viene inserito nella directory del terminale.

Le directory specificate nei programmi EViews allegati all'articolo molto probabilmente non corrisponderanno alle directory disponibili sui computer. Ho installato questi programmi nella cartella radice del disco. In EViews, dovrai ottenere un handle sulla directory predefinita o specificare le tue directory (non ho usato le directory predefinite utilizzate da EViews stesso).


4. MQL4 Expert Advisor

L'algoritmo di funzionamento di Expert Advisor è semplificato al massimo:

  • L'Expert Advisor è collegato all'intervallo di tempo M1 di qualsiasi simbolo;
  • Un passo di previsione in minuti è specificato nei parametri dell'Expert Advisor. Il passo di previsione predefinito è 60 minuti (Рќ1). Collegando l'Expert Advisor a M1, avrai l'opportunità di visualizzare meglio i risultati dei test poiché il grafico dei test può essere compresso quando si passa a un intervallo di tempo più lungo;
  • Ai fini della previsione in EViews, l'Expert Advisor genera il file EViews.txt con il numero di barre (osservazioni) come specificato nei parametri dell'Expert Advisor;
  • Se la previsione è maggiore del prezzo corrente, si apre una posizione long;
  • Se la previsione è inferiore al prezzo corrente, si apre una posizione short;
  • L'Expert Advisor non apre più di una posizione (senza aggiungere una posizione);
  • Indipendentemente dalla previsione, chiude la posizione precedente e apre quella nuova. L'algoritmo per l'apertura delle posizioni coincide con l'algoritmo per il calcolo dell'utile/perdita nel programma in EViews;
  • Il volume della posizione da aprire è 0.1 lot;
  • Non vengono utilizzati ordini stop loss e take profit (sono fissati a 100 pips sebbene l'Expert Advisor abbia un codice per piazzare stop ad intervalli di errore di previsione);
  • Viene disegnato un grafico che mostra il valore di previsione e due linee in corrispondenza di un intervallo di errore di previsione standard. Quando si visualizza il grafico dal tester su intervalli di tempo più brevi rispetto a quello a cui era allegato l'Expert Advisor, tieni presente che la linea di previsione viene spostata indietro, ovvero la previsione disegnata è la previsione a cui dovrebbe arrivare il prezzo corrente alla fine del periodo.

L'Expert Advisor è collegato all'intervallo di tempo M1 mentre nel tester il grafico viene visualizzato meglio su M5.

Il codice sorgente dell'Expert Advisor MQL4 per il trading di EURUSD non è fornito in questo articolo a causa delle sue dimensioni (circa 600 righe). Può essere trovato in EvewsMT4.mq4 nell'archivio EViews_MetaTrader_4.zip allegato all'articolo.


5. Risultati dei test dell’Expert Advisor

Esegui l'Expert Advisor nel tester sull'intervallo di tempo M1.

I parametri di ingresso sono mostrati di seguito.



Fig. 9. Parametri di input dell'Expert Advisor


Di seguito viene mostrato un frammento della tabella di prova:



Fig. 10. Test dell'Expert Advisor in modalità di visualizzazione


Di seguito sono riportati i risultati del test dell'Expert Advisor che utilizza previsioni di un'ora (passo) in anticipo.

Rapporto del tester di strategia

EvewsMT4

Reale (Build 406)

Simbolo

EURUSD (Euro contro dollaro USA)

Lasso di tempo

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

Modello

Ogni tick (la modalità più accurata basata sugli intervalli di tempo più brevi disponibili)

Parametri

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






Barre nello storico

7948

Ticks modellati

79777

Qualità di modellazione

25.00%

Errori di grafico non corrispondenti

0






Deposito iniziale

10000.00





Profitto netto

-202.10

Profitto lordo

940.72

Perdita lorda

-1142.82

Fattore di profitto

0.82

Payoff atteso

-1.73



Drawdown assoluto

326.15

Drawdown massimo

456.15 (4.50%)

Drawdown relativo

4.50% (456.15)


Totale scambi

117

Per posizioni short (vincite in %)

58 (51.72%)

Per posizioni long (vincite in %)

59 (45.76%)


Operazioni di profitto (% del totale)

57 (48.72%)

Operazioni in perdita (% del totale)

60 (51.28%)

Maggiore

Operazioni in profitto

100.00

Operazioni in perdita

-79.00

Media

Operazioni in profitto

16.50

Operazioni in perdita

-19.05

Maximum

vittorie consecutive (profitto in denaro)

6 (105.00)

perdite consecutive (perdita di denaro)

8 (-162.00)

Massimale

profitto consecutivo (conteggio)

166.00 (5)

perdita consecutiva (conteggio)

-162.00 (8)

Media

vittorie consecutive

2

perdite consecutive

2




No.

Ora

Tipo

Ordine

Volume

Costo

S / L

T / P

Profitto

Saldo

1

2011.09.12 01:00

sell

1

0.10

1.3609

1.3711

1.3509


2

2011.09.12 02:00

Chiudi

1

0.10

1.3584

1.3711

1.3509

25.00

10025.00


Fig. 11. Risultati dei test del Expert Advisor


I risultati sono migliori di quelli ottenuti in EViews.

Si noti che il calcolo dei risultati in EViews e nel tester è diverso in termini di dati di input. EViews utilizza 118 barre e calcola la previsione a partire dalla barra 3 a sinistra mentre la previsione con un passo avanti si sta gradualmente spostando verso la fine del periodo di tempo aumentando il numero di barre utilizzate nella stima dell'equazione di regressione.

L'Expert Advisor sposta la finestra di 118 barre e calcola la previsione sulla barra 119, ovvero l'equazione di regressione è sempre stimata su 118 barre poiché EViews espande la finestra all'interno del campione e l'Expert Advisor sposta la finestra di larghezza fissa.

L'Expert Advisor ci aiuta a produrre una tabella di stima del modello estesa. Mentre la tabella sopra consisteva in un'unica riga, ora contiene 117 righe, per ogni data per la quale è stata prodotta la previsione.

La tabella è la seguente:

Inizio
del campione
Fine
del campione
Fatto a partire da
Fine
Un passo
previsione
Previsione
errore
Profitto
del campione
Perdita
del campione
Massimale
Drawdown
Importo
di perdite
P/F in
pip
P/F nelle osservazioni
Fattore di recupero
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


Tabella 4. Test dei risultati in EViews


La tabella suggerisce che il nostro modello (così primitivo e incompiuto) è praticamente senza speranza. Ha bisogno di miglioramento.

Tracciamo i grafici delle due colonne: P/F in pips e P/F in osservazioni.


Fig. 12. Grafici del fattore di profitto del modello sul campione di 118 barre


Questo grafico rappresenta la dipendenza dei fattori di profitto dal numero di barre nell'analisi. C'è un evidente trend rialzista.

Verifichiamo i risultati sul campione di 238 bar. Il grafico disegnato è il seguente:


Fig. 13. Grafici del fattore di profitto del modello sul campione di 236 barre


Il fatto che i grafici dei fattori di profitto differiscano suggerisce che il modello è instabile.


Conclusione

L'articolo ha affrontato l'uso delle previsioni one-step-ahead prodotte da EViews per lo sviluppo dell'Expert Advisor in MetaTrader 4.

Il risultato negativo che abbiamo ottenuto indica che costruire un modello in EViews è un compito piuttosto complicato che tuttavia sembra essere potenzialmente più produttivo dello sviluppo intuitivo di Expert Advisor.


Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/1345

File allegati |
EViewsMT4.zip (10.25 KB)
Forum sulla programmazione MQL5 Liste Forum sulla programmazione MQL5 Liste
La nuova versione del linguaggio di programmazione per lo sviluppo di strategie di trading, MQL [MQL5], fornisce funzionalità più potenti ed efficaci rispetto alla versione precedente [MQL4]. Il vantaggio risiede essenzialmente nelle funzionalità di programmazione orientata agli oggetti. Questo articolo esamina la possibilità di utilizzare tipi di dati personalizzati complessi, come nodi ed elenchi. Fornisce inoltre un esempio di utilizzo delle liste nella programmazione pratica in MQL5.
Indicatore per Kagi Charting Indicatore per Kagi Charting
L'articolo presenta l'indicatore grafico Kagi con varie opzioni per la creazione di grafici e funzioni aggiuntive. Inoltre, vengono considerati il principio del grafico dell'indicatore e le sue funzionalità di implementazione MQL5. Vengono visualizzati i casi più popolari della sua implementazione nel trading: strategia di scambio Yin / Yang, allontanandosi dalla linea di tendenza e aumentando costantemente le "spalle" / diminuendo la "vita".
Manuale MQL5: Sviluppo di un indicatore multi-simbolo per l’analisi della divergenza dei prezzi Manuale MQL5: Sviluppo di un indicatore multi-simbolo per l’analisi della divergenza dei prezzi
In questo articolo, considereremo lo sviluppo di un indicatore multi-simbolo per analizzare la divergenza dei prezzi in un determinato periodo di tempo. Gli argomenti principali sono già stati discussi nel precedente articolo sulla programmazione degli indicatori multi-valuta "MQL5 Cookbook: Sviluppo di un indicatore di volatilità multi-simbolo in MQL5". Quindi questa volta ci soffermeremo solo su quelle nuove caratteristiche e funzioni che sono state cambiate radicalmente. Se sei un neofita della programmazione di indicatori multi-valuta, ti consiglio di leggere prima l'articolo precedente.
Creazione di un Multi-Currency Multi-System Expert Advisor Creazione di un Multi-Currency Multi-System Expert Advisor
L'articolo introduce una struttura per un Expert Advisor che scambia più simboli e utilizza diversi sistemi di trading contemporaneamente. Se hai già identificato i parametri di input ottimali per tutti i tuoi EA e hai ottenuto buoni risultati di backtesting per ciascuno di essi separatamente, chiediti quali risultati otterresti se testassi tutti gli EA contemporaneamente, con tutte le tue strategie messe insieme.