Salve a tutti
chiedo l’intervento dei più esperti ( se possibile) per verificare e migliorare questo semplice sistema basato su Ulcer Index,
il mio obiettivo era ridurre al minimo le variabili per non incorrere nella sovraottimizzazione.
Il sistema ha restituito risultati positivi su vari mercati e può essere utlizzato con la funzione cumulateorder True/False ma solo su Timeframe giornaliero/settimanale.
Qualche idea?
Grazie
Un saluto
Coscar
// Definizione dei parametri del codice
DEFPARAM CumulateOrders = False // Posizioni cumulate Attivate / disattivate
//+-----------------------Varibili-----------------------------------------+
// N da 3 a 31 passo 1
// Value da 0 a 1 passo 0.01
// X da 0 a 10 passo 0.1 se utilizzato
//+------------------------------------------------------------------------+
MaxPrice=Highest[N](Close)
PD = ((Close-MaxPrice)/MaxPrice)*100
s=0
for i=0 to N-1 do
s=s+PD*PD
next
SquaredAverage=s/N
UlcerIndex=sqrt(SquaredAverage)
UlcerZero= UlcerIndex[1]- UlcerIndex
c1 = (UlcerZero[1] <= -Value)
c2 = (UlcerZero[1] >= Value)
IF c1 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF c2 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
//SET TARGET %PROFIT X
Mi sembra non ci siano molte cose da ottimizzare, se non le 3 variabili che hai indicato.
Puoi provare ad aggiungere un filtro, cioè vai Long solo se il prezzo è > del SuperTrend o di una Media Mobile, oppure vai Short solo quando il prezzo è al di sotto, o altre cose del genere.
Puoi provare ad aggiungere un trailing stop, qui sul forum ci sono vari codici pronti per l’uso. Magari puoi usare il supporto MTF (Multi Time Frame) per gestire il trailing stop.
Il calcolo dell’ULCER index è errato, sostituisci le righe 11-18 con:
N = 14
PD = ((Close - highest[N](close))/highest[N](close))*100
SquaredAverage = (summation[N](sqr(PD))/N)
UlcerIndex = sqrt(SquaredAverage)