Divergenze tra Strategy in Real e Backtest su TS
Collapse
X
-
-
I risultati sono completamente e stranamente diversi...
La stessa Strategia su Beep dava dopo l\' ottimizzazione un guadagno netto e una Equity accettabile.... (Ovviamente essendo solo due medie mobili che si intersecano non si puo\' pretendere molto), ma il risultato era soddisfacente..
In Visual Trader invece lo stesso incrocio, con le stesse modalita\' ha dato dei risultati quasi disastrosi...
Quindi i risultati sono completamente diversi anche se gli Incroci graficamente sono identici...
Ricordo per onore di cronaca che Visual Trader ha parecchi anni dietro le spalle e decine di Patch, all\' inizio era anche lui impreciso, poi piano piano sta\' diventando molto affidabile...
Per Beep dalle mie prove fatte c\'e da lavorarci ancora e patcharlo per bene... i sitstemi prima di metterli in Real io li spremo parecchio..
Attendo fiducioso.... e spero che queste mie valutazioni di prove reali, serva ai programmatori di Playoptions di capire i problemi di questo nuovo programma..Last edited by Thalos; 12-10-13, 00:17.--- Trend my Friend ---Comment
-
Thalos, rifletti un attimoLe prove che sto\' testando questa settimana sono sul Bobao con Time Frame a 15 Minuti e senza il
La cosa strana e\' che ho portato un TS semplice semplice con due Medie mobili su Visual Trader e lo stesso lo Messo su Beep, uguale uguale, facendoli girare per tutto il giorno in contemporanea...
Risultato e\' che Visual Trader fa in Real esattamente quello che fa in Test, mentre Beep non c\'e\' una sola corrispondenza, cio\' mi sembra alquanto strano, e a mio avviso merita un\' attenta riflessione..
Se usi il REF traslando tutto di una barra avrai gli stessi risultati che vedi nel backtest perchè tu forzi il trading system ad entrare all\'open della barra corrente che equivale circa alla chiusura della barra precedente sulla quale viene verificata la condizione
Il passaggio cruciale che ti sta sfuggendo è che la verifica con il back test non la devi fare sullo stesso sistema che hai usato per il front test perchè altrimenti continuerai a vedere sempre 2 cose diverse.
In sintesi il paragone lo devi fare in questo modo:
per il back test ------> utilizzi il TS originale
per il front test-------> utilizzi il TS modificato con il REF
a questo punto confronti i risultati e avrai gli stessi livelli di ingresso e uscita salvo piccoli gap del cambio barra.
ApoLast edited by Apocalips; 12-10-13, 00:38.....non si desidera ciò che è facile ottenere (Ovidio)....
Comment
-
Quindi Apo, per il seguente script dunque il codice è:
per il backtest (evidenzio inverde sottolineato le 4 righe che sono differenti tra lo script per il backtets e il real time, cioè quelle dove devo applicare il REF)
Buy scripts
# Definiamo le variabili
INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Buy
CROSSOVER(SignalLine, BigBottom)
Sell Scripts
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Sell
CROSSOVER(BigTop,SignalLine)
Exit long script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitLong
CROSSOVER(SmallBottom,SignalLine)
Exit short script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitShort
CROSSOVER(SmallTop,SignalLine)
Per la strategia in real time, aggiungo il REF sostituendo alla riga: CROSSOVER(SmallTop,SignalLine),
la riga seguente: CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1)), ovvero (in tutto sono 4 sostituzioni che evidenzio perché le riporto in verde sottolineato):
Buy scripts
# Definiamo le variabili
INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Buy
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
Sell Scripts
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Sell
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
Exit long script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitLong
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
Exit short script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitShort
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
E I DUE SCRIPTS DEVONO ESSERE APPLICATI APPUNTO SEPARATAMENTE: IL PRIMO LO USO SOLO PER IL BACKTEST MENTRE IL SECONDO LO USO SOLO PER IL REAL TIME.
Ok Apo , attendo conferme, se naturalmente ti è possibile.
Intanto grazie per i tuoi suggerimenti dato che stò provando la stessa frustrazione di Thalos dovuto alla differenza tra il backtest e il real time.Last edited by TFiutoT384; 12-10-13, 01:17.Comment
-
non trovate scomodo dover dichiarare le stesse variabili per 4 volte in ogni script come si usava nel vecchio Metastock?
oltre a doverle scrivere 4 volte bisogna poi ricordarsi di replicare per 4 anche eventuali modifiche sui 4 script, così giusto per dire
Comment
-
L\'utilizzo di ref va bene ma non vanno bene gli argomenti del CROSSOVER in cui hai confuso i segnali del Bobao.Quindi Apo, per il seguente script dunque il codice è:
per il backtest (evidenzio inverde sottolineato le 4 righe che sono differenti tra lo script per il backtets e il real time, cioè quelle dove devo applicare il REF)
Buy scripts
# Definiamo le variabili
INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Buy
CROSSOVER(SignalLine, BigBottom)
Sell Scripts
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Sell
CROSSOVER(BigTop,SignalLine)
Exit long script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitLong
CROSSOVER(SmallBottom,SignalLine)
Exit short script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitShort
CROSSOVER(SmallTop,SignalLine)
Per la strategia in real time, aggiungo il REF sostituendo alla riga: CROSSOVER(SmallTop,SignalLine),
la riga seguente: CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1)), ovvero (in tutto sono 4 sostituzioni che evidenzio perché le riporto in verde sottolineato):
Buy scripts
# Definiamo le variabili
INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Buy
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
Sell Scripts
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo Sell
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
Exit long script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitLong
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
Exit short script
# Definiamo le variabili
SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype)
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype)
SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype)
SET SignalLine = LR(@price, @SLperiods)
# Primo ExitShort
CROSSOVER(REF(SignalLine, 1), REF(BigBottom, 1))
E I DUE SCRIPTS DEVONO ESSERE APPLICATI APPUNTO SEPARATAMENTE: IL PRIMO LO USO SOLO PER IL BACKTEST MENTRE IL SECONDO LO USO SOLO PER IL REAL TIME.
Ok Apo , attendo conferme, se naturalmente ti è possibile.
Intanto grazie per i tuoi suggerimenti dato che stò provando la stessa frustrazione di Thalos dovuto alla differenza tra il backtest e il real time.
Se Tiziano mi autorizza pubblico il codice del Bobao completo ovvero quello che prevede tutte le regole di entrata e di uscita sulle varie bande.
ciao....non si desidera ciò che è facile ottenere (Ovidio)....
Comment
-
Grazie Apo e sicuramente il corretto listato del BOBAO servirà più avanti perché credo che funzioni bene se ben ottimizzato ma per ora mi fermo: usare due script diversisui vari listati a seconda che si operi in backtest o in real time ha creato confusione.
Qui servirebbe davverò un video di spiegazione come quelli fatti per Fiuto pro.
Inoltre non posso importare uno storico, per cui un TS a 5 o 15 minuti testato su pochi giorni non mi da alcun TS realmente applicabile rischiando di lavorare a dei TS che poi su storici di maggiore durata rischiano di saltare e attualmente non vedo una data di rilascio di questa funzione per cui potrebbero passare mesi prima di operare su storici affidabili. Quindi mi metto in stand-by e attendo di vedere quando almeno ci sarà lo storico importabile.
A proposito, complimenti per il tuo TS supertrend+ema: funziona discretamente anche su altri sottostanti anche se l\'ho usato solo con lo sop loss senza trailing stop o percent (sempre a 5 minuti e con solo due giorni di storico per cui la prudenza è d\'obbligo). Penso che in reale dovrò utilizzare anche ref per replicare il backtest.Last edited by TFiutoT384; 12-10-13, 13:27.Comment
-
Certo che sì!L\'utilizzo di ref va bene ma non vanno bene gli argomenti del CROSSOVER in cui hai confuso i segnali del Bobao.
Se Tiziano mi autorizza pubblico il codice del Bobao completo ovvero quello che prevede tutte le regole di entrata e di uscita sulle varie bande.
ciao
Grazie..se corri dietro a due lepri, non ne prendi nemmeno una.Comment
-
Tu che lo sai, fagli un esempio così ci diamo una mano.
Tu pensi che tutti ti abbiano capito ma credimi che non è così, meglio se hai voglia di fare un esempio.
Grazie sai,..se corri dietro a due lepri, non ne prendi nemmeno una.Comment
-
SECONDO ME, scrivere 4 script separati è solo apparentemente più semplice ma in realtà complica parecchio la scrittura di codici poco più che banali perchè dichiarare 4 volte le variabili è una complicazione pazzesca perchè, e sono pronto a scommetterci, prima o poi tutti si incarteranno facendo modifiche su uno script dimenticandosi di trasferirle negli altri tre.
Prendendo ad esempio il codice di prima, ove in ognuno si deve dichiarare le stesse bande, io avrei preferito scrivere un unico script definendo le condizioni di buy, sell ecc come semplice variabili, ovviamente vettoriali come il resto
Non vi piace di più? E\' molto più semplice!Codice:# Definiamo le variabili INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7) SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) Buy = CROSSOVER(SignalLine, BigBottom) Sell = CROSSOVER(BigTop,SignalLine) ExitLong = CROSSOVER(SmallBottom,SignalLine) ExitShort = CROSSOVER(SmallTop,SignalLine)
Tra l\'altro sta tutto in una pagina e con un solo colpo d\'occhio si vede tutto
Last edited by BMM; 12-10-13, 21:26.Comment
-
Mi associo! Anche perchè cosi sarebbe possibile gestire il numero di contratti usati dalle funzioni buy e sell e attuare tecniche di pyramiding dato che ora se non sbaglio non è possibile.SECONDO ME, scrivere 4 script separati è solo apparentemente più semplice ma in realtà complica parecchio la scrittura di codici poco più che banali perchè dichiarare 4 volte le variabili è una complicazione pazzesca perchè, e sono pronto a scommetterci, prima o poi tutti si incarteranno facendo modifiche su uno script dimenticandosi di trasferirle negli altri tre.
Prendendo ad esempio il codice di prima, ove in ognuno si deve dichiarare le stesse bande, [B]io avrei preferito scrivere un unico script definendo le condizioni di buy, sell ecc[/B] come semplice variabili, ovviamente vettoriali come il resto
Non vi piace di più? E\' molto più semplice!Codice:# Definiamo le variabili INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7) SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) Buy = CROSSOVER(SignalLine, BigBottom) Sell = CROSSOVER(BigTop,SignalLine) ExitLong = CROSSOVER(SmallBottom,SignalLine) ExitShort = CROSSOVER(SmallTop,SignalLine)
Tra l\'altro sta tutto in una pagina e con un solo colpo d\'occhio si vede tutto
"Amat Victoria Curam"
"Il Successo di un uomo stà nella sua perseveranza" (Bruce Lee)Comment
-
Dico la mia,
Io che non sono programmatore ragiono meglio a blocchi per cui preferisco la versione attuale in cui vi sono sezioni separate in cui posso concentrarmi meglio sullo script specifico per quel blocco di istruzioni
Scrivere tutto in una pagina potrebbe anche andar bene se il TS è formato da poche righe ma quando si tratta di trading System con parecchie righe di codice mettere tutto in un calderone si rischia di perdersi e di far confusione ed anche l\'immediatezza della ricerca in caso di modifiche ne soffrirebbe.
ApoLast edited by Apocalips; 12-10-13, 22:36.....non si desidera ciò che è facile ottenere (Ovidio)....
Comment
-
Sono abituato a programmare con Visual Trader con il codice scritto su un\' unica pagina, dove il funzionamento e\' uguale sia in Real che in Test con un unico Script e risulta l\' ideale, non si fa il minimo errore specialmente in programmi lunghi...
Il programma funziona o non funziona punto.. non ci sono fraintendimenti di trascrizioni errate..
Fare più tipi di versione sullo stesso programma a mio avviso genera molta confusione e molte piu\' probabilita\' di fare errori perché non si capisce piu\' dove sta\' l\'errore.. se nel codice o nella trascrizione dello stesso...
Ovviamente e\' solo una constatazione, ma vedo che viene largamente condivisa...--- Trend my Friend ---Comment
-
SECONDO ME, scrivere 4 script separati è solo apparentemente più semplice ma in realtà complica parecchio la scrittura di codici poco più che banali perchè dichiarare 4 volte le variabili è una complicazione pazzesca perchè, e sono pronto a scommetterci, prima o poi tutti si incarteranno facendo modifiche su uno script dimenticandosi di trasferirle negli altri tre.
Prendendo ad esempio il codice di prima, ove in ognuno si deve dichiarare le stesse bande, io avrei preferito scrivere un unico script definendo le condizioni di buy, sell ecc come semplice variabili, ovviamente vettoriali come il resto
Non vi piace di più? E\' molto più semplice!Codice:# Definiamo le variabili INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7) SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) Buy = CROSSOVER(SignalLine, BigBottom) Sell = CROSSOVER(BigTop,SignalLine) ExitLong = CROSSOVER(SmallBottom,SignalLine) ExitShort = CROSSOVER(SmallTop,SignalLine)
Tra l\'altro sta tutto in una pagina e con un solo colpo d\'occhio si vede tutto
Ciao BMM,
scusate se mi intrometto, potrei sbagliarmi ma forse c\'è stato un fraintendimento?!
Tiziano credo che volesse dire proprio il contrario cioè che con EasyScript NON è necessario dichiarare 4 volte le variabili...ma UNA SOLO VOLTA.
E per questa ragione appunto è una SEMPLIFICAZIONE.
Per avere evidenza di questo potete prendere appunto come esempio il beeBobao, aprendolo nell\'editor..
Se fate caso la dichiarazione delle variabili è solo sullo Script Buy con questa riga:
Codice:INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7)
Se andate ad editare il codice noterete infatti che nello script BUY è presente questo codice:
Codice:# Definiamo le variabili INPUTS: @price(CLOSE), @BandPeriods(20, 10, 30, 1), @BigDev(1.6, 1, 3, 0.1), @SmalDev(0.83, 0.3, 0.9, 0.03), @matype(SIMPLE), @SLperiods(7) SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) # Primo Buy CROSSOVER(SignalLine, BigBottom)
mentre nello script sell è presente questo: (in cui le variabili (INPUTS) NON sono ridefinite in quanto sono sufficienti quelle definite nello script BUY)
Per questa ragione NON c\'è rischio di dimenticarsi di andare ad aggiornare eventuali valori di prova tra i vari script.Codice:# Definiamo le variabili SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods) # Primo Sell CROSSOVER(BigTop,SignalLine)
Mentre per la questione di tenerli separati è appunto solo per comodità in quando le variabili sono condivise tra gli script. Ed ognuno di noi puoi benissimo immaginare se gli torna più logico che gli script siano uno concatenato uno di seguito all\'altro.
Se invece per variabili intendete questo blocco di istruzioni:
Vorrei farvi notare che sono ripetute in tutti gli script tutte le righe probabilmente a solo scopo didattico, in quanto per esempio nel Buy sono necessarie solo la :Codice:SET BigTop = BollingerBandsTop(@price, @BandPeriods, @BigDev, @matype) SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) SET SmallTop = BollingerBandsTop(@price, @BandPeriods, @SmalDev, @matype) SET SmallBottom = BollingerBandsBottom(@price, @BandPeriods, @SmalDev, @matype) SET SignalLine = LR(@price, @SLperiods)
SignalLine e la BigBottom e le altre righe possono essere proprio cancellate
Rimarrebbe solo la SignalLine da ri-dichiarare... un piccolo prezzo da pagare per una chiarezza migliore.
Ma se proprio non vi basta.. si può evitare anche quella ...
Infatti potete creare una vostra funzione Salvarla con il nove MySignalLine e poi nello script Buy scrivere semplicemente:
ovviamente per via della semplicità della MySignalLine potreste scrivere direttamente:Codice:SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype) CROSSOVER(MySignalLine(@price, @SLperiods), BigBottom)
Codice:CROSSOVER(LR(@price, @SLperiods), BigBottom)
saluti,
Marco BoscoI computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L’insieme dei due costituisce una forza incalcolabile. (Albert Einstein)Comment


Comment