Discussione: TS: BreakOut Dinamico in Easy Language
Visualizzazione Ibrida
-
20-10-13, 22:51 #1
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao Thalos,
scusa il ritardo.
-
Si il codice EasyLanguage è corretto e funziona.
-
Ho tentato di tradurlo in EasyScript, ma non ci sono ancora riuscito.
Il problema è purtroppo sempre lo stesso.
-
Ovvero in EasyLanguage si ragiona barra per barra, mentre beeTrader è vettoriale.
-
// Alla prima barra viene caricato in EntryLB un valore iniziale di 20
-
if CurrentBar = 1 Then EntryLB = 20;
-
// Quindi si carica in YestEntryLB il valore di EntryLB precedente, che verrà poi modificato
// nelle istruzioni successive. Ed è questo il grande limite di beeTrader di cui parlavo.
// beeTrader questo attualmente non lo può fare, o almeno io non ho ancora trovato il modo.
-
YestEntryLB = EntryLB;
-
// Quindi viene modificato EntryLB che dovrà essere utilizzato per calcolare
// alla "prossima" barra il valore della linea precedente. Non possibile nel vettoriale !!!
EntryLB = YestEntryLB * (1 + DeltaHistVol);
EntryLB = MaxList(EntryLB, MinLB);
EntryLB = MinList(EntryLB, MaxLB);
// E si calcola ExitLB
ExitLB = EntryLB * 0.5;
-
Continuerò a cercare un modo per aggirare il problema, nei prossimi giorni.
Aspettiamo di vedere anche le novità della release di domani.
Per il momento ti saluto.
Massimo
-
20-10-13, 23:04 #2
- Data Registrazione
- Apr 2010
- Messaggi
- 800
Infatti non ci riesco neanche io...
Se in effetti per ora non si potesse e' un grosso limite, in quanto parecchi TS non basati su indicatori/oscillatori, ma su funzioni di prezzo non possono essere utilizzati...
Aspettiamo domani e vediamo..--- Trend my Friend ---
-
21-10-13, 10:22 #3
Caro Massimo,
apprezzo i tuoi interventi che ci aiutano a riflettere però considera sempre che beeTrader io lo volevo semplice, per tutti gli utenti non programmatori.
La legge del mercato fa si che mi adegui...e velocemente!
Quindi prendo atto delle tue richieste e le metto in lavorazione.
Per favore però, vorrei che ti convincessi, e te lo dimostrerò, che con beeTrader che è vettoriale, si potranno programmare un'infinità di varianti, idee, ecc....
Infatti il limite dipende solo dalle funzioni che ti metteremo a disposizione...Metastock docet!
Perchè avrei dovuto fare un script in maniera imperativa solo perchè lo fanno alcuni altri, i miei tecnici hanno deciso che questa è la strada per prestazioni veloci, uguale possibilità di calcolo e un approccio più semplice da parte dell'utenza.
E i miei tecnici sono bravini.
Entro domani, faremo il listato del segnale qui sopra, dello swing, dei Pivot ...
Grazie e continua con le tue osservazioni, noi cercheremo di soddisfarle, contaci.Ultima modifica di Cagalli Tiziano; 21-10-13 alle 11:03 Motivo: consigliato da BMM :)
..se corri dietro a due lepri, non ne prendi nemmeno una.
-
21-10-13, 10:54 #4
- Data Registrazione
- Jan 2011
- Località
- Genova
- Messaggi
- 1,306
-
21-10-13, 11:01 #5
-
21-10-13, 12:47 #6
Salve,
nella release di oggi verrà aggiunta una funzione specifica per l'iterazione barra per barra:
BARLOOP ( initialValue, offset, operator, operand, minimumValue, maximumValue )
Tutti i parametri, ad eccezione di initialValue, possono essere delle qualsiasi espressioni valide in EasyScript.
- Il parametro initialValue rappresenta il valore iniziale da utilizzare nel calcolo: può essere un qualsiasi valore numerico.
- Il parametro offset specifica il numero di barre trascorse a cui voglio riferirmi, deve essere un valore positivo.
- Il parametro operator identifica l'operatore matematico da utilizzare, tra ADD, SUBSTRCT, MULTIPLY e DIVIDE (vedi funzione LOOP).
- Il parametro operand specifica il secondo operando dell'operazione matematica da eseguire, e può essere una qualsiasi espressione (valore numerico, risultato di un'altra funzione, ecc.).
- I parametri minimumValue e maximumValue rappresentano l'eventuale range minimo e massimo dei valori in uscita dalla funzione. Se non è necessario limitare il valore minimo o massimo del risultato, è possibile utilizzare NAN. NAN è una nuova costante, che reppresenta "Not A Number", cioè un valore non numerico, utile quando quel particolare valore non deve essere utilizzato.
Il seguente esempio di EasyLanguage:
// Alla prima barra viene caricato in EntryLB un valore iniziale di 20
-
if CurrentBar = 1 Then EntryLB = 20;
-
// Quindi si carica in YestEntryLB il valore di EntryLB precedente, che verrà poi modificato
// nelle istruzioni successive. Ed è questo il grande limite di beeTrader di cui parlavo.
// beeTrader questo attualmente non lo può fare, o almeno io non ho ancora trovato il modo.
-
YestEntryLB = EntryLB;
-
// Quindi viene modificato EntryLB che dovrà essere utilizzato per calcolare
// alla "prossima" barra il valore della linea precedente. Non possibile nel vettoriale !!!
EntryLB = YestEntryLB * (1 + DeltaHistVol);
EntryLB = MaxList(EntryLB, MinLB);
EntryLB = MinList(EntryLB, MaxLB);
SET EntryLB = BARLOOP(20, 1, MULTIPLY, (1 + DeltaHistVol), MinLB, MaxLB)
Restituisce un valore numerico calcolato progressivamente, barra per barra. Il calcolo utilizza 20 come valore iniziale. Il numero 1 rappresenta il valore della barra precedente, che viene moltiplicato per (1 + DeltaHistVol), e limitato entro il range MinLB e MaxLB.
Max Francario
-
21-10-13, 16:34 #7
- Data Registrazione
- Apr 2010
- Messaggi
- 800
Ottimo......
Aspettiamo la nuova Release con trepidazione...--- Trend my Friend ---
-
21-10-13, 17:49 #8
-
22-10-13, 00:30 #9
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Salve Max,
sto tentando di usare la nuova funzione per tradurre il codice in EasyScript,
ma mi sono incastrato su un messaggio d'errore.
Ho scritto il seguente codice:
# Volatilità Thalos
INPUTS: @MaxLB(60), @MinLB(20)
SET HistVol= SDV(CLOSE, 30, 1, SIMPLE)
SET YestHistVol = REF(HistVol, 1)
SET DeltaHistVol = (HistVol - YestHistVol)/HistVol
SET EntryLB = BARLOOP (20 , 1, MULTIPLY , (1 + DeltaHistVol),@MinLB, @MaxLB)
....
ma mi segnala Error Division by Zero per la linea
SET DeltaHistVol = (HistVol - YestHistVol)/HistVol
e non riesco a trovare il modo di superare l'intoppo.
Potresti suggerirmi come fare ?
Grazie
Saluti
Massimo
P.S.
Ho provato anche con:
SET DeltaHistVol = IF ( (YestHistVol <> 0) , (HistVol - YestHistVol)/HistVol , 0)
ma segnala sempre errore Division by zeroUltima modifica di maxmax68; 22-10-13 alle 01:20
-
22-10-13, 08:12 #10
Buongiorno maxmax68,
ho notato che Massimiliano ha risposto ad una domanda analoga che si trova a questo post:
http://www.playoptions.it/vbforum/sh...5890#post65890
buona giornata,
MarcoI 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)