Documentazione

Applicazioni

Ultimo aggiornamento il 15. 4. 2020 da Mark Fric

Indicatori esterni

Questa funzionalità è disponibile dalla build 127. Si noti inoltre che questa funzionalità è stata rinominata da Indicatori di dati personalizzati a Indicatori esterni nelle ultime build.

Se avete un indicatore che volete utilizzare in StrategyQuant, ma che non è ancora supportato, avete due possibilità:

  1. Implementare l'indicatore personalizzato in Java in StrategyQuant CodeEditor - questo richiede alcune conoscenze di programmazione. L'indicatore aggiunto in questo modo funzionerà come qualsiasi altro indicatore supportato da SQ.
  2. Importare l'indicatore personalizzato come dato - in questo modo StrategyQuant può utilizzare l'indicatore senza sapere come ha calcolato esattamente i suoi valori.
    Si tratta di una soluzione più semplice, ma con alcune limitazioni: è necessario esportare i valori dell'indicatore dalla propria piattaforma di trading utilizzando uno script speciale, per poi importarli in SQ. Inoltre, i dati saranno validi solo per il simbolo e il timeframe su cui sono stati calcolati. Ad esempio, se calcolate il vostro indicatore personalizzato su EURUSD / H1 e volete utilizzarlo per GBPUSD / H1 o addirittura EURUSD / M30, dovrete riesportare i dati dalla vostra piattaforma di trading.

Questa documentazione riguarda l'opzione 2. - Importare gli indicatori come dati.

Nota! 

Gli indicatori personalizzati importati come dati vengono calcolati in MetaTrader, Tradestation o nell'altra piattaforma di trading, non in SQ. Per ottenere i risultati corretti è necessario utilizzare gli stessi dati storici sia in StrategyQuant che in MT4.
Non funzionerà calcolare l'indicatore personalizzato in MetaTrader con i dati del broker e poi utilizzarlo in StrategyQuant su dati provenienti da altre fonti. Prima di utilizzare gli indicatori personalizzati, sincronizzare i dati della cronologia in modo che sia SQ che MT4 utilizzino la stessa cronologia.

 

In questo esempio implementeremo l'indicatore RVI, che è un esempio di indicatore standard nella piattaforma MT5:

Indicatore MT5 RVI

 

 

Passo 1: definire il nuovo indicatore esterno in StrategyQuant

Vai a Responsabile dei dati -> Indicatori esterni e fare clic su Aggiungi nuovo.

Si aprirà una finestra di dialogo per un nuovo indicatore in cui verranno specificate le proprietà dell'indicatore che si sta aggiungendo:

Aggiungere un indicatore di dati personalizzato

Nome

è il nome dell'indicatore che verrà visualizzato in SQ. Deve essere unico e non può contenere alcuno speciale
personaggi.
Poiché l'indicatore personalizzato viene calcolato specificamente per un simbolo e un timeframe, è buona norma impostare l'uso del simbolo e del TF anche nel suo nome, come nel nostro caso: RVI_EURUSD_H1.

 

Tipo di ritorno

è un tipo di valore di ritorno calcolato dall'indicatore, utilizzato da StrategyQuant per abbinare correttamente questo indicatore personalizzato ad altri blocchi del programma, in modo da confrontare il prezzo con il prezzo e non, ad esempio, con il valore del CCI. Può essere sia:

  • Numero - se si tratta di un indicatore come CCI, RSI, MACD ecc.
  • Prezzo - se il valore dell'indicatore è il prezzo, come la media mobile o le Bande di Bollinger.
  • Fascia di prezzo - se il valore dell'indicatore è un intervallo di prezzi (differenza tra due prezzi), come ATR o Bollinger Bands Range.
  • Segnale - se si desidera utilizzare l'indicatore come blocco di segnali personalizzato, utilizzare questa opzione. È possibile utilizzare l'indicatore di segnale, ad esempio, per riconoscere i modelli di candela o per implementare le proprie semplici regole di trading.

Come decidere il tipo di ritorno corretto

In generale, se l'indicatore traccia le sue linee sullo stesso grafico del prezzo, il suo tipo di ritorno è il prezzo. Se traccia le linee in una finestra separata sotto il grafico principale, allora si tratta di Numero, ad eccezione di indicatori speciali come l'ATR che calcolano la differenza di prezzo o il range.

 

Valori degli indicatori (linee)

