Programmazione Prorealtime Prorealtime:formule, indicatori, oscillatori, tsi ... (12 lettori)

gransasso

Forumer attivo
.... sicuramente comodo, certo, ma indispensabile di certo no :D

ecco come replicare un equity line creando un indicatore ad hoc!!

nel codice riprendo il motore postato ieri da gransasso ed mostrato nei post precedenti come base per alcuni esempi sul controllo della position size



... un vantaggio a fare questo tipo di lavoro è subito palese vero? :eek:




to be continued ......

Gran bel lavoro e grazie anche per il codice in probacktest.
Sulla martingala invece ......
Io ho trovato solo due grosse controndicazioni:
1) non rimanere senza soldi prima della puntata giusta
2) non alzarsi mai dal tavolo da gioco (neanche per fare pipì)
 

tetsuo

Guest
....

... un vantaggio a fare questo tipo di lavoro è subito palese vero?



..... abbiamo la possibilità di plottare qualsiasi parametro del TS oltre all'equity in modo da poter operare un miglior controllo dell'andamento (nel grafico ho messo il dd e e il maxdd) ma non solo è possibile anche usarli ed esportarli (in altri TS attraverso la funzione CALL) ampliando le funzionalità di base di probacktest (es. la media sull'equity come interruttore on/off per il ts :D).



se dovessi scrivere ts con prt userei questo tipo di approccio mi fa capire meglio quello che scrivo lasciandomi più libertà ... è pur vero che comunque io non scrivo prorpio ts :wall: :lol:



l'esempio precedente con la martingala attiva


Codice:
once numeroposizioni=1
indicator1 = ExponentialAverage[10](close)
indicator2 = ExponentialAverage[20](close)





//uscite
c2 = (indicator1 CROSSES UNDER indicator2)
IF (c2 OR TIME > 161500) and sulmercato=1 THEN
	uscita=close
	n=n+1
	sulmercato=0
	if uscita=>entrata then
		numeroposizioni=1
	else
		numeroposizioni=numeroposizioni*2
	endif
endif


c4 = (indicator1 CROSSES OVER indicator2)
IF (c4 OR TIME > 161500) and sulmercato=-1 THEN
	uscita=close
	n=n+1
	sulmercato=0
	if uscita<=entrata then
		numeroposizioni=1
	else
		numeroposizioni=numeroposizioni*2
	endif
endif
//calcolo dell'equity
if sulmercato[1]=1 then
	resa=(uscita-entrata)*numeroposizioni[1]
	equity=tempequity+resa
elsif sulmercato[1]=-1 then
	resa=(entrata-uscita)*numeroposizioni[1]
	equity=tempequity+resa
endif



//entrate
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 AND TIME > 080000 AND TIME < 161500 and sulmercato=0 then
	entrata=close
	sulmercato=1
	tempequity=equity
endif

C3 = (indicator1 CROSSES UNDER indicator2)
IF c3 AND TIME > 080000 AND TIME < 161500 and sulmercato=0 then
	entrata=close
	sulmercato=-1
	tempequity=equity
endif


//conteggio equitygiornaliero
if sulmercato=1 or sulmercato=-1 then
	uscita=close
endif




if equity>mequity then
	mequity=equity
endif
dd=mequity-equity
if dd>mdd then
	mdd=dd
endif

mediaequity=average[30](equity)
return equity, mediaequity, dd, mdd, numeroposizioni, sulmercato




shot



DAX Full1210 Future.png



:mmmm:

quale dei due è coretto??? :-?
 

tetsuo

Guest
Gran bel lavoro e grazie anche per il codice in probacktest.


:bow:

grazie a te per avermi fornito lo spunto :)





ah che sbadato oggi è San Martino paesà ...........tanti auguri :ciapet: :lol:






cazzeggio moment quindi mo' vi sorbite un po' di musica .....


