lunghezza segmento magicTrend
Forums › ProRealTime forum Italiano › Supporto ProOrder › lunghezza segmento magicTrend
- This topic has 11 replies, 2 voices, and was last updated 2 years ago by MauroPro.
-
-
10/10/2022 at 10:01 AM #202249
Ciao Roberto, non riesco a quantificare la lunghezza dell’ultimo segmento dello stesso colore, prima del cambio di colore, del magicTrend (per usare tale paramentro come filtro).
Esempio : acquisito quando cambia il colore del magicTrend SOLO se il segmento (la linea) del magicTrend precedente (chiaramente di colore opposto) è maggiore, ad esempio, di 20 (barre).
Nella formula seguente ho già codificato il cambio di colore, potresti indicarmi come misurare la lunghezza dell’ultimo passsaggio di colore del magicTrend ? ( se la cosa non è chiara ti posto una bozza embrionale di TS che stò costruendo) Grazie
,//******************************************************************** MagicTrend
cciP = max(1,min(999,14)) //cciP = 20
atrP = max(1,min(999,14)) //atrP = 14
atrM = max(0.0000001,min(999,1)) //atrM = 1
smaP = max(1,min(999,5)) //smaP = 5
IF BarIndex > max(cciP,atrP) THEN
lastCCI = thisCCI
thisCCI = CCI[cciP](typicalPrice)
myATR = AverageTrueRange[atrP](close)
temp1 = myATR * atrM
upT = low – temp1
downT = high + temp1
temp2 = Average[smaP,0](myATR) * atrM
buffDN = high + temp2
buffUP = low – temp2
IF (thisCCI >= 0) AND (lastCCI < 0) THEN
buffUP = buffDN[1]
ENDIF
IF (thisCCI <= 0) AND (lastCCI > 0) THEN
buffDN = buffUP[1]
ENDIF
IF (thisCCI >= 0) THEN
IF (buffUP < buffUP[1]) THEN
buffUP = buffUP[1]
ENDIF
ELSIF (thisCCI <= 0) THEN
IF (buffDN > buffDN[1]) THEN
buffDN = buffDN[1]
ENDIF
ENDIF
IF thisCCI >= 0 THEN
MagicTrend = buffUP
ELSIF thisCCI <= 0 THEN
MagicTrend = buffDN
ENDIF
ELSE
thisCCI = 0
lastCCI = 0
myATR = 0
buffUP = 0
buffDN = 0
buffDN = 0
buffUP = 0
MagicTrend = 0
ENDIF
//————-
if bullMagicTrend then // linea verde magicTrend
bullMagicTrend = magicTrend >= magicTrend[1]
if bullMagicTrend then
bearMagicTrend = 0
endif
else
bullMagicTrend = magicTrend > magicTrend[1]
if bullMagicTrend then
bearMagicTrend = 0
endif
endif
//
if bearMagicTrend then
bearMagicTrend = magicTrend <= magicTrend[1] // linea rossa magicTrend
if bearMagicTrend then
bullMagicTrend = 0
endif
else
bearMagicTrend = MagicTrend < MagicTrend[1]
if bearMagicTrend then
bullMagicTrend = 0
endif
endif
//——————————–
increaseMagic = magicTrend > magicTrend[1] // rialzo magicTrend
decreaseMagic = magicTrend < magicTrend[1] // ribasso magicTrend
change = (bullMagicTrend and bearMagicTrend[1]) OR (bearMagicTrend and bullMagicTrend[1])
changeMagicUp = change and increaseMagic // passaggio rialzista magicTrend
changeMagicDown = change and decreaseMagic // passaggio ribassista magicTrend10/10/2022 at 6:28 PM #202271Il seguente codice conteggia le barre, ContoP è il conteggio del segmento precedente, Conto di quello corrente:
1234567891011121314151617181920212223ONCE Verde = 1ONCE Rosso = 1ONCE ContoP = 0ONCE Conto = 0MT = CALL "Magic Trend custom"[20, 14, 1, 5]IF MT <> MT[1] THENIF MT > MT[1] THENIF Rosso THENRosso = 0Verde = 1ContoP = ContoConto = 0ENDIFELSEIF Verde THENVerde = 0Rosso = 1ContoP = ContoConto = 0ENDIFENDIFENDIFConto = Conto + 11 user thanked author for this post.
10/12/2022 at 3:52 PM #202381Ciao Roberto, ho fatto numerose prove e funziona bene (ho provato quello che mi interessava: ContoP).
Ti volevo chiedere un altra cosa: è possibile in qualche modo visualizzare il guadagno mensile (in euro) di un TS sul grafico (in pratica la differenza dell’equity del primo ed ultimo del mese) ?
10/12/2022 at 5:27 PM #202392Si, occorre salvare in una variabile il valore ad inizio mese, poi fare la differenza a fine mese e con GRAPH la vedrai:
1234567ONCE Equity = 0ONCE Differenza = 0IF Month <> Month[1] THENDifferenza = StrategyProfit - EquityEquity = StrategyProfitENDIFGRAPH Differenza10/12/2022 at 9:23 PM #202400Ciao Roberto devo capire una cosa, se quando cambia il mese l’operazione è ancora aperta (diciamo che il TS la apre il 27 e la chiude il 03) questa viene scartata dal calcolo del mese o viene calcolato il profitto attuale? Mi sembra che l’operazione non viene calcolata, ti risulta?
10/12/2022 at 11:03 PM #202403Esatto, strategyprofit viene aggiornato solo alla chiusura, anche perché è l’unico momento in cui il risultato è definitivo.
10/13/2022 at 10:01 AM #20243310/13/2022 at 10:36 AM #202446La differenza la vedi con GRAPH (come ho fatto io sopra). I comandi grafici non possono essere usati con le strategie.
10/13/2022 at 10:38 AM #20244710/28/2022 at 4:57 PM #203164Ciao Roberto, riusciresti ad aggiungere nella formula sopra in cui si plotta con DIFFERENZA il gain/loss in euro dei singoli mesi, anche un graph con il DD, sempre mensile, calcolato come minimo rispetto alla chiusura del mese precedente e non in generale?
(ES. se il proftto mensile precedente è stato 1000 e si scende, nel nuovo mese, a 800 poi si sale a 1500 e si termina il mese a 1100, vorrei che venisse segnalato di DD 200 e non 400).
Puoi utilizzare questa formula di base sul DD che avevi scritto tempo fa (non so se serve tempProfit in quanto si parla di operazioni chiude mensili):
ONCE Capital = 10000
ONCE MinPoint = Capital
ONCE MaxPoint = 0
ONCE MaxDD = 0
//——————————————
// EQUITY
Equity = Capital + StrategyProfit
TempProfit = PositionPerf * PositionPrice / PipSize
TempEquity = Equity + TempProfit
//——————————————
// DrawDown
MaxPoint = max(MaxPoint,TempEquity)
DD = MaxPoint – TempEquity
MaxDD = max(MaxDD,DD)
//
10/30/2022 at 4:03 AM #203208Eccolo:
1234567891011121314151617181920212223242526272829303132333435ONCE Equity1 = 0ONCE Diff = 0IF Month <> Month[1] THENDiff = StrategyProfit - Equity1Equity1 = StrategyProfitMaxPoint = 0MaxDD = 0ENDIF//ONCE Capital = 10000ONCE MinPoint = CapitalONCE MaxPoint = 0ONCE MaxDD = 0//——————————————// EQUITYEquity2 = Capital + StrategyProfitTempProfit = PositionPerf * PositionPrice / PipSizeTempEquity = Equity2 + TempProfit//——————————————// DrawDownMaxPoint = max(MaxPoint,TempEquity)DD = MaxPoint - TempEquityMaxDD = max(MaxDD,DD)//---------------------------------------------------------// esempio//once N = 20if close crosses over average[N,0](close) thenbuy at marketelsif close crosses under average[N,0](close) thensellshort at marketendif//GRAPH Diff AS "Differenza Mese"GRAPH MaxDD AS "DrawDown Mese"1 user thanked author for this post.
10/30/2022 at 8:44 AM #203215Prende il DD generale non quello dalla chiusura del mese precedente al picco sotto questa chiusura.
“DD calcolato come minimo rispetto alla chiusura del mese precedente e non in generale”
Comunque ho riscritto così la formula e funziona:
once capital = 10000
equityThisMonth = capital + strategyProfit
DD = min (DD,equityThisMonth-equityPrevMonth)
if month <> month[1] then
DDprevMonth = DD
equityPrevMonth = capital + strategyProfit
equityThisMonth = equityPrevMonth
DD = 0
performancePrevMonth = strategyProfit – actualSP
actualSP = strategyProfit
endif
graph performancePrevMonth
graph DDPrevMonth coloured(255,20,147)1 user thanked author for this post.
-
AuthorPosts