Prodotti software di Piligrimm - pagina 4

 

a Piligrim

Grazie!
Lo ha spiegato molto bene.
Abbastanza per implementare i vostri metodi programmaticamente.

 

Come esempio di utilizzo degli indicatori per costruire sistemi di trading, darò, in una versione semplificata, la strategia che ho implementato nel sistema di trading a rete neurale descritto nella sezione " Esempio di costruzione di un sistema di trading ". Dopo il fine settimana inizierò il debugging di questo sistema di trading, e quando sarà finito lo posterò in questo thread come esempio di utilizzo degli indicatori. Nel sistema di trading, scritto da , ho usato diversi indicatori. Come esempio, darò la strategia basata solo su due di loro, "Kristi_GrafModelWav", "Indicatore Trend". Ma prima dirò qualche parola sui principi di questi indicatori.

"Kristi_GrafModelWav" - costruito sulla base di polinomi della seguente forma:

GR1[i][0] = 0,6*(0,5*(-0,00000808108 +1,64312*(SD[i+5][4]-SD[i][4]) -0,387988*(SD[i][1]-SD[i][2]) +0,598535*(SD[i][2]-SD[i][3])

-0.468099*(SD[i+1][3]-SD[i][2])-0.461584*(SD[i+1][4]-SD[i][1])+SD[i][3])+0.5*((SD[i+2][1]-SD[i][3])-(SD[i+3][1]

-SD[i][4])+0.00000000861016*(SD[i][2]-SD[i][3])+(SD[i+19][3]-SD[i][4])+0.3*SD[i][3]+0.7*SD[i][4]))+0.4*((SD[i][1]

-SD[i+10][3])-(SD[i][1]-SD[i+10][4])+0.00000000861016*(SD[i][2]-SD[i+10][3])+(SD[i][3]-SD[i+10][4])+SD[i][4]);.

Isegnali SD sono ottenuti utilizzando il principio della "finestra scorrevole" che scansiona la storia della quotazione fino a una data profondità e cambia la sua larghezza . L' addestramento dei polinomi è stato eseguito sui segnali ottenuti sulla base della storia delle quotazioni EURUSD M1. Isegnali SD sono stati passati attraverso un gruppo di trasformate wavelet sintonizzate secondo diversi parametri. L'addestramento è stato fatto utilizzando algoritmi di regressione lineare e reti neurali formalizzate ridotte alla forma di polinomi. Lo scopo dei polinomi di addestramento era quello di aumentare l'informatività di un segnale di ingresso attraverso l'inclusione di argomenti ritardati dalla storia passata e il filtraggio di fattori minori e interferenti. Un altro scopo dei polinomi di addestramento, è quello di creare un gruppo di segnali sintetizzati sulla base di citazioni, portando le caratteristiche figlie del segnale principale, e sovrapponendo lo spettro dei suoi possibili cambiamenti. Questo è fatto per garantire che le reti neurali che immetteranno questo gruppo di segnali avranno l'opportunità di "catturare" diverse armoniche incluse nel segnale di ingresso e subire un addestramento qualitativo. Anche se la formazione è stata effettuata su EURUSD M1, l'indicatore funziona su qualsiasi strumento, qualsiasi periodo, qualsiasi mercato. L'indicatore forma un gruppo di 40 segnali sintetizzati.

"Indicator Trend utilizza come base del suo lavoro l'algoritmo di campionamento a soglia, sviluppato da me, con il passo che viene ricostruito in proporzione alla dinamica dei cambiamenti nelle quotazioni. Come risultato di tale campionamento si ottengono campioni corrispondenti solo ai punti estremi del segnale, il segnale viene compresso, viene eseguita una filtrazione profonda per l'eliminazione di rumori e fluttuazioni insignificanti. La ricostruzione del segnale su ogni barra è fatta per interpolazione tra due punti di campionamento adiacenti. Nelle immagini precedenti, la linea rossa, si può vedere il segnale ricostruito su ogni barra, e i punti di rottura corrispondono ai punti di campionamento. Gli indicatori "Indicatore Power" e "Indicatore Channel" sono costruiti secondo lo stesso principio . Tale compressione del segnale permette di ottenere uno studio profondo della storia delle citazioni con un numero relativamente piccolo di punti di campionamento, che riduce significativamente il tempo e aumenta la precisione dell'addestramento delle reti neurali quando i campioni discreti sono alimentati all'ingresso.

