Buongiorno,
in relazione ad un altro argomento.. Vorrei calcolare la media mobile a n periodi dei volumi ma solo con riferimento a delle specifiche barre orarie, esempio: media mobile degli ultimi 20 periodi ma solo sulla barra della prima ora di negoziazione. Che tipo di codice possono usare per un indicatore o un sistema di trading? Grazie mille
Quando devi porre nuove domande non correlate ad altre già fatte, anche se simili, inizia una nuova discussione. Grazie 🙂
Adesso ho iniziato io questa nuova discussione.
Puoi usare l’indicatore TRSMA che puoi trovare a questo link https://www.prorealcode.com/prorealtime-indicators/time-range-moving-averages-simple-exponential-weighted-trsma-trema-trwma/.
Comuque te lo riporto qui con la modifca per il VOLUME (anziché CLOSE) e con gli orari tra le 9 e le 10 (dalle 090000 alle 100000):
// TRSMA
//
// Time Range Simple Moving Average
//
DEFPARAM CalculateOnLastBars = 2000
Periods = 20
StartTime = 090000
EndTime = 100000
//
i = 0
TRSMA = 0
FOR j = 0 TO 3000
IF opentime[j] >= StartTime AND opentime[j] <= EndTime THEN
TRSMA = TRSMA + volume[j]//close[j]
i = i + 1
IF i = Periods THEN
BREAK
ENDIF
ENDIF
NEXT
TRSMA = (TRSMA / Periods)
IF TRSMA = 0 THEN
TRSMA = volume//close
ENDIF
Return TRSMA AS "TRSMA"
Buongiorno, grazie per la pronta risposta. Non trovo corrispondenza però tra i valori dell’indicatore e i dati che posso elaborare su excel
data
Volumi
MM20 excel
Indicatore
15/01/2025
4312
16/01/2025
7730
17/01/2025
5772
20/01/2025
3436
21/01/2025
3102
4870
22/01/2025
5952
5051
23/01/2025
3884
4884
24/01/2025
3658
4731
27/01/2025
7408
5028
28/01/2025
4946
5020
29/01/2025
3791
4908
30/01/2025
3744
4811
31/01/2025
3614
4719
03/02/2025
9195
5039
04/02/2025
6913
5164
05/02/2025
4516
5123
06/02/2025
5568
5149
07/02/2025
5606
5175
10/02/2025
4466
5138
11/02/2025
5672
5164
4050
12/02/2025
5179
5208
4136
13/02/2025
8737
5258
4434
14/02/2025
6601
5299
4610
Nella tabella ho riportato: 1) colonna 1 volumi della prima ora del dax 2) colonna 2 i volumi della media con 20 valori (mettendo anche l’ultimo) 3) colonna 3 i valori dell’indicatore. Mi aspetterei che l’indicatore desse un un valore uguale o molto simile a quello calcolato su excel. Cosa non quadra? Come faccio ad avere quei valori che calcolo con excel? Inoltre, come faccio ad usare questo dato in un trading system (funzione call forse). Esempio se i volumi della prima ora superano il valore calcolato dall’indicatore compra ecc. Potresti farmi un esempio semplice di codice.
P.S. Si hai ragione dovevo iniziare un nuovo topic, grazie per l’indicazione
Qual’è la prima ora del Dax?
La prima ora (rilevante) intendevo quella dei tuoi codici ossia dalle 9 alle 10. Sono i volumi dalle 9 alle 10 confrontati con i valori dell’indicatore così come mi appare inserendo il codice nella piattaforma
Verificherò appena possibile.
Ad esempio ho messo questo semplice indicatore che mi riporta effettivamente i volumi necessari. Il problema è che vorrei solo una barra per ogni giorno anziché tutte le 21 uguali per tutte le ore di trading. In questo modo calcolando una media mobile a n periodi il calcolo sarebbe corretto, ma non so fare uscire una sola. Non so se ci si può arrivare da questa strada come spunto.
TimeFrame (hourly, UpdateOnClose)
IF TIME=100000 THEN
VOL=volume
endif
RETURN VOL
Ho trovato alcuni errori logici nel codice (c’erano anche degli errori dei dati nel tuo file eXcel, come da foto allegata). Questa è la versione aggiornata:
// TRSMA sul Volume
//
// Time Range Simple Moving Average
//
DEFPARAM CalculateOnLastBars = 2000
Periods = 20
StartTime = 090000
EndTime = 100000
Periods = max(2,min(999,Periods))
StartTime = max(0,min(240000,StartTime))
EndTime = max(0,min(240000,EndTime))
//
i = 0
TRSMA = 0
FOR j = 0 TO 2000
IF opentime[j] >= StartTime AND opentime[j] < EndTime THEN
TRSMA = TRSMA + volume[j]
i = i + 1
IF i = Periods THEN
BREAK
ENDIF
ENDIF
NEXT
TRSMA = (TRSMA / Periods)
IF TRSMA = 0 THEN
TRSMA = volume
ENDIF
Return TRSMA AS "TRSMA"
Ok grazie funziona. Ultime due cose:
- come faccio ad adattarlo a time frame diversi? Ad esempio sui volumi delle barre a 15 minuti? Ad esempio mettendo startime=091500 e endtime=093000 il grafico diventa solo una scaletta. Non capisco quali altri parametri devo modificare e in che modo
- come faccio ad usare il parametro in un sistema di trading? Per esempio per dire un semplice sistema: se il volume dalle 9 alle 10 o dalle 15 alle 16 supera il trsma in quell’ora allora compra o vendi? Grazie in anticipo
E’ una scaletta perché dopo le 093000 non cambia più fino al giorno dopo.
Non è possibile fare altrimenti.