Discussione: Signal con funzione di strategy, dove sbaglio ??
-
31-03-14, 10:22 #1
- Data Registrazione
- Apr 2013
- Messaggi
- 32
Signal con funzione di strategy, dove sbaglio ??
Salve a tutti,
Ho seguito i consigli per creare uno script che fermasse la strategy, ma lo sto provando in parallelo con lo stesso signal senza la mia funzione in real time e non funziona : lo stesso signal senza la funzione parte,.
questo no. Copio lo script della mia function e lo script del segnale. Sareste così gentili da dirmi dove sbaglio ?
# FUNCTION
set MONEY = (TotalNetProfit()> 110 or TotalNetProfit()< -150)
# SIGNAL
plot1 > TD and plot1 > ref(close,@di) and time > 931 and time < 2129 and SD > ref (SD,@stdvdel)
and StandardDeviations(close,21, 2, simple) > @lst and (not MONEY())
-
31-03-14, 16:30 #2
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
-
31-03-14, 17:03 #3
- Data Registrazione
- Apr 2013
- Messaggi
- 32
Ciao Smash,
Il signal che ho trascritto funziona senza problemi senza l' aggiunta della function " MONEY" , che ho trascritto sopra.
Il mio intento, con l'aggiunta di quella function, sarebbe quello di fermare la strategy al raggiungimento dei limiti descritti dalla function "MONEY", negando ulteriori segnali. Gli importi dei totalnetprofit sono gli stessi del take profit e dello stop loss, al verificarsi dei quali, la funzione MONEY diventa true e nega ulteriori segnali, fermando la strategia.
Purtroppo, non funziona....Sto provando assieme le 2 versioni, quella senza "MONEY" fa partire segnali regolarmente, l' altra no, non si muove. Spero tu mi possa aiutare...
-
31-03-14, 18:48 #4
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
-
31-03-14, 19:04 #5
- Data Registrazione
- Apr 2013
- Messaggi
- 32
Grazie Smash,
- sì MONEY.func l'ho fatta io : set MONEY = (TotalNetProfit()> 110 or TotalNetProfit()< -150)
- ecco il signal per entry long:
inputs: @pd(3),@m(8)
set TRAILING_STOP = 130
set TRAILING_PERCENT = 20
set STOP_LOSS = 160
set EMY = ema(close,17)
set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
set beta = 1 - alfa
set delta = close * alfa
set plot1 = (ema(close,17) * beta) + delta
set CHA = ChaikinVolatility(10,10,simple)
set TD = ref (plot1,@pd)
plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and (not Money())
-
31-03-14, 23:25 #6
Salve,
nell'attuale versione beta le funzioni relative allo stato della strategia sono disponibili esclusivamente all'interno degli script di tipo Signal. Per tutti gli altri tipi di script queste funzioni ritornano sempre e comunque il valore zero.
Nella prossima beta sarà possibile utilizzare le funzioni relative allo stato della strategia anche all'interno delle User Defined Function richiamate dagli script di tipo Signal. Il codice postato è formalmente corretto, ma sarà funzionante solo con la prossima beta.
Max Francario
-
01-04-14, 04:04 #7
- Data Registrazione
- Apr 2013
- Messaggi
- 32
Buongiorno Max,
quindi se scrivessi così :
set TRAILING_STOP = 130
set TRAILING_PERCENT = 20
set STOP_LOSS = 160
set EMY = ema(close,17)
set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
set beta = 1 - alfa
set delta = close * alfa
set plot1 = (ema(close,17) * beta) + delta
set CHA = ChaikinVolatility(10,10,simple)
set TD = ref (plot1,@pd)
plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and TotalNetProfit() < 130 and TotalNetProfit() > -160
Dovrebbe funzionare ? Ho già provato, ma non va.
Ultima modifica di alduran; 01-04-14 alle 04:09
-
01-04-14, 10:17 #8
Salve,
è vero, abbiamo individuato un errore nell'engine che interpreta gli script che è già stato corretto.
Per il momento, un modo semplice per aggirare il problema è modificare lo script in questo modo (modifiche in rosso):
INPUTS: @pd(1), @m(14)
set TRAILING_STOP = 130
set TRAILING_PERCENT = 20
set STOP_LOSS = 160
set EMY = ema(close,17)
set alfa = StandardDeviations(EMY, 9, 2, simple)/StandardDeviations(close, 9, 2, simple)
set beta = 1 - alfa
set delta = close * alfa
set plot1 = (ema(close,17) * beta) + delta
set CHA = ChaikinVolatility(10,10,simple)
set TD = ref (plot1,@pd)
set tnp = TotalNetProfit()
plot1 > TD and time > 931 and time < 2129 and DIP(@m)> DIN(@m) and CHA > 0 and tnp < 130 and tnp > -160
In sostanza, basta non utilizzare le funzioni di stato della strategia direttamente nella condizione finale dello script, ma assegnarle ad una variabile ed usare la variabile nella condizione.
Max Francario
-
01-04-14, 21:28 #9
- Data Registrazione
- Apr 2013
- Messaggi
- 32
-
02-04-14, 10:53 #10