L'essenza della strategia di costruire un sistema di trading basato su due indicatori è la seguente. L'indicatore "Kristi_GrafModelWav" è usato come fonte di segnali di input, e l'indicatore "Indicatore Trend" è usato come segnale sorgente per l'addestramento della rete neurale. Lo scopo della formazione è quello di fare una previsione del futuro punto di campionamento, che determinerà la direzione del movimento del prezzo e il suo livello approssimativo. Per sincronizzare questi indicatori, impostiamo la stessa lunghezza del campione di ingresso LengthSample . Nelle impostazioni degli indicatori, impostiamo il permesso di salvare i dati su disco con direzione di indicizzazione dall'inizio dell'array. Nelle impostazioni dell'indicatore "Indicator Trend" impostiamo la modalità di salvataggio dei campioni discreti, quindi i livelli di prezzo in punti discreti (breakpoint nell'immagine) e il numero ordinale del campione LengthSample saranno scritti sul disco , impostiamo la modalità statica di funzionamento dell'indicatore . A quel punto, all'arrivo di ogni nuova barra l'intera storia sarà ricalcolata e si formerà un array che copre l'intera lunghezza del campione LengthSample. Nell'array, creato dall'indicatore "Indicatore Trend", abbiamo ricevuto dei conteggi che verranno utilizzati come dati rispetto ai quali verrà addestrata la rete neurale. Ora dovremmo formare un array che sarà alimentato all'ingresso della rete neurale. L'indicatore "Kristi_GrafModelWav" scrive sul disco un array composto da 40 colonne che corrispondono ai suoi segnali di uscita, e con la lunghezza LengthSample. Dobbiamo selezionare da questa matrice le righe corrispondenti ai punti di campionamento dell'indicatore "Trend dell'indicatore". Questo può essere fatto facilmente utilizzando l'array ottenuto dall'indicatore "Indicatore di tendenza", la cui seconda colonna contiene i numeri ordinali dei campioni dei punti di campionamento. Dato che la lunghezza del campione di ingresso per entrambi questi indicatori è la stessa, questi numeri corrisponderanno all'array dell'indicatore "Kristi_GrafModelWav", selezionando le linee appropriate dell'indicatore "Kristi_GrafModelWav" eseguiremo il campionamento dei dati dell'indicatore "Kristi_GrafModelWav" sincrono all'indicatore "Indicator Trend". Così, abbiamo ottenuto l'array di input per l'addestramento della rete neurale. Ora stiamo per addestrare la rete neurale. Ora abbiamo bisogno di usare la rete neurale addestrata per eseguire calcoli e fare previsioni in tempo reale. Per farlo , impostate LengthSample = 1 nelle impostazioni dell'indicatore "Kristi_GrafModelWav". All'arrivo di ogni nuova barra verrà scritto su disco un array composto da una singola linea contenente tutti i 40 valori del segnale. Dovremmo calcolare la rete neurale nei momenti di formazione di un nuovo punto di discretizzazione dell'indicatore "Trend Indicator" secondo l' algoritmo di apprendimento. Per determinare questi momenti abbiamo solo bisogno di usare due variabili globali, che sono formate dall 'indicatore "Indicatore di tendenza". Non appena i valori di queste due variabili globali cambiano relativamente tra loro, significa che si è formato un nuovo punto di campionamento. A questo punto dovremmo leggere l'array di dati dell'indicatore "Kristi_GrafModelWav" dal disco , alimentarlo all'ingresso della rete neurale addestrata ed eseguire il calcolo. Otterremo una previsione del prossimo punto di campionamento nel momento in cui si è formato l'ultimo. Questa è una strategia di trading system basata sugli indicatori che ho suggerito nella sua forma più semplice. È possibile costruire strategie più complesse utilizzando tutti gli indicatori, aumenterà la precisione e l'affidabilità delle previsioni.

 

