-
09-10-13, 20:21 #31
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Benissimo, grazie.
Provvedo subito ad aggiornare la beeTrader.
Saluti
Massimo
-
09-10-13, 21:07 #32
-
10-10-13, 14:33 #33
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Con l'implementazione della nuova funzione CHANGEIF adesso è possibile fare molte cose in più!
Ma come si procede invece quando il valore restituito per la barra precedente potrebbe fare parte della CONDITION?
Mi scuso se insisto con i problemi, ma sono situazioni che possono capitare!
-
10-10-13, 16:40 #34
Salve,
mi può fare un esempio di una tale situazione ? Può andare bene sia un esempio di un altro linguaggio di programmazione che anche una descrizione dettagliata del problema da risolvere.
Magari scomponendo il problema si trova una soluzione diversa....
Max Francario
-
11-10-13, 00:12 #35
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Salve Max,
allora ecco un esempio, e per il momento comincio con una spiegazione.
Si voglia costruire una funzione per calcolare un indicatore che io chiamo la linea guida per individuare gli swing secondo le regole di Gann.
Come prima regola (di base, ma non esaustiva purtroppo !!!), se una barra ha il massimo ed il minimo più alti rispetto alla barra precedente, allora l'indicatore assume il valore del massimo di quella barra; viceversa se ha il massimo ed il minimo più bassi rispetto alla barra precedente, allora l'indicatore assume il valore del minimo di quella barra.
In presenza di una o più barre inside, ovvero aventi massimo minore e minimo maggiore alla precedente, l'indicatore mantiene il valore che aveva sulla barra precedente.
Questo indicatore ha un aspetto tipo quello mostrato nella figura che segue,
e lo si usa in questo modo:
- fin quando sale o rimane in orizzontale dopo essere salito si è in presenza di uno swing rialzista (linee verdi)
- fin quando scende o rimane in orizzontale dopo essere sceso si è in presenza di uno swing ribassista (linee rosse)
Fin quì tutto facile, ma di seguito ecco uno dei possibili problemi.
Dopo una barra inside ci sono 2 barre aventi massimi e minimi crescenti ma che non superano mai il livello che l'indicatore aveva prima della barra inside.
Secondo le regole, in questa situazione l'indicatore deve rimanere orizzontale, altrimenti verrebbero individuati prima uno swing ribassista e poi uno rialzista (come nella zona cerchiata in figura) che invece non ci devono essere.
Vale a dire pertanto che non è sufficiente la condizione di massimi e minimi crescenti per assegnare il valore del massimo della barra all'indicatore, ma serve anche che sia stato superato al rialzo il valore che l'indicatore aveva sulla barra precedente. E quindi si rende necessario il confronto come condizione!
Non è possibile aggirare l'ostacolo mediante sistemi del tipo "confrontare il massimo della barra con il massimo a n periodi":
ad esempio, nella figura che segue servirebbe un confronto ad almeno 6 periodi
mentre nella figura che segue già un confronto a 5 periodi sarebbe troppo ampio!
Spero di essere stato comprensibile nella spiegazione!
Se serve posso anche allegare un codice.
-
12-10-13, 01:31 #36
- Data Registrazione
- Dec 2009
- Messaggi
- 813
Per il momento sembra funzionare molto bene il trailing pivot! L'ho appena backtestato ad 1 minuto con una semplice Banda di Bollinger (purtroppo su uno storico di soli 2 giorni ma ahimè finchè non verrà attivato il tool per importare dati storici dobbiamo acontentarci.....) ma guardate un pò come lavora bene! Sia in ingresso che in uscita l'efficienza media è intorno al 70%
Lunedì vedremo se anche il ForwardTest ci darà ragione mentre per ora ringrazio!
Ultima modifica di CIVT; 12-10-13 alle 01:37
-
14-10-13, 12:07 #37
Salve,
l'indicatore sarà realizzabile dalla prossima release 0.8.10.15 di beeTrader, in quanto alcune funzioni di EasyScript saranno modificate in modo da utilizzare qualsiasi espressione dove invece al momento attuale può essere utilizzato esclusivamente un valore numerico.
Questo il codice dell'indicatore:
e questo il risultato:12345678910111213141516171819202122232425# Condizioni high e low
SET
c_high =
HIGH
>
REF
(
HIGH
,
1
)
AND
LOW
>
REF
(
LOW
,
1
)
SET
c_low =
LOW
<
REF
(
LOW
,
1
)
AND
HIGH
<
REF
(
HIGH
,
1
)
# Condizioni di cambiamento
SET
c_change = (c_high
OR
c_low)
SET
c_change_top = (c_change
AND
c_high)
SET
c_change_bottom = (c_change
AND
c_low)
# Stato dell'indicatore (up o down)
SET
stato1 =
IF
(c_change_top,
1
,
0
)
SET
stato2 =
IF
(c_change_bottom, -
1
, stato1)
SET
stato = CHANGEIF(stato2 <>
0
, stato2)
# Calcolo barre per valori high e low
SET
barre1 =
LASTIF
(stato2 <>
0
)
SET
barre =
MINOF
(barre1 +
1
,
100
)
# Calcolo valori high e low dell'indicatore
SET
hh =
HighestHighValue
(barre)
SET
ll =
LowestLowValue
(barre)
# Plot
SET
PLOT1
=
IF
(stato =
1
, hh, ll)
SET
PLOTCOLOR1
=
IF
(stato =
1
,
COLOR_LIGHT_GREEN
,
COLOR_LIGHT_RED
)
Max Francario