questi sono i valori emessi dall'indicatore. Se osserviamo la schermata dell'indicatore RVI qui sotto, possiamo notare che esso emette due valori nella finestra Dati, che corrispondono alla linea RVI (verde) e alla linea del segnale (rossa) sul grafico.

I valori devono essere definiti nello stesso ordine in cui sono stati creati nell'indicatore.

C'è poi una parte interessante: è possibile definire il codice sorgente per ogni piattaforma di trading per ogni riga. Questo non è necessario per il funzionamento dell'indicatore in SQ, ma è necessario per SQ per sapere come generare il codice sorgente della strategia per ogni piattaforma.

Non è necessario definire le fonti per tutte e tre le piattaforme (MT4, MT5, EasyLanguage). Se si utilizza solo la MT5, è sufficiente specificare solo quel codice.

Il codice è il modo in cui si utilizza l'indicatore nel codice della piattaforma di trading, per MetaTrader di solito è qualcosa di simile:

iCustom(NULL, 0, "RVI", 10, 0, #Shift#)

 

Si noti che è possibile utilizzare #Shift# costante per il codice MT4 - sarà sostituita dall'effettivo Shift del building block durante la generazione del codice.

Lo spostamento in MetaTrader5 è utilizzato in modo diverso e non deve essere calcolato.

 

Cliccare OK e il nuovo indicatore verrà creato:

Non è ancora possibile utilizzarlo, perché si tratta solo di una definizione: è necessario importare i dati in questo indicatore affinché SQ possa utilizzarlo.

 

 

Passo 2: Ottenere i valori da MetaTrader

Gli indicatori personalizzati funzionano in modo che StrategyQuant utilizzi i loro valori calcolati in un altro programma, ad esempio in MetaTrader. Ciò significa che dobbiamo calcolare l'indicatore in MetaTrader e poi importare i suoi valori in SQ.

È un po' complicato, ma d'altra parte ci permette di utilizzare praticamente qualsiasi indicatore disponibile per MetaTrader, anche se non sappiamo come viene calcolato esattamente.

Per il calcolo dei valori degli indicatori utilizzeremo un semplice EA chiamato SqIndicatorValuesExportEA.

Questo è un EA personalizzato di StrategyQuant che può essere utilizzato per esportare i valori degli indicatori da MetaTrader. Il file si trova nella cartella {StrategiaQuant}indicatori_personalizzatiMetaTrader5Esperti

 

Per poterlo utilizzare nella MetaTrader è necessario copiarlo. Avviare MetaTrader 5, andare su File ->Apri cartella dati. Si aprirà la cartella dati di MT5. Andate su MQL5Experts e copiate lì questo EA.

Quindi riavviare MetaTrader e il nuovo EA sarà disponibile.

Prima di poterlo utilizzare, è necessario modificarlo in modo che esporti i valori dell'indicatore RVI proprio come vogliamo noi.

Aperto MT5 -> Strumenti -> Editor linguistico di MetaQuotes e trovare e aprire questo nuovo EA dalla cartella Experts.

Il codice è relativamente semplice da usare, è necessario apportare modifiche in pochi punti:

  1. In OnInit è necessario specificare il nome del file di esportazione e il codice iCustom:
int OnInit() {
  ...

    // Questo è il nome del file di esportazione. È buona norma includere anche il simbolo e il timeframe
    fileName = "EURUSD_H1_RVI_10.csv";
   
    // funzione per ottenere l'handle dell'indicatore
    indicatorHandle = iCustom(NULL, 0, "ExamplesRVI", 10);

 

  1. In OnTick è necessario aggiornare quali valori (linee di indicatori) saranno calcolati ed esportati:
void OnTick()
   ...
   indicatorBufferIndex = 0;
   if(!FillArraysFromBuffers(IndicatorBuffer, indicatorHandle, 2)) return;

   indicatorBufferIndex = 1;
   if(!FillArraysFromBuffers(SignalBuffer, indicatorHandle, 2)) return;

Se l'indicatore ha più linee, come nel caso di RVI, è necessario ripetere le linee:

   indicatorBufferIndex = NUMBER;
   if(!FillArraysFromBuffers(BUFFER_NAME, indicatorHandle, 2)) return;

per ogni riga.

Dove NUMERO è un numero di righe a partire da 0 e NOME_BUFFER è il nome dell'array di buffer.
All'inizio del file sono definiti due array di buffer:

double IndicatorBuffer[];
double SignalBuffer[];

è possibile aggiungerne altri se l'indicatore ha più di due righe.

  1. Inoltre, in OnTick è necessario aggiornare il metodo FileWrite e aggiungere alla fine i buffer da esportare:
FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);

 

Questo è tutto, ora è possibile compilare l'EA, che è pronto per essere utilizzato.

 

Esecuzione dell'EA di esportazione in MetaTrader

Quando il file SqIndicatorValuesExportEA è stato modificato e compilato senza problemi, possiamo eseguirlo per esportare i valori.

Andate su MT5 Strategy Tester, scegliete questo Expert e selezionate il simbolo e il timeframe per il quale volete esportare i dati dell'indicatore.

Esportazione dell'indicatore MT5

È necessario scegliere il simbolo e il timeframe per cui calcolare l'indicatore, nonché l'intervallo di date appropriato.

Quindi premere Inizio e attendere il completamento dell'esportazione.

 

Una volta terminato il test EA, il file di esportazione dovrebbe essere disponibile in Cartella dati MT5ma c'è un trucco. Il file generato non si trova nella cartella Terminal, ma nella cartella Tester.

Quando si apre la cartella dati da MT5, viene mostrata la cartella del terminale:

Cartella del terminale MT5

Ma il file non c'è. Per trovare il file esportato, è necessario andare su Tester e poi su Testing Agent/MQL5/Files:

Cartella del tester MT5

Ora è possibile copiare e incollare il file in una destinazione più comoda quando lo si trova.

 

 

Passo 3: Importare i valori degli indicatori in StrategyQuant

Una volta pronti i dati dell'indicatore, possiamo importarli nel nostro indicatore personalizzato in StrategyQuant.

Vai a Responsabile dei dati -> Indicatori esterni selezionare il nuovo indicatore e fare clic su Importazione dei dati dell'indicatore.

Trovare il file e specificare le colonne di importazione.

Se si esamina l'EA, i dati dell'indicatore sono stati esportati come ultimi due valori:

FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);

