Author |
Topic |
Frenk
Nuovo Utente
41 Posts |
Posted - 03 December 2012 : 17:44:43
|
L' indicatore che hai creato in precedenza della velocità centrata non va bene come fonte dati? L' indicatore e ok, ora sto controllando i valori
quote: Originally posted by SupportoTecnico
Per la velocità smussata bisogna creare un altro indicatore che utilizzi la velocità centrata come fonte dati. Quindi, prima di tutto crea l'indicatore della velocità centrata e chiamalo "VelocitaCentrata".
Successivamente crea un altro indicatore con il codice qui sotto riportato.
[Velocita Smussata]:
Property Periodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property Periodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property Periodo_SMOOTING as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_SMOOTING as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
if (UsaZeroFinale = 1) then
If (iMyPos >= MezzoPeriodo_SMOOTING) then
mc = Moveav(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), Periodo_SMOOTING, "S", 0, - MezzoPeriodo_SMOOTING)
else
dTot = Sum(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), MezzoPeriodo_SMOOTING)
For i = 1 to iMyPos
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (MezzoPeriodo_SMOOTING + iMyPos)
else
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), iMyPos) * (MezzoPeriodo_SMOOTING - iMyPos)
mc = dTot / Periodo_SMOOTING
Endif
endif
else
If (iMyPos >= MezzoPeriodo_SMOOTING) then
mc = Moveav(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), Periodo_SMOOTING, "S", 0, - MezzoPeriodo_SMOOTING)
else
dTot = Sum(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), MezzoPeriodo_SMOOTING)
For i = 1 to iMyPos
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (MezzoPeriodo_SMOOTING + iMyPos)
else
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), iMyPos) * (MezzoPeriodo_SMOOTING - iMyPos)
mc = dTot / Periodo_SMOOTING
Endif
endif
endif
Return mc
Endfunction
|
Edited by - Frenk on 03 December 2012 19:17:44 |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 03 December 2012 : 21:28:15
|
Sei stato Bravissimo, anche se il valore finale dell' indicatore è un po diverso da quello di excel (questo probabilmente perche il software lo moltiplica per 100 o per 50 ecc), per il resto è identico, gli incroci con l' asse dello zero sono ottimali, grande lavoro.
Non hai un manuale della piattaforma formato file?
Cosi lo stampo a lavoro, a casa mi andrebbero via un sacco di cartucce per la stampante....
quote: Originally posted by Frenk
L' indicatore che hai creato in precedenza della velocità centrata non va bene come fonte dati? L' indicatore e ok, ora sto controllando i valori
quote: Originally posted by SupportoTecnico
Per la velocità smussata bisogna creare un altro indicatore che utilizzi la velocità centrata come fonte dati. Quindi, prima di tutto crea l'indicatore della velocità centrata e chiamalo "VelocitaCentrata".
Successivamente crea un altro indicatore con il codice qui sotto riportato.
[Velocita Smussata]:
Property Periodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_CORTA as Numeric
Default (0)
EndProperty
Property Periodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_MMC_LUNGA as Numeric
Default (0)
EndProperty
Property Periodo_SMOOTING as Numeric
Default (0)
EndProperty
Property MezzoPeriodo_SMOOTING as Numeric
Default (0)
EndProperty
Property UsaZeroFinale as Numeric
List (Si, 1)
List (No, 2)
Default (2)
EndProperty
Function Main()
Dim mc As Numeric
Dim iMyPos As Numeric
Dim i As Numeric
Dim dTot As Numeric
dim dResult as Numeric
iMyPos = TotBar - CurrentBar
if (UsaZeroFinale = 1) then
If (iMyPos >= MezzoPeriodo_SMOOTING) then
mc = Moveav(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), Periodo_SMOOTING, "S", 0, - MezzoPeriodo_SMOOTING)
else
dTot = Sum(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), MezzoPeriodo_SMOOTING)
For i = 1 to iMyPos
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (MezzoPeriodo_SMOOTING + iMyPos)
else
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 1), iMyPos) * (MezzoPeriodo_SMOOTING - iMyPos)
mc = dTot / Periodo_SMOOTING
Endif
endif
else
If (iMyPos >= MezzoPeriodo_SMOOTING) then
mc = Moveav(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), Periodo_SMOOTING, "S", 0, - MezzoPeriodo_SMOOTING)
else
dTot = Sum(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), MezzoPeriodo_SMOOTING)
For i = 1 to iMyPos
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), i)
next i
if (UsaZeroFinale = 1) then
mc = dTot / (MezzoPeriodo_SMOOTING + iMyPos)
else
dTot = dTot + value(VelocitaCentrata(Periodo_MMC_CORTA, MezzoPeriodo_MMC_CORTA, Periodo_MMC_LUNGA, MezzoPeriodo_MMC_LUNGA, 2), iMyPos) * (MezzoPeriodo_SMOOTING - iMyPos)
mc = dTot / Periodo_SMOOTING
Endif
endif
endif
Return mc
Endfunction
|
Edited by - Frenk on 03 December 2012 21:30:10 |
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 03 December 2012 : 21:37:12
|
Per stampare il manuale dovresti andare su menù "Aiuto" => "Help in Locale".
Da qui puoi stampare in un sol botto tutte le pagine della guida.
Putroppo non c'è il manuale in formato PDF.
Ma sinceramente non vedo il motivo di stampare tutto il manuale! Il manuale spiega le varie funzionalità del programma, come accedervi e come usarle. Ma in teoria dovrebbero essere abbastanza intuitive.
Eventualmente se ti interessa il linguaggio di programmazione ti consiglierei di stampare solo il capitolo che lo riguarda.
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 03 December 2012 : 22:14:00
|
Si avevo notato che in locale si poteva stampare tutto il manuale, sono d' accordo che la piattaforma è intuitiva, ma sono un po' io che certe cose le preferisco sul cartaceo, su questo sono un po' all' antica,,,,, ok il modo lo trovo
quote: Originally posted by SupportoTecnico
Per stampare il manuale dovresti andare su menù "Aiuto" => "Help in Locale".
Da qui puoi stampare in un sol botto tutte le pagine della guida.
Putroppo non c'è il manuale in formato PDF.
Ma sinceramente non vedo il motivo di stampare tutto il manuale! Il manuale spiega le varie funzionalità del programma, come accedervi e come usarle. Ma in teoria dovrebbero essere abbastanza intuitive.
Eventualmente se ti interessa il linguaggio di programmazione ti consiglierei di stampare solo il capitolo che lo riguarda.
|
Edited by - Frenk on 24 May 2015 22:07:43 |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 07 December 2012 : 17:29:26
|
Buonasera, per ora utilizzo sempre questo thread per altre domande,,, sto leggendo il manuale e il linguaggio di programmazione,,,, volevo chiederti una cosa non particolarmente importante rispetto alle altre ma che puo fare comondo,,,,,,,,si possono nascondere totalmente le informazioni dell' indicatore qualsiasi esso sia? Tutti gli indicatori hanno "in alto a sinistra" delle informazioni tipo: #4 volatility, P 20, Time 1, SD 2, LB 0
dal manuale ho visto che si può nascondere solo una picola parte dell' informazione,,, io invece volevo nasconderla totalmente.
grazie
quote: Originally posted by Frenk
Si havevo notato che in locale si poteva stampare tutto il manuale, sono d' accordo che la piattaforma è intuitiva, ma sono un po' io che certe cose le preferisco sul cartaceo, su questo sono un po' all' antica,,,,, ok il modo lo trovo
quote: Originally posted by SupportoTecnico
Per stampare il manuale dovresti andare su menù "Aiuto" => "Help in Locale".
Da qui puoi stampare in un sol botto tutte le pagine della guida.
Putroppo non c'è il manuale in formato PDF.
Ma sinceramente non vedo il motivo di stampare tutto il manuale! Il manuale spiega le varie funzionalità del programma, come accedervi e come usarle. Ma in teoria dovrebbero essere abbastanza intuitive.
Eventualmente se ti interessa il linguaggio di programmazione ti consiglierei di stampare solo il capitolo che lo riguarda.
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 07 December 2012 : 19:40:05
|
No, non è possibile eliminare del tutto l'informazione.
Nella nuova Suite sarà invece possibile scegliere in dettaglio quali informazioni visualizzare, anche nessuna.
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 18 December 2012 : 21:22:05
|
quote: Originally posted by SupportoTecnico
No, non è possibile eliminare del tutto l'informazione.
Nella nuova Suite sarà invece possibile scegliere in dettaglio quali informazioni visualizzare, anche nessuna.
Salve,
ho letto in un Topic precedente "un po più di un anno fa" che si accennava alle Bande Polinomiali, era stato risposto che in Insider 3000 non erano presenti, ma non ho capito se il linguaggio di programmazione permette di cotruite l' indicatore. Non so se a suo tempo parlavate delle Bande Polinomiali che intendo io e cioè le Center Of Gravity Channel o anche Polynomial Regression Channel (PRC) Bands. Sinceramente questo tipo di indicatore lo trovato solo sulla piattaforma Metatrader 4 e su richiesta a un trader che le usava nel suo blog,,, non credo sia semplicissimo da costruire,,, ma quando lo usato per un periodo di tempo è stato molto utile per i cambiamenti di tendenza sui vari cicli per lo piu di media durata. E' possibile costruire l' indicatore?
|
Edited by - Frenk on 18 December 2012 21:22:39 |
|
|
VpV
Utente Medio
155 Posts |
Posted - 19 December 2012 : 12:22:50
|
Ciao Frenk, ero io che chiedevo sulle bande polinomiali di tendenza. Persi un pò di tempo, non tanto a dir la verità, a replicare quelle su excel che fa automaticamente ma poi lasciai perdere.
Nel caso sarei interessato anche io alla realizzazione su Insider, del resto non è altro che una media centrata con proiezioni future.
|
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 19 December 2012 : 13:59:36
|
Googlando un po' mi sono imbattuto nel codice scritto per MT4.. effettivamente l'unico scritto davvero secondo la formula reale del PRC.
Le mie considerazioni sono queste:
Purtroppo per costruire quel tipo di indicatore servono 2 cose che il linguaggio di programazione della versione attuale del programma non possiede:
1) Le matrici bidimensionali
2) La possibilità di eseguire un ricalcolo completo dell'indicatore ad ogni nuovo tick (in real time)
Entrambe le "mancanze" dovrebbero essere superate con la nuova versione.
Poi sarà solo questione di padroneggiare le formule necessarie alla costruzione dell'indicatore, comunque non troppo semplici.
Se conoscete altri modi o formule di calcolo di questo tipo di indicatore provate pure a postarle magari viene fuori qualcosa di buono. |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 19 December 2012 : 19:05:56
|
quote: Originally posted by VpV
Ciao Frenk, ero io che chiedevo sulle bande polinomiali di tendenza. Persi un pò di tempo, non tanto a dir la verità, a replicare quelle su excel che fa automaticamente ma poi lasciai perdere.
Nel caso sarei interessato anche io alla realizzazione su Insider, del resto non è altro che una media centrata con proiezioni future.
Ciao VpV, avevo visto il tuo Nick, era un ottima idea avere le polinomiali sulla piattaforma,quelle su excel non le conosco, ma il codice di metatrader non mi sembra semplicissimo, anche il nostro supporto tecnico conferma,comunque suggerirei di inserirle nella prossima versione di Insider "se possibile naturalmente" in quanto non tutte le piattaforme possono costruire l' indicatore, e sarebbe anche un buon particolare per notare una certa potenza del linguaggio di programmazione. Tutt' oggi qualche volta do un occhio all' indicatore e secondo me da delle buone indicazioni sia sull' aspetto della pura analisi tecnica "andare long quando il prezzo raggiunge la banda inferiore e short su quella superiore", ma anche su quella ciclica, infatti in relazione ai periodi impostati "per Es. ciclo Tracy, una settimana di mercato aperto" in intraday 64 ore danno dei buoni segnali sui più importanti cambi di tendenza del ciclo in questione. Secondo me l' indicatore che potrebbe avvicinarsi alle bande polinomiali sono le bande di Hurst ma non le ho mai considerate più di tanto quindi questa mia affermazione e da prendere con le molle,,, comunque per ora vado avanti a studiare il linguaggio di programmazione, poi magari torno sulle hurst, polinomiali ecc... |
Edited by - Frenk on 20 December 2012 20:47:16 |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 20 December 2012 : 23:19:43
|
quote: Originally posted by Frenk
quote: Originally posted by VpV
Ciao Frenk, ero io che chiedevo sulle bande polinomiali di tendenza. Persi un pò di tempo, non tanto a dir la verità, a replicare quelle su excel che fa automaticamente ma poi lasciai perdere.
Nel caso sarei interessato anche io alla realizzazione su Insider, del resto non è altro che una media centrata con proiezioni future.
Ciao VpV, avevo visto il tuo Nick, era un ottima idea avere le polinomiali sulla piattaforma,quelle su excel non le conosco, ma il codice di metatrader non mi sembra semplicissimo, anche il nostro supporto tecnico conferma,comunque suggerirei di inserirle nella prossima versione di Insider "se possibile naturalmente" in quanto non tutte le piattaforme possono costruire l' indicatore, e sarebbe anche un buon particolare per notare una certa potenza del linguaggio di programmazione. Tutt' oggi qualche volta do un occhio all' indicatore e secondo me da delle buone indicazioni sia sull' aspetto della pura analisi tecnica "andare long quando il prezzo raggiunge la banda inferiore e short su quella superiore", ma anche su quella ciclica, infatti in relazione ai periodi impostati "per Es. ciclo Tracy, una settimana di mercato aperto" in intraday 64 ore danno dei buoni segnali sui più importanti cambi di tendenza del ciclo in questione. Secondo me l' indicatore che potrebbe avvicinarsi alle bande polinomiali sono le bande di Hurst ma non le ho mai considerate più di tanto quindi questa mia affermazione e da prendere con le molle,,, comunque per ora vado avanti a studiare il linguaggio di programmazione, poi magari torno sulle hurst, polinomiali ecc...
Salve,
sto cercando di completare il codice della Media Mobile di Hull:
Property Periodi() As Numeric Range (1, 40000) Default (64) EndProperty
Property Half_Periodi() As Numeric Range (1, 40000) Default (32) EndProperty
Function Main()
dim hull as Numeric
Hull = moveav(2 * (moveav(close, Half_periodi, "w")) - moveav(close, periodi, "w"), sqr(periodi), "W")
Return Hull
Endfunction
non capisco perche non prende "sqr(periodi)", l' editor mi dice: MOVEAV atteso un numero nell' argomento numero 2. Ma la risultante della funzione dovrebbe essere numerica,,, un aiuto?
grazie |
Edited by - Frenk on 20 December 2012 23:21:38 |
|
|
SupportoTecnico
Forum Admin
1261 Posts |
Posted - 21 December 2012 : 01:50:29
|
Ti sei imbattuto in una delle limitazioni di questa versione del linguaggio di programmazione.
La limitazione prevede che nelle funzioni indicatore, e quindi anche nella funzione MoveAv, non si possano utilizzare funzioni o variabili come argomenti, ma solamente property, numeri o stringhe a seconda del tipo di argomento, a meno che non si tratti di un argomento di tipo array.
Quindi, nel tuo caso, non puoi utilizzare sqr(periodi) in quell'argomento.
La soluzione più semplice è introdurre un'altra "Property" dove specifichi la radice quadrata del periodo, e quindi scrivere una cosa del tipo:
Hull = moveav(2 * (moveav(close, Half_periodi, "w")) - moveav(close, periodi, "w"), SqrPeriodi, "W")
dove SqrPeriodi è una property.
Questa limitazione è stata ovviamente superata nella nuova versione del linguaggio.
|
|
|
VpV
Utente Medio
155 Posts |
Posted - 21 December 2012 : 18:25:39
|
quote: Originally posted by SupportoTecnico
Ti sei imbattuto in una delle limitazioni di questa versione del linguaggio di programmazione.
La limitazione prevede che nelle funzioni indicatore, e quindi anche nella funzione MoveAv, non si possano utilizzare funzioni o variabili come argomenti, ma solamente property, numeri o stringhe a seconda del tipo di argomento, a meno che non si tratti di un argomento di tipo array.
Quindi, nel tuo caso, non puoi utilizzare sqr(periodi) in quell'argomento.
La soluzione più semplice è introdurre un'altra "Property" dove specifichi la radice quadrata del periodo, e quindi scrivere una cosa del tipo:
Hull = moveav(2 * (moveav(close, Half_periodi, "w")) - moveav(close, periodi, "w"), SqrPeriodi, "W")
dove SqrPeriodi è una property.
Questa limitazione è stata ovviamente superata nella nuova versione del linguaggio.
Per caso riuscite a recuperare la Jurik moving Average (JMA) ?
|
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 22 December 2012 : 09:28:48
|
quote: Originally posted by VpV
quote: Originally posted by SupportoTecnico
Ti sei imbattuto in una delle limitazioni di questa versione del linguaggio di programmazione.
La limitazione prevede che nelle funzioni indicatore, e quindi anche nella funzione MoveAv, non si possano utilizzare funzioni o variabili come argomenti, ma solamente property, numeri o stringhe a seconda del tipo di argomento, a meno che non si tratti di un argomento di tipo array.
Quindi, nel tuo caso, non puoi utilizzare sqr(periodi) in quell'argomento.
La soluzione più semplice è introdurre un'altra "Property" dove specifichi la radice quadrata del periodo, e quindi scrivere una cosa del tipo:
Hull = moveav(2 * (moveav(close, Half_periodi, "w")) - moveav(close, periodi, "w"), SqrPeriodi, "W")
dove SqrPeriodi è una property.
Questa limitazione è stata ovviamente superata nella nuova versione del linguaggio.
Per caso riuscite a recuperare la Jurik moving Average (JMA) ?
Ciao VPV per ora sono alle prese con la Hull e qualche altro indicatore comunque più avanti ci sta che gli dia un occhiata all JMA |
|
|
Frenk
Nuovo Utente
41 Posts |
Posted - 22 December 2012 : 20:57:27
|
quote: Originally posted by Frenk
quote: Originally posted by VpV
quote: Originally posted by SupportoTecnico
Ti sei imbattuto in una delle limitazioni di questa versione del linguaggio di programmazione.
La limitazione prevede che nelle funzioni indicatore, e quindi anche nella funzione MoveAv, non si possano utilizzare funzioni o variabili come argomenti, ma solamente property, numeri o stringhe a seconda del tipo di argomento, a meno che non si tratti di un argomento di tipo array.
Quindi, nel tuo caso, non puoi utilizzare sqr(periodi) in quell'argomento.
La soluzione più semplice è introdurre un'altra "Property" dove specifichi la radice quadrata del periodo, e quindi scrivere una cosa del tipo:
Hull = moveav(2 * (moveav(close, Half_periodi, "w")) - moveav(close, periodi, "w"), SqrPeriodi, "W")
dove SqrPeriodi è una property.
Questa limitazione è stata ovviamente superata nella nuova versione del linguaggio.
Per caso riuscite a recuperare la Jurik moving Average (JMA) ?
Ciao VPV per ora sono alle prese con la Hull e qualche altro indicatore comunque più avanti ci sta che gli dia un occhiata all JMA
per supporto tecnico:
Salve,
Il metodo di cui accenni sopra, di inserire un' altra property per inserire la radice quadrata del periodo, credo sia cosi:
...................
...................
Property radice As Numeric
Range (1, 40000) Default (4)
EndProperty
Function Main()
dim hull as Numeric
Hull = moveav(2 * (moveav(close, Meta_periodi, "w")) - moveav(close, periodi, "w"), radice, "W")
in questo caso la radice quadrata la devo inserire io nelle proprietà del pannello di controllo, giusto? Ho provato in vari modi utilizzando l' editor per far calcolare la radice quadrata dei periodi, ma per ora tutti respinti,,,, fare un codice calcolando la radice senza Sqr() "diciamo a mano" sarebbe un lavorone,,, credo che l' unica soluzione è quello sopra descritta. |
Edited by - Frenk on 22 December 2012 20:58:50 |
|
|
Topic |
|
|
|