Per avere un'idea migliore della funzionalità degli indicatori, ecco le istruzioni per utilizzare l'indicatore "Indicatore Trend" come esempio. Se ci sono commenti, suggerimenti per correggere o aggiungere, li ascolterò volentieri. Se siete interessati, posso anche fornire istruzioni per l'utilizzo di altri indicatori.

=======================================================================================================

Indicatore Indicatore di tendenza.

Questo indicatore "Indicator Trend " è destinato alla creazione di un modello di tendenza per lo strumento al quale l'indicatore è collegato. "Indicator Trend " usa nella base del suo lavoro il mio algoritmo sviluppato di campionamento a soglia con passo ricostruibile in proporzione alla dinamica di cambiamento delle quotazioni. Come risultato di tale campionamento campioni corrispondenti solo ai punti estremi del segnale sono ottenuti, il segnale è compresso, e il filtraggio profondo è eseguito rimuovendo il rumore e le fluttuazioni insignificanti. Il segnale ad ogni barra è ricostruito per interpolazione tra due punti di campionamento adiacenti.

L'indicatore funziona su qualsiasi strumento, qualsiasi periodo, qualsiasi mercato. L'indicatore può essere utilizzato per progettare sistemi di trading meccanico e per il trading manuale.

L'indicatore elabora i dati all'arrivo della nuova barra. L'indicatore funziona in due modi, statico e dinamico. Nella modalità statica, l'indicatore costruisce un modello di tendenza per l'intera lunghezza del campione storico specificato e ricalcola l'intera lunghezza all'arrivo di una nuova barra, creando modelli di una lunghezza specificata, che possono essere visualizzati sul grafico e salvati su disco. Nella modalità dinamica, l'indicatore calcola il valore solo per la barra appena ricevuta, accumulando gradualmente i valori calcolati man mano che arrivano nuovi dati. La lunghezza della storia elaborata è determinata dalla variabile"LengthSample" nella scheda "Properties - Input parameters", la lunghezza della storia può essere qualsiasi.

Il salvataggio dei valori di segnale, calcolati dall'indicatore su disco, con le relative autorizzazioni nelle impostazioni, è possibile in due varianti:

1). Salvataggio dei valori del segnale su ogni barra;

2). Salvare i valori solo punti di campionamento (inversione di tendenza).

I valori del segnale negli ultimi due punti di campionamento sono anche salvati nelle variabili globali, i nomi delle variabili globali possono essere cambiati, permette di impostare qualsiasi numero di indicatori con diversi livelli di soglia per uno strumento e attraverso le variabili globali organizzare la comunicazione con l'Expert Advisor o altri indicatori. Quando l'indicatore funziona, è possibile ottimizzare i suoi parametri ricostruendo il coefficiente di soglia. La scelta di un valore di soglia specifico è determinata da su quale strumento e timeframe l'indicatore è installato e quale strategia di trading si vuole implementare sulla base di questo indicatore.

Il calcolo viene visualizzato sul grafico dello strumento nella finestra in cui è installato l'indicatore.

I parametri di funzionamento sono impostati nella scheda "Proprietà - Parametri di ingresso" quando si installa l'indicatore su un grafico nella finestra MetaTrader 4.


L'indicatore "Indicatore di tendenza" ha i seguenti parametri di ingresso:

1). LengthSample - lunghezza della storia elaborata;

2). Soglia - coefficiente di soglia;

3). DynamicMode - modalità dell'indicatore dinamico/statico.

4). SaveFileData - flag che permette di scrivere su disco i dati calcolati dall'indicatore;

5). FileNameData - nome del file per salvare i dati;

6). SaveFilePointsFracture - flag per consentire la scrittura su disco dei punti di campionamento calcolati dall'indicatore;

7). FileNamePointsFracture - nome del file per salvare i punti campione;

8). Subscripting_MT4 - direzione dell'indicizzazione degli array da scrivere su disco.

9). NameGlobalVariable0 - nome della variabile globale che salva il valore dell'ultimo punto di campionamento;

10). NameGlobalVariable1 - nome della variabile globale che salva il valore del penultimo punto di campionamento.