Scegliere quindi le ultime due colonne come Valore1 e Valore2.

Fare clic su Avviare l'importazione e l'indicatore dovrebbe essere importato con successo.

Indicatore SQ cusotm importato

Ora l'indicatore è pronto per essere utilizzato in SQ.

 

 

Fase 4: Utilizzo dell'indicatore esterno

Una volta importato con successo, l'indicatore può essere utilizzato come qualsiasi altro blocco di costruzione. Andare a Costruttore -> Impostazioni -> Blocchi di costruzione e dovreste vedere il nostro nuovo RVI indicatore lì:

Blocco di costruzione dell'indicatore di dati SQ cusotm

Se non lo vedete, verificare se è stato inserito l'intervallo di tempo corretto in Impostazioni -> Dati.

Si ricorda che i dati degli indicatori sono sempre calcolati per un timeframe specifico e non possono essere utilizzati in un altro timeframe. Se ad esempio si cambia il timeframe in M30, si vedranno solo gli indicatori esterni importati per i dati M30.

 

Una volta configurati gli elementi costitutivi, possiamo avviare la compilazione.

SQ

Dopo un po' di tempo, la banca dati si riempirà di nuove strategie che utilizzano il nostro nuovo indicatore esterno.

Quando apriamo una strategia, possiamo controllare lo pseudocodice:

Codice pseudo dell'indicatore di dati personalizzato SQ

Possiamo vedere che questa strategia confronta i nostri indicatori RVI_EURUSD_H1.

Quando passeremo il codice sorgente a MetaTrader 5, genererà un codice MT5 valido che potrà essere compilato ed eseguito in MT5:

Codice MT5 dell'indicatore dati personalizzato SQ

 

È inoltre possibile vedere un video passo-passo in cui il nostro programmatore senior mostra come codificare il vostro indicatore personalizzato. Link al video: https://www.youtube.com/watch?v=veiqIh0BS10&t=26s&ab_channel=StrategyQuant

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

Abbonarsi
Notificami
1 Commento
Il più vecchio
Più recente I più votati
Feedback in linea
Visualizza tutti i commenti
John Warner
28. 12. 2022 10:11 pm

Valori dell'indicatore (linee): è spiegato male. E per TradeStation? Come viene utilizzato il nome? Quali valori devono essere inseriti nel campo "Codice" per TradeStation?