Originariamente Scritto da
BMM
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
# 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)
Non vi piace di più? E' molto più semplice!
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:
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:
# 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)
# 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)
Per questa ragione NON c'è rischio di dimenticarsi di andare ad aggiornare eventuali valori di prova tra i vari script.
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:
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)
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 :
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:
SET BigBottom = BollingerBandsBottom(@price, @BandPeriods, @BigDev, @matype)
CROSSOVER(MySignalLine(@price, @SLperiods), BigBottom)
ovviamente per via della semplicità della MySignalLine potreste scrivere direttamente:
CROSSOVER(LR(@price, @SLperiods), BigBottom)
saluti,
Marco Bosco