1). La lunghezza della storia elaborata è determinata dalla variabile"LengthSample". La dimensione massima non è limitata. Allo stesso tempo, è necessario che nella finestra e nella cronologia dei simboli con cui lavora l'indicatore non ci sia un numero di barre inferiore a"LengthSample + 1".

2). Threshold Factor, imposta la soglia di campionamento in "punti".

3). DynamicMode è un flag che determina la scelta del modo di funzionamento dinamico o statico dell'indicatore, se DynamicMode = 1 - modo dinamico, se DynamicMode = 0 - modo statico. La modalità dinamica permette di accelerare il lavoro dell'indicatore, perché solo le nuove barre saranno processate invece di ricalcolare l'intera storia. Allo stesso tempo, i valori calcolati saranno accumulati. Solo i dati accumulati come risultato del calcolo saranno salvati nel file e visualizzati nel grafico, così come se la scrittura su disco è abilitata. Nel modo statico, quando arriva una nuova barra, l'intera storia sarà ricalcolata dalla profondità di"LengthSample". L'intera lunghezza della storia elaborata sarà salvata nel file e visualizzata sul grafico, e quando la scrittura su disco è abilitata.

4). Il flag SaveFileData proibisce a di scrivere su disco i dati calcolati dall'indicatore quando il valore è 0, se non è richiesta un'ulteriore elaborazione dei dati. Se è necessaria un'ulteriore elaborazione e il salvataggio dei dati su disco, SaveFileData dovrebbe essere impostato su 1.

5). FileNameData - nome del file in cui i dati saranno salvati sul disco. Puoi usare qualsiasi nome, ma l'estensione del file deve rimanere invariata.csv, altrimenti si verificherà un errore durante la scrittura del file. La dimensione massima dell'array salvato è determinata da "LengthSample", ma il numero di linee in esso può essere inferiore a"LengthSample", per il numero di barre che separano l'ultimo punto di campionamento dalla barra zero.

6). Il flag SaveFilePointsFracture proibisce a di scrivere su disco i prezzi nei punti di campionamento calcolati dall'indicatore quando il valore è 0, se non è necessaria un'ulteriore elaborazione dei dati. Se è necessaria la successiva elaborazione dei dati e il salvataggio su disco, il valore SaveFilePointsFracture dovrebbe essere impostato su 1.

7). FileNamePointsFracture - il nome del file in cui verranno salvati i valori dei prezzi nei punti di campionamento e il numero di serie della barra dall'inizio della storia elaborata"LengthSample", corrispondente ad ogni punto di campionamento. Il numero di record in questo file sarà determinato dal numero di punti di campionamento ottenuti sulla lunghezza della storia pari a"LengthSample" al rapporto di soglia impostato. Nella modalità dinamica - il numero di punti di campionamento formati dall'inizio dell'indicatore. Il numero di serie della barra, corrispondente ad ogni punto di campionamento sarà anche calcolato dal momento dell'inizio dell'indicatore.

8). La variabile Subscripting_MT4 - definisce la direzione dell'indicizzazione dell'array che viene scritto sul disco, se la impostiamo a 1, l'indicizzazione corrisponderà a quella usata in MetaTrader 4, dalla posizione iniziale allo zero, se la impostiamo a 0, l'indicizzazione standard sarà da zero alla posizione iniziale. Si riferisce sia a FileNameData che a FileNamePointsFracture.

9). NameGlobalVariable0 - Nome della variabile globale che memorizza il valore del prezzo nell'ultimo punto di campionamento.

10). NameGlobalVariable1 - il nome della variabile globale che salva il valore del prezzo nel penultimo punto di campionamento.


Quando l'indicatore funziona, l'angolo superiore sinistro del grafico mostrerà le informazioni sulla lunghezza della storia elaborata "LengthSample", il valore di soglia e il numero di cicli lavorati dall'indicatore "AmountRunning".


Decomprimere tutto il contenuto dell'archivio Indicator Trend.rar e installare l'indicatore Indicator Trend.ex4 nella cartella \experts\indicators, riavviare il terminale MetaTrader 4, dopo che indicatore "Indicator Trend" appare nella finestra degli indicatori personalizzati \Navigator\indicators/User Indicators\, può essere installato sul grafico nella finestra MetaTrader 4.

 

