Discussione: Aiuto per un signal
Visualizzazione Ibrida
-
11-10-16, 12:39 #1
Ti ho fatto l'indicatore così vedi se è quello che desideri. (puoi importare il file allegato o fare copia incolla dal testo)
Se va bene, per trasformarlo in segnale basta che lo copi ed incolli in un segnale e togli dall'ultima riga "SET PLOT! =" e lasci solo "condizioneFinale"
# Calcola condizione sul prezzo minimo SET condizioneLow = (LOW = TODAYLOW()) # Numero di barre trascorse dall'ultimo prezzo minimo di giornata SET barreDaLowGiornata = LASTIF(condizioneLow) # Calcola condizione sul "colore" della barra attuale SET condizioneBarraVerde = (CLOSE > OPEN) # Calcola combinazione delle 2 condizioni precedenti SET combinazione = (condizioneBarraVerde) AND (barreDaLowGiornata >= 0) # Calcola quante volte la combinazione delle condizioni e' avvenuta dall'ultimo low di giornata SET somma = SUM(combinazione, barreDaLowGiornata) # Prende in considerazione solo la prima volta delle precedenti SET condizionePrimaCombinazione = (somma = 1) # Calcola la condizione finale SET condizioneFinale = (condizionePrimaCombinazione AND combinazione) SET PLOT1 = condizioneFinale
..se corri dietro a due lepri, non ne prendi nemmeno una.
-
11-10-16, 15:59 #2
Grazie Tiziano per l'indicatore
Andrebbe sistemata una cosetta
Ho fatto il debug della variabile barreDaLowGiornata
Questo contatore dovrebbe azzerarsi ad ogni prima barra di inizio nuova giornata, però sembra che questo non sempre avvenga andando a falsare il primo ingresso intraday come nel seguente caso:
grazie
ApoUltima modifica di Apocalips; 11-10-16 alle 16:14
....non si desidera ciò che è facile ottenere (Ovidio)....
-
12-10-16, 10:27 #3
-
14-10-16, 16:33 #4
- Data Registrazione
- May 2010
- Messaggi
- 47
ho tocchicciato lo script
Buongiorno, torno a bomba sul TS che mi hai aiutato a fare. Ho notato che potrebbe essere un buon filtro far sì che la barra colorata successiva al minimo/massimo abbia una dimensione minima. Ricordando che sono una capra col codice e faccio davvero fatica a programmare, sono qui a chiedere: questa piccola correzione è corretta se programmata così?
# Calcola condizione sul prezzo minimo
SET condizioneLow = (LOW = TODAYLOW())
#Stabilisco la "dimensione" minima che deve avere la barra (E' giusto? Non ho trovato un altro modo di segnalare la dimensione minima )
SET tickmaggiorediuno = (HACLOSE - HAOPEN) > 16
# Numero di barre trascorse dall'ultimo prezzo minimo di giornata
SET barreDaLowGiornata = LASTIF(condizioneLow)
# Calcola condizione sul "colore" della barra attuale
SET condizioneBarraVerde = (HACLOSE > HAOPEN)
# Stabilisco che la barra verde abbia una dimensione minima
SET condizioneBarraVerdeMinima = (condizioneBarraVerde = tickmaggiorediuno)
# Calcola combinazione delle 2 condizioni precedenti
SET combinazione = (condizioneBarraVerdeMinima) AND (barreDaLowGiornata >= 0)
# Calcola quante volte la combinazione delle condizioni e' avvenuta dall'ultimo low di giornata
SET somma = SUM(combinazione, barreDaLowGiornata)
# Prende in considerazione solo la prima volta delle precedenti
SET condizionePrimaCombinazione = (somma = 1)
# Calcola la condizione finale
SET condizioneFinale = (condizionePrimaCombinazione AND combinazione)
condizioneFinale
PS: non trovo il tastino per mettere il codice. Non esiste proprio la barra della formattazione...
-
14-10-16, 16:53 #5
Salve,
Credo abbia complicato il codice più di quanto necessario.
Il codice dovrebbe diventare:
# Calcola condizione sul prezzo minimo SET condizioneLow = (LOW = TODAYLOW()) #Stabilisco la "dimensione" minima che deve avere la barra SET tickmaggiorediuno = (CLOSE - OPEN) > 16 # Numero di barre trascorse dall'ultimo prezzo minimo di giornata SET barreDaLowGiornata = LASTIF(condizioneLow) # Calcola combinazione delle 2 condizioni precedenti SET combinazione = (tickmaggiorediuno) AND (barreDaLowGiornata >= 0) # Calcola quante volte la combinazione delle condizioni e' avvenuta dall'ultimo low di giornata SET somma = SUM(combinazione, barreDaLowGiornata) # Prende in considerazione solo la prima volta delle precedenti SET condizionePrimaCombinazione = (somma = 1) # Calcola la condizione finale SET condizioneFinale = (condizionePrimaCombinazione AND combinazione) condizioneFinale
Nota: HACLOSE ed HAOPEN rappresentano i valori Heikin-Ashi per i prezzi Close ed Open rispettivamente. Sono questi i valori che intende utilizzare ? Nell'esempio sopra li ho sostituiti con Close ed Open normali.
Max FrancarioUltima modifica di Francario Massimiliano; 14-10-16 alle 16:57
-
14-10-16, 17:56 #6
- Data Registrazione
- May 2010
- Messaggi
- 47
-
11-10-16, 17:23 #7
- Data Registrazione
- May 2010
- Messaggi
- 47
-
11-10-16, 22:15 #8
ATTENZIONE !!!!!!!!
Non usare lo script per il backtest in quanto la funzioni di prezzo TODAYLOW e TODAYHIGH sono indipendenti dal timeframe e restituiscono pertanto nel backtest sempre il valore max/min di giornata calcolato a posteriori. Entreresti sempre sui max e i min di giornata con equity mostruose.
per il front test invece lo script va bene in quanto l'aggiornamento del TODAYLOW e TODAYHIGH avviene barra dopo barra.
ApoUltima modifica di Apocalips; 11-10-16 alle 22:18
....non si desidera ciò che è facile ottenere (Ovidio)....
-
24-10-16, 16:19 #9
- Data Registrazione
- May 2010
- Messaggi
- 47
Buongiorno, ho trovato che potrebbe funzionare meglio se il LOW fosse contemporaneo alla barra verde. E anche in questo caso (strano ma vero XD) non mi raccapezzo col codice. Perchè mi serve contare ogni volta un nuovo LOW che sia verde sulla barra stessa e non sulla successiva (o meglio, ANCHE sulla successiva).
Posso chiedere ancora un aiuto?
E poi non capisco come mai il mio tentativo di usare questo tuo codice abbia risultati strani : con trailing stop attivato spara 250 ordini su 1200 barre orarie e senza, solo controllato con lo stop fa solo 17 ordini alle prime barre caricate e stop. Dopo luglio non va più avanti e non capisco proprio il perchè.
# Calcola condizione sul prezzo minimo
SET condizioneLow = (LOW = TODAYLOW())
# Numero di barre trascorse dall'ultimo prezzo minimo di giornata
SET barreDaLowGiornata = LASTIF(condizioneLow)
# Calcola condizione sul "colore" della barra attuale
SET condizioneBarraVerde = (HACLOSE > HAOPEN)
# Calcola combinazione delle 2 condizioni precedenti
SET combinazioneVerde = (condizioneBarraVerde) AND (barreDaLowGiornata >= 0)
# Calcola quante volte la combinazione delle condizioni e' avvenuta dall'ultimo low di giornata
#SET somma = SUM(combinazioneVerde, barreDaLowGiornata)
# Prende in considerazione solo la prima volta delle precedenti
#SET condizionePrimaCombinazione = (somma = 1)
# Calcola la condizione finale
SET condizioneFinaleVerde = combinazioneVerde
condizioneFinaleVerde
-
24-10-16, 23:23 #10
Salve,
Le modifiche da apportare al codice in questo caso sono minime.
La riga infatti contempla già adesso il fatto che il Low di giornata corrisponda alla barra verde. L'unica riga da modificare è pertanto la 10, dove vengono contate le occorrenze. Se il Low di giornata corrisponde alla barra attuale, barreDaLowGiornata vale zero. Se barreDaLowGiornata vale zero, allora la somma eseguita alla riga 10 su zero periodi vale sempre e comunque zero. Pertanto bisogna modificare il numero di periodi utilizzati nella somma, includendo anche questa condizione, modificando quindi il codice in questo modo:
# Calcola condizione sul prezzo minimo SET condizioneLow = (LOW = TODAYLOW()) # Numero di barre trascorse dall'ultimo prezzo minimo di giornata SET barreDaLowGiornata = LASTIF(condizioneLow) # Calcola condizione sul "colore" della barra attuale SET condizioneBarraVerde = (CLOSE > OPEN) # Calcola combinazione delle 2 condizioni precedenti SET combinazione = (condizioneBarraVerde) AND (barreDaLowGiornata >= 0) # Calcola quante volte la combinazione delle condizioni e' avvenuta dall'ultimo low di giornata SET somma = SUM(combinazione, barreDaLowGiornata + 1) # Prende in considerazione solo la prima volta delle precedenti SET condizionePrimaCombinazione = (somma = 1) # Calcola la condizione finale SET condizioneFinale = (condizionePrimaCombinazione AND combinazione) SET PLOT1 = condizioneFinale
La modifica è presente sulla riga 10.
Con l'uscita Trailing Stop è abbastanza normale ottenere nei backtest un numero molto più elevato del normale di trades: una volta raggiunto il valore di prezzo corrispondente al Trigger del Trailing Stop, da quel punto in avanti qualsiasi ritracciamento potrebbe portare ad eseguire l'uscita dal trade corrente, riabilitando quindi la valutazione del codice di Buy / Sell. Se nel trading system è presente solo lo Stop Loss, senza uscite Trailing Stop e Take Profit, è possibile che un trade rimanga aperto molto a lungo. In particolare, se non c'è uno script di entrata di segno opposto (Sell), il trade potrebbe rimanere aperto all'infinito, finché non tornerà in perdita.
Max Francario