[ame=http://www.youtube.com/watch?v=FRWpUvNTYNg&playnext=1&list=PL19A95B54CAC54938&index=6]YouTube - Dabrye - Smoking the Edge[/ame]
 

gransasso

Forumer attivo
Eccomi di nuovo a scocciare, chi mi da una mano (tetsuooooo :D) a capire perche non funziona questa variante di martingala
Codice:
REM Acquisto
indicator1 = ExponentialAverage[10](close)
indicator2 = ExponentialAverage[20](close)
c1 = (indicator1 CROSSES OVER indicator2)
IF c1 AND TIME > 080000 AND TIME < 161500 THEN
 IF PreviousTrade(1) < 0 AND PreviousTrade(2) < 0 THEN
  OrderSize = OrderSize + OrderSize[1]
 ELSIF PreviousTrade(1) >= 0 THEN
  OrderSize = 1
 ENDIF
 BUY ordersize SHARES AT MARKET ThisBarOnClose
ENDIF
REM Vendita
c2 = (indicator1 CROSSES UNDER indicator2)
IF c2 OR TIME > 161500  THEN
 SELL AT MARKET ThisBarOnClose
endif
REM Vendita allo scoperto
C3 = (indicator1 CROSSES UNDER indicator2)
IF c3 AND TIME > 080000 AND TIME < 161500 THEN
 IF PreviousTrade(1) < 0 and PreviousTrade(2) < 0 THEN
  OrderSize = OrderSize + OrderSize[1]
 ELSIF PreviousTrade(1) >= 0 THEN
  OrderSize = 1
 ENDIF
 SELLSHORT ordersize SHARES AT MARKET ThisBarOnClose
ENDIF
c4 = (indicator1 CROSSES OVER indicator2)
IF c4 OR TIME > 161500 THEN
 EXITSHORT AT MARKET ThisBarOnClose
ENDIF
dovrebbe acquistare la somma delle ultime due size in caso di due o più perdite consecutive; rimette la size a 1 in caso di vincita
esempio:
operazione 1 = (size 1) perdita
operazione 2 = (size 1) perdita
operazione 3 = (size 2) perdita
operazione 4 = (size 3) perdita
operazione 5 = (size 5) vincita
operazione 6 = (size 1) ......
.........
Grazie!
 

Rinos

Nuovo forumer
Traduzione

Buongiorno a tutti, sono Rino,un autentico sconosciuto.Vorrei tradurre
questa formula metastoch (Ref(Peak(1,C,0.01),-1)) per utilizzarla con il programma prorealtime

Grazie a chi vorra' aiutarmi
 

Rinos

Nuovo forumer
Ciao.
L'indicatore segnala ogni chiusura massima (Peak) rispetto alla precedente.... Peak(1,C,0.01).... con una variazione minima dello 0.01%,
o comunque impostando il valore % preferito.Se ho un max (es. 10),poi un minimo(8),poi un altro max(9) , solo se(9)è superiore a(8)di almeno lo 0.01%,
la variazione viene segnalata.Usa il principio dello ZIGZAG.
Quando lo segnala?
Lo segnala 1 periodo dopo da quando si è verificato
Ref(....(.......),-1). Se scrivo Ref(....(.......),-2) lo segnala 2
periodi dopo.

Di seguito la formula completa" Ref(Peak(1,C,0.01),-1)".
Grazie
 

gransasso

Forumer attivo
Ciao.
L'indicatore segnala ogni chiusura massima (Peak) rispetto alla precedente.... Peak(1,C,0.01).... con una variazione minima dello 0.01%,
o comunque impostando il valore % preferito.Se ho un max (es. 10),poi un minimo(8),poi un altro max(9) , solo se(9)è superiore a(8)di almeno lo 0.01%,
la variazione viene segnalata.Usa il principio dello ZIGZAG.
Quando lo segnala?
Lo segnala 1 periodo dopo da quando si è verificato
Ref(....(.......),-1). Se scrivo Ref(....(.......),-2) lo segnala 2
periodi dopo.

Di seguito la formula completa" Ref(Peak(1,C,0.01),-1)".
Grazie
:-?:-?:-?:-?
 

tetsuo

Guest
dovrebbe acquistare la somma delle ultime due size in caso di due o più perdite consecutive; rimette la size a 1 in caso di vincita
esempio:
operazione 1 = (size 1) perdita
operazione 2 = (size 1) perdita
operazione 3 = (size 2) perdita
operazione 4 = (size 3) perdita
operazione 5 = (size 5) vincita
operazione 6 = (size 1) ......
.........
Grazie!

la FIBOmartingala ..... :D l'affosso aureo :lol:

Codice:
......
 IF PreviousTrade(1) < 0 AND PreviousTrade(2) < 0 THEN
  [COLOR="DarkGreen"]OrderSize = OrderSize + OrderSize[1][/COLOR]
 ELSIF PreviousTrade(1) >= 0 THEN
  OrderSize = 1
 ENDIF
 ......

OrderSize[1] non riporta la size del trade predente ma il valore della variabile OrderSize alla barra precedente.

nel codice devi inserire tre variabili OrderSize che portano avanti insieme la size dell'ultimo e del penultimo trade e di quello attuale .:up:

tipo:

Codice:
IF PreviousTrade(1) < 0 AND PreviousTrade(2) < 0 THEN
		OrderSize = OrderSize1 + OrderSize2
		ordersize2=ordersize1
		ordersize1=ordersize
		
	ELSE
		OrderSize = 1
		ordersize1=1
		ordersize2=1
	ENDIF



visto che ti interessa anche metastock ti dono questo bel file help da consultare ogni volta che si vuol capire che vuol dire qualche strana funzione meta :)


devi rinominare il file eliminando l'estensione .txt ;)


Vedi l'allegato mswin (1).rar.txt

Ciao
 

Users who are viewing this thread

Alto