-
17-11-13, 17:59 #1
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Vettoriale di EasyScript, altra giornata di frustrazione !!!
Salve a tutti,
oggi approfittando di un po' di tempo libero volevo scrivere uno script che unisse adx e supertrend.
L'idea era probabilmente una boiata pazzesca, ma volevo fare una prova.
- Calcolo S = Supertrend (n periodi)
- Calcolo A = ADX (x periodi)
- Calcolo T il mio trailing stop nel seguente modo:
- se Adx > valore soglia(es.25) allora T = Ref(S,1), altrimenti T rimane inalterato.
- Se crossover (close,T) T diventa il valore minimo tra T e S
- Se crossover (T, close) T diventa il valore massimo tra T e S
Come anticipavo probabilmente una gran boiata d'idea, ma converrete con me di una semplicità estrema.
Orbene, in un intero pomeriggio con beeTrader ed il suo "portentoso" vettoriale, niente.
Mi sono dovuto arrendere, perché o non sono capace io, oppure EasyScript non permette di realizzarlo.
E la cosa la trovo francamente inaccettabile, viste le premesse da cui è partito Tiziano !!!
Spengo tutto e vado a fare un giro con la coda tra le gambe.
Saluti
Massimo
-
17-11-13, 21:25 #2
- Data Registrazione
- Dec 2011
- Messaggi
- 280
Ciao,
io ti ho scritto in beeTrader esattamente quanto tu hai richiesto, ma da quanto leggo non hai proprio le idee chiare.
"T" scrivi che è un trailing quindi bisogna assegnargli un valore in € e poi invece indichi che "T" deve essere uguale a un Ref del supertrend e quindi un valore non in €...quindi quale dei 2 ti va bene???
Io per "finalizzare" lo script ti ho assegnato T ad un trailing e poi nelle condizioni ho indicato quanto da te indicato (anche se non ha senso).
Comunque ora la base e penso tu sia in grado di personalizzartela a tuo piacimento.
#Calcolo S = Supertrend (n periodi) SET Super = SuperTrend(9, 5) #Calcolo A = ADX (x periodi) SET AX = ADX(9) # Imposto la condizione per il Ref 1 SET TREF = Ref(Super,1) # Imposto la variabile T per il trailing SET T = TRAILING_STOP = 500 # se Adx > valore soglia(es.25) allora T = Ref(S,1), altrimenti T rimane inalterato. IF((AX > 25), TREF, T) SET Cond1 = CROSSOVER(T, CLOSE) SET Cond2 = CROSSOVER(CLOSE, T) # Se crossover (close,T) T diventa il valore minimo tra T e S SET MinCondPrice = MINOF(T, Super) IF(Cond1, MinCondPrice, T) #Se crossover (T, close) T diventa il valore massimo tra T e S SET MaxCondPrice = MAXOF(T, Super) IF(Cond1, MaxCondPrice, T)
-
17-11-13, 23:38 #3
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Caro TomEFord,
scusa la franchezza, ma la tua è proprio una risposta ad minchiam.
Leggi il mio post, non capendo minimamente la richiesta.
Si tratta di un sistema stop&reverse con un trailing stop basato su supertrend
che fa scattare il passaggio dalla posizione long alla short e viceversa,
non di un trailing stop in denaro.
Per quanto riguarda il tuo codice vorrei farti notare, senza la superbia che hai
mostrato tu nella tua risposta, che quegli IF messi così sono senza senso !!!
Purtroppo no, il tuo codice non riesce a fare quanto richiesto.
Scusa se sono stato scortese, ma il tono saccente della tua risposta mi ha proprio irritato.
Saluti
Massimo
-
18-11-13, 11:21 #4
Caro Massimo,
permettimi, come prima cosa, un commento non tecnico:
in ogni tuo post c'è una sorta di sfida e una diffidenza emergente verso ciò che abbiamo promesso e verso il nostro prodotto. Ti abbiamo scritto perchè abbiamo scelto la programmazioe vettoriale e il perchè a tutte le due domande.
Ne devi prendere atto e non continuare a criticare, quelle è la strada scelta e quella rimane.
La diffidenza nelle mie promesse è fuori luogo e non è pertinente, io ho una storia di anni di cose fatte concretamente, di software che lasci ad utilizzo gratuito, di grande disponibilità verso tutti coloro che si rivolgono a me o alla mia organizzazione. Lo hai verificato anche tu. Ora però stai andando un pelino oltre e devi fare un passetto indietro:
ho fatto beeTrader non ho dichiarato la terza guerra mondiale!
Poi c'è il tuo atteggiamneto di insofferenza verso gli altri utenti, Tom E Ford ti ha scritto per aiutarti e tu lo offendi!
Questo per me è intollerabile.
Ora la parte tecnica:
parli a sproposito di Trailing Stop.
In finanza e nei trading system ill termine identifica una certa funzione che non può essere quella che vuoi tu, mi spiace ma ne devi prendere atto.
Quello che tu vuoi scrivere è un target, così si chiama e così lo devi chiamare.
Nello specifico caso che citi come impossibile da costruire, non tieni conto che è impossibile perchè tu stai scrivendo una condizione impossibile.
Il segnale di uscita, che tu chiami impropriamente Trailing Stop, non potrà mai essere verificato, in quanto, per costruzione dell'indicatore SuperTrend, verrà verificato prima il segnale Buy o Sell piuttosto che la condizione di uscita.
Infatti, quando il supertrend è "verde" (long), il suo valore è sempre crescente o uguale al valore precedente. Quindi, anche usare MINOF o MAXOF del supertrend attuale o della barra precedente non porta ad ottenere un valore numerico diverso dall'utilizzo del supertrend semplice.
Ho aggiunto io una condizione di Buy e di Sell altrimenti il sistema non sarebbe mai stato nemmeno Stp e Reverse ma solo un accrocchio di condizioni irrealizzabili.
Di seguito lo script, realizzato e funzionante, a parte le illogicità di condizioni che non si verificheranno mai nemmeno scritte in latino.
Il nome è Ad Minchiam script.
BUY SCRIPT
INPUTS: @superTrendPeriods(10), @superTrendStrength(5), @adxPeriods(10), @adxThreshold(0.25) SET S = SuperTrend(@superTrendPeriods, @superTrendStrength) #SET A = ADX(@adxPeriods) CLOSE > S
SELL SCRIPT
SET S = SuperTrend(@superTrendPeriods, @superTrendStrength) #SET A = ADX(@adxPeriods) CLOSE < S
EXIT LONG SCRIPT
SET S = SuperTrend(@superTrendPeriods, @superTrendStrength) SET A = ADX(@adxPeriods) SET T1 = CHANGEIF(A > @adxThreshold, REF(S, 1)) SET TMIN = MINOF(T1, S) SET TMAX = MAXOF(T1, S) # Condizione Ad Minchiam SET C1 = CROSSOVER(CLOSE, T1) SET C2 = CROSSOVER(T1, CLOSE) SET T2 = IF(C1, TMIN, T1) SET T2 = IF(C2, TMAX, T2) CLOSE < T2
EXIT SHORT SCRIPT
SET S = SuperTrend(@superTrendPeriods, @superTrendStrength) SET A = ADX(@adxPeriods) SET T1 = CHANGEIF(A > @adxThreshold, REF(S, 1)) SET TMIN = MINOF(T1, S) SET TMAX = MAXOF(T1, S) # Condizione Ad Minchiam SET C1 = CROSSOVER(CLOSE, T1) SET C2 = CROSSOVER(T1, CLOSE) SET T2 = IF(C1, TMIN, T1) SET T2 = IF(C2, TMAX, T2) CLOSE > T2
..se corri dietro a due lepri, non ne prendi nemmeno una.
-
18-11-13, 14:26 #5
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Caro Tiziano,
con TomEFord mi sono già scusato nell'ultima riga del mio post,
motivandogli il perché della mia risposta piccata.
Sono stufo di essere aggredito ogni volta che muovo una critica giustificata a beeTrader
da qualcuno che vuole farsi bello ai tuoi occhi !!!
-
Per quanto riguarda il termine trailing stop, se ti fai un giro su internet vedrai che
spesso nei sistemi di tipo stop&reverse si utilizza questo termine per definire il valore
soglia che fa scattare il reverse della posizione.
Vuoi chiamarlo target, a me va bene lo stesso.
-
Per quanto riguarda il codice "Ad Minchiam", quella è proprietà intellettuale TomEFord-Cagalli !!!
-
Quello di cui io parlavo nel mio post è tutt'altra cosa.
Con Multicharts in pochi minuti mi è stato possibile realizzarlo.
In beeTrader al momento mi risulta non realizzabile, indi la frustrazione di cui parlavo nel mio post.
Era un semplice sfogo ed invito a migliorare beeTrader, nulla di più.
Tiziano, è inutile che stiamo a raccontarcela, al momento il tuo software è carente.
Aspetto con fiducia i nuovi aggiornamenti.
Saluti
Massimo
// Sistema di tipo Stop & Reverse con Trailing Stop costituito // da indicatore Supertrend modificato in base al valore di ADX. // Quando il valore di REF(ADX,1) < 25 il valore del Trailing Stop non cambia. // Quando il valore di REF(ADX,1) > 25 il valore del Trailing Stop = REF(Supertrend,1). // Quando il Trailing Stop viene colpito dai prezzi si effettua il reverse // con aggiornamento del valore di Trailing Stop nel seguente modo: // Se reverse da long a short il Trailing Stop diventa il maggiore tra Trailing e Supertrend // Se reverse da short a long il Trailing Stop diventa il minore tra Trailing e Supertrend // // Inputs: ST_Period(15), ST_AtrMult(2), ST_Strength(5), Adx_Period(15); // var: ST(0), vADX(0), Trailing_Stop(0); // ST = SUPERTREND(ST_Period, ST_AtrMult, ST_Strength); vADX = ADX(Adx_Period); // Viene aggiornato il Trailing Stop in base a ADX If vADX[1]>25 then begin Trailing_Stop=ST[1]; end; // // Qui cominciano i problemi per beeTrader // // Controllo se i prezzi incrociano il Trailing Stop // Nella strategia ci sarebbero le istruzioni di buy-sell per reverse. // Qui nell'indicatore mi limito ad aggiornare il Trailing Stop // // Se Crossover allora reverse long. If Close[1]<Trailing_Stop AND Close>Trailing_Stop then begin // Trailing Stop diventa il minore tra Trailing e Supertrend Trailing_Stop=minlist(Trailing_Stop,ST); end // Se Crossunder allora reverse short. else If Close[1]<Trailing_Stop AND Close>Trailing_Stop then begin // Trailing Stop diventa il maggiore tra Trailing e Supertrend Trailing_Stop=maxlist(Trailing_Stop,ST); end; plot1(ST); plot2(Trailing_Stop); // // Sono meno di dieci linee di codice, eliminati i commenti !!!!! //
// Per completezza allego anche codice funzione SUPERTREND // // Funzione Supertrend inputs: ATRLength(NumericSimple), ATRMult(NumericSimple), Strength(NumericSimple); vars: ATR(0), avg(0), dn(0), up(0), trend(1), flag(0), flagh(0), ST(0), hl(0); hl = Highest(High, ATRLength) - Lowest(Low, ATRLength); ATR = XAverage(hl, ATRLength); avg = (XAverage(high, Strength) + XAverage(low, Strength))/2; up = avg + ATR; dn = avg - ATR; if c > up[1] and c > Highest(High, Strength)[1] then trend = 1 else if c < dn[1] and c < Lowest(Low, Strength)[1] then trend = -1; if trend < 0 and trend[1] > 0 then flag=1 else flag=0; if trend > 0 and trend[1] < 0 then flagh = 1 else flagh = 0; if trend > 0 and dn < dn[1] then dn=dn[1]; if trend < 0 and up > up[1] then up=up[1]; if flag = 1 then up = avg + ATR; if flagh = 1 then dn = avg - ATR; if trend = 1 then ST = dn else ST = up; SUPERTREND = ST;
-
18-11-13, 15:04 #6
- Data Registrazione
- Dec 2011
- Messaggi
- 280
-
18-11-13, 15:34 #7
Mi permetto di dire 2-3 cose:
- - Quando Fiuto Pro è nato anch’esso presentava delle pecche di gioventù, ma grazie allo staff di Playoptions ed agli utenti è stato un continuo lavoro di miglioramento, avendo come risultato quello di essere stabile e funzionale.
Lo utilizzo tutti i giorni con Fiuto Beta e non ho problemi di sorta, e se ci sono c’è sempre il buon Andrea a risolverli velocemente.
Mi permetto di dire che attualmente è il miglior software di opzioni a livello mondiale che io conosca.
- - Penso che beeTrader stia seguendo lo stesso percorso, basta vedere le versioni che sono già uscite per risolvere le pecche di gioventù, grazie alle segnalazioni degli utenti che quelle riscontrate da Playoptions, inoltre vengono inseriti nuovi indicatori/funzioni che utilizzano gli utenti.
- - Ultima cosa il costo di 180 euro (ma quanto lavoro ed esperienza c’è dietro a tutto cio’, desideriamo valorizzarlo ?!).
Questo è il mio parere personale vissuto ed attuale.
-
18-11-13, 16:55 #8
Salve Massimo,
forse non riusciamo a capire cosa vuole ottenere con questo script.
Vuole un segnale oppure un indicatore ?
Se è un segnale, la risposta di Tiziano qui sopra è funzionante, e fa esattamente le stesse cose scritte nel suo codice EasyLanguage.
Se invece vuole solo disegnare un indicatore, allora il codice è ovviamente diverso.
PS: Nel codice EasyLanguage della funzione Supertrend il parametro di input ATRMult non viene utilizzato. Nella prossima release di beeTrader lo abbiamo aggiunto su sua richiesta alla funzione di calcolo di SuperTrend. Ovviamente in beeTrader questa parametro viene utilizzato.
Max Francario
-
18-11-13, 21:19 #9
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Salve Max,
-
per quanto riguarda l'input ATRMult credo basti modificare il codice in:
up = avg + ATR*ATRMult e dn = avg - ATR*ATRMult.
-
per quanto riguarda il codice, se scritto sotto forma di indicatore è più semplice da visualizzare,
ma la sostanza non cambia. Per semplicità ho scritto l'indicatore.
-
Nel signal essendo uno stop & reverse ovviamente avremo solo Buy e Sell, non ExitLong e ExitShort
se non per la condizione di chiusura di fine giornata.
-
E il nostro "trailing target" è T1 per cui è T1 che in caso di crossover deve essere modificato.
Ed è sempre con T1 che deve essere scritta la condizione di Buy o Sell,
altrimenti è logico che le condizioni non si possono realizzare mai, neanche scritte in latino.
-
Qui il problema su cui mi sono bloccato è come aggiornare T1 quando c'è il Crossover, e comunque
continuare poi ad eseguire la verifica di crossover sul T1 aggiornato alle barre successive.
-
Da una lettura del codice proposto non mi sembra centrato questo obiettivo, o sbaglio ?
Se la cosa è fattibile, potreste postare il codice corretto.
Sono qui per imparare !!!
Saluti
Massimo
PS Alla riga 34 del mio codice vanno invertiti i segni maggiore e minore per crossunder.Ultima modifica di maxmax68; 19-11-13 alle 01:18