Se non ci sono domande sulle istruzioni di cui sopra per il funzionamento dell'indicatore "Indicatore Trend", non darò istruzioni per altri indicatori, ma solo estratti riguardanti il principio del loro lavoro. Per gli indicatori Kristi_GrafModelWav,"Indicatore Trend", l'ho fatto nell'esempio di strategia di trading, darò per "Indicatore Power" e "Indicatore Channel".

=====================================================================================================

Indicatore Indicatore "Power".

L'idea, sulla base della quale è stato sviluppato l'indicatore "Indicatore Power", è quello di tracciare dinamicamente la lotta di tendenza rialzista e ribassista, che si svolge nel mercato al momento. Se il trend rialzista sta dominando, quando arrivano nuove barre, l'indicatore sale sulla barra zero proporzionalmente alla forza del trend, quando il trend ribassista sta dominando - rispettivamente verso il basso. Se la tendenza oscilla leggermente da un lato o dall'altro, i valori dell'indicatore mostrano una linea retta, che si muove lentamente sulla sua lunghezza dall'ultimo punto di rottura in proporzione alla forza della tendenza prevalente, e con un aumento significativo di una delle tendenze salta al lato corrispondente, formando un nuovo punto di rottura. " Indicatore Power " - utilizza nella base del suo funzionamento l'algoritmo di campionamento a soglia, sviluppato da me, con il passo che viene ricostruito in proporzione alla dinamica dei cambiamenti nelle quotazioni. Come risultato di questo campionamento otteniamo letture che corrispondono solo agli estremi del segnale. Il livello del segnale, mostrato dall'indicatore, è determinato dalla forza della tendenza dominante al momento, e cambia lentamente in proporzione alla forza della tendenza, fino a quando il prossimo punto di campionamento si forma e fissa questo livello.

Indicatore Indicatore "Canale".

Ci sono due tendenze sul mercato, la tendenza al rialzo è rialzista, e la tendenza al ribasso è ribassista. Queste tendenze hanno un carattere diverso, ma tuttavia sono dipendenti l'una dall'altra e si influenzano a vicenda. Questo indicatore si basa sull'idea di separare queste due tendenze dal flusso generale di dati delle quotazioni, formalizzarle in una serie temporale, riflettendo il loro sviluppo e l'influenza reciproca, così come il risultato della loro lotta. Indicatore "Indicatore Channel" crea un canale di tendenza e riflette la dinamica del suo comportamento, estrapolando la direzione delle tendenze del mercato. Lalinea superiore mostra il carattere di una tendenza rialzista sotto l'influenza di una ribassista, la linea inferiore mostra il carattere di una tendenza ribassista sotto l'influenza di una rialzista, la linea centrale è il risultato della loro lotta, e in realtà è una delle armoniche di tendenza corrispondente al livello specificato di campionamento del flusso delle quotazioni. Il diverso livello di campionamento permette di separare le armoniche con diverse caratteristiche di ampiezza-frequenza. "Indicatore Channel " - utilizza nella base del suo lavoro il mio algoritmo di campionamento di soglia sviluppato con un passo ricostruito in proporzione alla dinamica dei cambiamenti nelle quotazioni. Come risultato di tale campionamento otteniamo i campioni corrispondenti ai punti estremi del segnale per ogni tendenza separatamente. Il livello del segnale, per ciascuna delle tre linee dell'indicatore, è determinato dalla dinamica della tendenza corrispondente e cambia lentamente in proporzione alla forza della tendenza, e alla natura della prevalenza dell'una sull'altra, fino a che il prossimo punto di discretizzazione si forma e fissa questo livello.

I componenti informativi dell'indicatore sono: restringimento e allargamento del canale, angoli di divergenza dei raggi superiori e inferiori, punti di flessione e momenti di inversione della linea centrale del canale. Quando si ricevono nuove barre, l'indicatore riflette dinamicamente la tendenza del mercato che cambia, ricostruendo i raggi dall'ultimo punto di rottura alla prima barra.

 

