Discussione: Multi TimeFrame nello stesso Script. E' possibile ?
Visualizzazione Ibrida
-
12-10-13, 14:50 #1
Buongiorno Massimo,
tutte le opinioni costruttive sono un contributo.
I limiti che vengono percepiti dai nuovi utilizzatori di EasyScript sono probabilmente dovuti allo sforzo della mente di doversi adattare ad un nuovo modo di ragionare, che probabilmente per anni ha ragionato in altro modo.
E sicuramente ci saranno anche delle cose da migliorare e verranno migliorate e come hai potuto apprezzare con mano, la snellezza di Playoptions ti ha permesso di richiedere una necessità e di ottenerla (CHANGEIF) nel giro di 2 giorni
Un'altro limite che la nostra mente costruisce è quello dei blocchi multi-riga dei linguaggi imperativi (linguaggi che vengono eseguiti riga per riga).
Il comando IF e il costrutto IF - THEN - ELSE sono modi diversi di avere la stessa cosa. La funzione IF può essere arbitrariamente complessa.
Pensa ad:
IF (@condition , @TRuePart , @FalsePart)
ed a :
IF Condition Then True Part ELSE FalsePart END IF
Al programmatore interessano solo le istruzioni condition , truepart e false part ,....il resto le parole IF , END IF, THEN , ELSE , le parentesi.... sono SOLO RUMORE ... che vuole il compilatore/parser per accontentare il programmatore.
La tua @condition può essere tranquillamente espansa su quante righe si vuole e complessa a piacere.
Di seguito un esempio:
set A = 3 + 5 + CLOSE set B = A * ABS(OPEN) SET C = B * ARCSIN(ARCTAN(ARCSIN(ARCTAN(B)))) set D = A + B SET E = if ( D , OPEN , CLOSE ) set F = if(E, C, OPEN)
Inoltre è possibile creare quante funzioni si vogliano e richiamarle per esempio dentro lo script.
Immaginiamo di aver creato una funzione chiamata MyFunc composta da centinaia di righe di codice.
E' possibile scrivere il seguente script:
SET A = MyFunct SET B = IF(A, OPEN, CLOSE)
Per quanto riguarda invece la pianificazione dell'aggiunta del linguaggio C Sharp a BeeTrader ( vorrei far notare che la compatibilità sarà verso .Net e quindi non solo su C# , ma su un qualsiasi linguaggio .Net compatibili....ciòè praticamente tutti ...compreso il visual basic ) non è difficile , ma è vero che anch'esso è un modo diverso di ragionare. E' un modo di ragionare imperativo (riga per riga) e quindi probabilmente più vicino al tuo attuale stile.
Con questo upgrade magari sara possibile ragionare anche una barra alla volta e magari NON soppianterà EasyScript ma lo affiancherà!!! Lasciando il trader libero di fare davvero qualsiasi cosa e con ogni cosa.
Detto tutto questo , voglio dirti che non devono spaventarti tutti questi nomi e queste cose!
E posso prometterti che saranno tutte molto semplici.
Come EasyScript !, e tra un mese o due di utilizzo ti sembrerà probabilmente del tutto normale e semplice.
buona giornata,
Marco BoscoUltima modifica di Marco Bosco; 12-10-13 alle 15:11
I 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)
-
13-10-13, 22:45 #2
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao Marco,
ho bisogno del tuo aiuto per apportare una piccola modifica all'indicatore Pivot.
In EasyLanguage ho modificato l'indicatore in modo da essere flessibile tramite input.
Questa nuova versione permette infatti tramite input di scegliere se plottare il pivot high o low.
Inoltre permette anche di scegliere il prezzo da plottare, che può essere una cosa semplice
come (High+Low)/2 oppure una cosa più complessa come Average(Close,10) o Low-3*ATR(14).
Vorrei realizzare lo stesso in EasyScript, credi sia possibile.
Naturalmente la richiesta di aiuto è aperta a chiunque voglia contribuire.
Grazie
Massimo
// Indicatore Pivot Flessibile
// by Massimo Rizzi
//
Inputs:
vPrice((High+Low)/2), // Prezzo usato per calcolare il pivot. Es. Average(close,10), etc ...
vLeft (10), // Numero di barre a sinistra del pivot
vRight (10), // Numero di barre a destra del pivot
vDir (0); // 0 - per Pivot Low, 1 - per Pivot High
Vars:
vPivot(0); // Il nostro indicatore
Once vPivot=low; // Inizializza vPivot
// Condizione per individuare il pivot point Low
// Il vPrice del pivot deve essere <= ai vPrice delle vLeft barre a sinistra
// e minore del vPrice delle vRight barre a destra
Condition1 = vDir=0 and (vPrice[vRight]<=Lowest(vPrice, vLeft)[vRight+1]
and vPrice[vRight]<Lowest(vPrice, vRight));
// Condizione per individuare il pivot point High
// L' vPrice del pivot deve essere >= all'vPrice delle vLeft barre a sinistra
// e maggiore degli vPrice delle vRight barre a destra
Condition2 = vDir=1 AND (vPrice[vRight]>=Highest(vPrice, vLeft)[vRight+1]
and vPrice[vRight]>Highest(vPrice, vRight));
if Condition1 then vPivot=vPrice[vRight]
else if Condition2 then vPivot=vPrice[vRight];
plot1(vPivot);
-
14-10-13, 11:42 #3
Salve Massimo,
l'indicatore sarà realizzabile dalla prossima release 0.8.10.15 di beeTrader, perchè è necessario fare in modo di poter valutare delle espressioni al posto dei valori numerici attuali per il parametro PERIODS della funzione REF.
Ecco comunque il codice da utilizzare:
# Indicatore Pivot Flessibile Inputs: @vPrice(CLOSE), @vLeft(10), @vRight(10), @vDir(0) # Condizione per individuare il pivot point Low # Il vPrice del pivot deve essere <= ai vPrice delle vLeft barre a sinistra # e minore del vPrice delle vRight barre a destra SET Condition1 = (@vDir = 0) AND (REF(@vPrice, @vRight) <= REF(MIN(@vPrice, @vLeft), @vRight + 1) AND REF(@vPrice, @vRight) < MIN(@vPrice, @vRight)) # Condizione per individuare il pivot point High # L' vPrice del pivot deve essere >= all'vPrice delle vLeft barre a sinistra # e maggiore degli vPrice delle vRight barre a destra SET Condition2 = (@vDir = 1) AND (REF(@vPrice, @vRight) >= REF(MAX(@vPrice, @vLeft), @vRight + 1) AND REF(@vPrice, @vRight) > MAX(@vPrice, @vRight)) SET Condition = Condition1 OR Condition2 SET PLOT1 = CHANGEIF(Condition, REF(@vPrice, @vRight))
Max Francario
-
14-10-13, 20:30 #4
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Grazie Massimiliano per il codice, più tardi provo a giocarci un po'.
Saluti
Massimo
-
19-10-13, 17:19 #5
- Data Registrazione
- Jan 2011
- Località
- Genova
- Messaggi
- 1,306
Ciao Marco,
credo che maxmax86 abbia ragione nella sua richiesta, qui sotto ti posto uno stralcio di codice scritto con altro linguaggio vettoriale, che ha anche la funzione IFvettoriale, che mi sembra essere quella a cui ti stavi riferendo
In quel linguaggio esistono comunque circostanze in cui sia necessario ricorrere ad un più lento calcolo barra per barra, ad esempio nel caso sia necessario memorizzare il prezzo di ingresso del trade ed usarlo per far dei conti per un traling stop customizzato a piacimento
pensi che sia possibile fare qualcosa del genere con il solo IFvettoriale?Ultima modifica di BMM; 19-10-13 alle 17:29
-
19-10-13, 18:08 #6
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ciao BMM,
secondo me il problema non sta nel vettoriale o nel non vettoriale (come diceva giustamente Marco).
Anche io come altri in questi giorni sto sperimentando delle limitazioni nell'uso di EasyScript così come è allo stato attuale, ma credo anche che tali limitazioni dipendano dal fatto che le funzioni vettoriali che ci hanno messo a disposizione sono ancora poche.
Sono sicuro che nel campo della programmazione ci sia sempre più di una soluzione a tutto!
Quindi aspettiamo di vedere di volta in volta i miglioramenti che verranno fatti con il rilascio delle nuove release.
-
19-10-13, 19:50 #7
Grazie, stavo per fare un esaurimento nervoso!
Mancano delle funzioni, erano in programma ...ma sono quasi 30 giorni che i tecnici sono bloccati nella risoluzione del problema del rallentamento che non si era mai manifestato
Se servono delle funzioni noi le scriviamo anche subito, vedi quella dei Pivot o del CHANGE IF, e lunedì faremo quella che possa soddisfare le esigenze di entrare a prezzi diversi (+ o - tick) rispetto al momento in cui scatta il segnale.
Perciò, se ci date una mano a chiedere ciò che vi serve, noi lo facciamo subito ma chiedetelo con delle priorità.
Grazie ragazzi, è un piacere lavorare con voi...se corri dietro a due lepri, non ne prendi nemmeno una.
-
20-10-13, 11:30 #8
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
-
19-10-13, 21:08 #9
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao a tutti,
so che con il mio intervento butterò benzina sul fuoco e da domani sarò bannato dal forum,
ma la frustrazione che mi ha dato programmare con beeTrader in questi giorni
non mi permette di trattenermi !!!
-
Sicuramente Tiziano e la sua squadra sono dei grandi,
lo dimostra la loro storia, quello che hanno realizzato fino a oggi.
Assolutamente e totalmente tanto di cappello.
Ma anche i grandi alle volte possono compiere delle scelte poco azzeccate !!!
-
E, al di la del limite delle troppe poche funzioni-istruzioni disponibili in EasyScript
(che verranno sicuramente ampliate di release in release),
il vero peccato originale di beeTrader è - a mio parere - l'essere vettoriale.
-
Questo è un limite, non un vantaggio, che lo condizionerà per sempre,
ponendo beeTrader in una posizione di eterno svantaggio rispetto a tutte le altre piattaforme
che calcolano barra per barra.
-
Parliamoci fuori dai denti.
Se il progetto è solo creare un giocattolino facile facile per il grande pubblico,
dove il trading system è costituito da un crossover di medie e poco più,
e dove la lungimiranza è quella di creare un parco clienti a cui vendere in futuro
dei trading system prefabbricati, allora beeTrader così com'è può andare benissimo.
-
Viceversa, se l'idea è quella di creare uno strumento facile per il grande pubblico,
ma allo stesso tempo abbastanza flessibile e potente in grado di stare al passo con le altre piattaforme,
allora Tiziano e squadra devono avere il coraggio di trasformare beeTrader da vettoriale a barra per barra !!!
-
Se la modalità barra per barra è stata adottata dalla quasi totalità delle piattaforme ci sarà pure un motivo.
Probabilmente in termini di velocità di calcolo questa modalità è meno efficiente,
ma il fatto di iterare tutte le righe del codice dall'inizio alla fine ad ogni barra, prima di passare alla barra successiva,
apre al programmatore delle possibilità che invece in beeTrader vettoriale sono negate.
E questi limiti evidenti cominciano ad emergere nel forum.
-
La modalità vettoriale, quindi il dover calcolare ogni riga di codice per tutte le barre del grafico
prima di passare alla successiva riga di codice, ha portato alla sparizione dei blocchi di istruzioni
degli IF(condizione)-THEN(blocco di più istruzioni)-ELSE(altro blocco di istruzioni), e peggio ancora,
ha portato anche alla mancata possibilità di inserire più livelli di IF-THEN-ELSE uno dentro l'altro.
Il tutto sostituito da CHANGEIF(condizione, singola istruzione)
oppure IF(condizione, singola istruzione true, singola istruzione false).
Assolutamente insufficiente, oltre che di estrema complicazione.
Altro che semplicità, come propagandato !!!
Per non parlare dei FOR-LOOPS e WHILE-LOOPS di blocchi di istruzioni e non singole operazioni.
-
In attesa di pubblica gogna
porgo cordiali saluti
Massimo
-
19-10-13, 21:33 #10
Ma ci mancherebbe che banniamo per una opinione.
Questa è la tua e quella di altri, la mia è differente come lo è quella di tanti altri.
Quindi vedremo, di certo beeTrader deve piacere al pubblico e non a me e non vuole essere un giocattolino..io prefersico fare cose serie.
Comunque devi anche capire che se vedo che per scrivere un acquisto ad un prezzo inferiore di quando scatta il segnale gli utenti non ci riescono mentre beeTrader da la possibilità di farlo (vedi post relativo appena messo) allora mi pongo una domanda: devo cambiare tutto per poi ritrovarmi con gli stessi utenti che non riusciranno a programmare?
Forse mi conviene tenere degli incontri web e dedicare del tempo alla didattica.
Comunque il lattaio non ha studiato programmazione e io ed altri abbiamo pensato che con beeTrader avesse più facilità.
Come ti ho già scritto il linguaggio professionale e super completo lo abbiamo già fatto in Fiuto Pro...e lo adoperano in una manciata di utenti...
Quindi che fare?
Intanto mi metto in ascolto di tutti i vostri commenti e poi credo che faremo una cosa semplice: entrambi i linguaggi.
Così era il progetto iniziale e così probabilmente faremo.
Grazie per il tempo che ci stai dedicando...se corri dietro a due lepri, non ne prendi nemmeno una.