Documentazione

Applicazioni

Last updated on 21. 3. 2024 by Mark Fric

Test del nuovo indicatore in SQ X rispetto ai dati di MT

Test del nuovo indicatore in SQ X rispetto ai dati di MT

we just created (or we are in the process of developing) our new indicator. How do we know that we implemented it correctly?

Una volta creato il nuovo indicatore in StrategyQuant e compilato con successo, è necessario verificare se funziona davvero come in MetaTrader, ovvero se i valori calcolati da esso sono gli stessi di quelli in MT4.

 

Note – this article was a part of Envelopes indicator example, so it refers to the Envelopes indicator. But the description of Indicators testing is valid for any indicator implementation.

 

A tal fine, nell'Editor del codice è disponibile uno strumento di verifica degli indicatori. Funziona semplicemente confrontando i valori calcolati in SQ con quelli calcolati in MT4.

 

In generale, funziona in pochi e semplici passaggi:

  1. Utilizzare lo script di aiuto per calcolare ed esportare i dati degli indicatori in MetaTrader
  2. Copiare i file di dati calcolati nella posizione corretta in modo che SQ possa trovarli.
  3. Configurare ed eseguire il test dell'indicatore in SQ

Utilizzare lo script di aiuto per calcolare ed esportare i dati degli indicatori in MetaTrader

Come primo passo dobbiamo preparare i dati di test della MT4 - dobbiamo calcolare l'indicatore su un certo numero di barre e salvare i valori calcolati in un file.

Per questo forniamo un semplice EA che potete utilizzare: si trova in {SQ}/custom_indicators/MetaTrader4/Experts/SqIndicatorValuesExportEA.mq4

 

Aggiungete questo EA alla vostra MetaTrader, modificatelo per calcolare il valore di uscita del vostro indicatore ed eseguitelo in MT4 StrategyTester su qualsiasi dato - per fare un test ottimale dovrebbe essere eseguito su almeno 1000 barre.

 

Poiché Envelopes ha due buffer di uscita, dobbiamo eseguirlo due volte: una volta per il buffer superiore e una per quello inferiore.

Ecco il codice modificato di questo script di esportazione che calcola l'indicatore degli inviluppi:

//+------------------------------------------------------------------+
//|                                   SQ_IndicatorValuesExportEA.mq4 |
//|                                                                  |
//|                    EA to export indicator values from MetaTrader |
//|                Output to: /{Data folder}/tester/files/******.csv |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2019 StrategyQuant"
#property link      "https://strategyquant.com"

string currentTime = "";
string lastTime = "";

//+------------------------------------------------------------------+

int start() {
   currentTime = TimeToStr(Time[1], TIME_DATE|TIME_MINUTES|TIME_SECONDS);
   if(currentTime == lastTime) {
      return(0);
   }
   
   double value;

   // change the file name below
   string fileName = "Envelopes_14_0_0_0_0.1_upper.csv";

   int handle = FileOpen(fileName, FILE_READ | FILE_WRITE, ";");
   if(handle>0) {
      FileSeek(handle,0,SEEK_END);

      // here is the indicator value 
      value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0.1 , 1 , 1); // upper value
      //value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0.1 , 2 , 1); // lower value
      
      FileWrite(handle, TimeToStr(Time[1], TIME_DATE|TIME_MINUTES|TIME_SECONDS), Open[1], High[1], Low[1], Close[1], Volume[1], value);
      FileClose(handle);
   }

   lastTime = currentTime;
   return(0);
}

calcolerà l'indicatore degli inviluppi su MT4 chiamando il suo metodo interno iEnvelopes() con i parametri appropriati.

Si noti che i parametri possono essere configurati, non è necessario utilizzare quelli predefiniti. È buona norma includere i valori dei parametri anche nel nome del file di dati di output, come nel nostro caso "Envelopes_14_0_0_0.1_upper.csv", in modo da sapere che è stato generato con questi parametri.

Ora possiamo eseguire questo script due volte in MT Tester:

Al termine dovrebbe creare un file di dati con i valori calcolati dell'indicatore e i prezzi Open, High, Low, Close per ogni barra. Il file verrà salvato in MetaTrader4 -> {cartella dati}/tester/files/nome_tuo_file.csv


Dovremmo vedere due file:
Envelopes_14_0_0_0_0.1_upper.csv
Envelopes_14_0_0_0_0.1_lower.csv

 

Copiare i file di dati calcolati nella posizione corretta in modo che SQ possa trovarli.


Copiare questi file in una cartella
{installazione SQ}/test/Indicatori/MetaTrader4

Creare questa cartella se non esiste, SQ Indicaotrs Tester cerca i file in questa cartella.

Ora che abbiamo preparato il file di dati, iniziamo un test in StrategyQuant.

 

Configurare ed eseguire il test dell'indicatore in SQ

Nell'Editor di codice, fare clic su Indicatori di prova nella barra degli strumenti.

Si aprirà la finestra di dialogo Indicator Tester, fare clic su Aggiungere un nuovo test. Aggiungere gli indicatori delle buste al test, sia per l'uscita superiore che per quella inferiore.

Lo si vedrà nella tabella seguente. L'ultima cosa da fare è modificare il file Nome del file di provain base ai nomi dei file dei dati di prova creati nel passaggio precedente e, facoltativamente, anche Parametri del test, se si sono usati altri tipi di dati oltre a quelli predefiniti:

Al termine, fare clic su Inizio per eseguire i test.

Nel caso ideale i test avranno successo e i valori calcolati in SQ corrisponderanno ai valori calcolati in MT4:

Se qualcosa non funziona, ci saranno differenze tra i valori di SQ e MT4. È possibile fare clic sul messaggio delle differenze per visualizzarle nell'elenco:

Se il test fallisce, verificare innanzitutto se i dati di test generati in MT4 utilizzavano gli stessi parametri dell'indicatore, perché potrebbe esserci un errore.

Se i dati del test sono corretti, c'è qualcosa che non va nell'implementazione SQ dell'indicatore: funziona in modo diverso dalla sua controparte MT4 e deve essere corretto.

 

Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti

Messaggi correlati