Penso che il prezzo che avete fissato sia troppo alto, perché è quasi paragonabile ai prodotti software ben noti, che possono essere i vostri sviluppi sono grandi, ma lo sappiamo solo dalle vostre parole.Ma se gli indicatori proposti per l'acquisto sono scritti con lo stesso spirito, la costruzione di un Expert Advisor basato su di essi, che a mio parere richiede un gran numero di esperimenti, richiede probabilmente almeno un computer "Elbrus" :)).Ho provato ad usare il più semplice Expert Advisor basato su di esso ma ho rinunciato perché il mio PC non troppo debole poteva a malapena ansimare, mentre volevo testarlo su tutta la storia - sai come è stato ottimizzato.

 
lovova:

Penso che il prezzo che hai fissato sia troppo alto, perché è quasi paragonabile ai prodotti software ben noti, che possono essere i tuoi sviluppi sono grandi, ma lo sappiamo solo dalle tue parole.Ma se gli indicatori proposti per l'acquisto sono scritti con lo stesso spirito, la costruzione di un Expert Advisor basato su di essi, che a mio parere richiede un gran numero di esperimenti, richiede probabilmente almeno un computer "Elbrus" :)).Ho provato a usare un semplice Expert Advisor basato su di esso, ma ho rinunciato perché il mio computer non troppo debole poteva appena ansimare, e per testare l'intera storia si sa, e l'ottimizzazione.

Grazie per il sasso. Ho uno standard di prezzo per i prodotti software di trading. Apprezzo lo sforzo che ci ho messo, e penso che i prezzi che ho fissato siano adeguati al contenuto. Come dovrebbe essere chiaro da quello che ho scritto sugli indicatori, non sono di tipo primitivo, e anche se il codice è ottimizzato e non molto grande, l'algoritmo del loro lavoro è piuttosto complicato, ho passato diversi anni per aggiornarli. Se li confrontiamo con Expert Advisors di buon livello, per esempio, i prezzi sono comparabili, ed è molto più facile scrivere un Expert Advisor dove la maggior parte dei blocchi standard sono occupati, che creare un algoritmo efficace di analisi di mercato. Non ho ancora un "nome", ma a giudicare da questo articolo e da diversi argomenti a cui ho partecipato, non sono estraneo a questo settore, e ho una certa esperienza. Non sto dicendo che questi indicatori dovrebbero essere comprati insieme, sto dicendo che sono stati sviluppati come strumenti complementari per l'analisi sfaccettata di diversi algoritmi di mercato e sono più efficaci se usati insieme. Ma possono lavorare separatamente o in coppia, come mostrato nell'esempio. Per quanto riguarda le garanzie, questa è una questione separata, posso garantire che il loro lavoro come ho scritto, ma se si farà un profitto utilizzando loro dipende dalla strategia che si costruisce su di loro, e se si pensa che è necessario discutere la strategia con me, in modo che io possa consigliare qualcosa, avendo una migliore idea delle possibilità indicatori. Se ci sono problemi e difficoltà nel padroneggiare il loro lavoro, fornirò naturalmente un supporto tecnico.

Quello che propongo ora non può essere paragonato all'indicatore Krisity, ho iniziato a scriverlo per padroneggiare MQL, è il primo codice che ho scritto in un linguaggio che è nuovo per me. Non conoscevo ancora le possibilità del linguaggio e delle funzioni, e non mi ero posto il compito di scriverlo in modo ottimale, stavo solo imparando. Naturalmente, tutto sembrava e funzionava in modo diverso ora.

 

Ricevo e-mail che mi chiedono di inviarmi versioni demo degli indicatori per vedere come funzionano. Purtroppo non ho versioni demo. Per compensare parzialmente, per dare un'idea di come 3 indicatori - "Indicatore Trend", "Indicatore Power" e "Indicatore Channel" lavorano in dinamica, ho deciso di dimostrare il loro lavoro sotto forma di slide prese dal terminale demo durante diversi giorni. Per non sovraccaricare l'argomento con immagini, mostrerò solo le diapositive che riflettono eventuali cambiamenti nella situazione del mercato e il cambiamento dei valori degli indicatori. La differenza di orario tra il terminale e il forum è di 2 ore. Prima foto:

 

Seconda diapositiva, ho aumentato leggermente la soglia dell'indicatore "Tendenza dell'indicatore", è meglio, non regolerò nient'altro.