Discussione: If-then-else, for loop, blocchi di istruzioni {}
-
08-10-13, 11:16 #11
ciao Marco,
prova a fare uno sforzo mentale.
Il linguaggio non è imperativo ma vettoriale.
Ogni riga viene eseguita per tutte le barre e poi si passa alla riga successiva.
Quando tu chiedi di eseguire:
SET Vector = IF(Condition,HIGH, REF(Vector,1))
E come ti ha spiegato Max, il codice viene eseguito per ogni riga di istruzione su tutte le barre...il vettore che vuoi passare come 3° parametro alla funzione IF non esiste ancora... perche dipende da VECTOR , che lo stai ancora calcolando...
Prova a rileggere ciò che ti ho scritto:
SET MyWindowedMAX = MAX(close, 200)
MAX (che è una funzione) calcola "..i valori di un vettore...ed assegnare al valore su un certo indice il valore ...in funzione degli indici precedenti...
Ho riportato MAX perchè è già pronta e fa proprio quello che chiedevi nell'esempio
Ma tu puoi fare una qualsiasi altra funzione come MAX.
La funzione MAX internamente fa proprio quello che dici: PER OGNI Barra, Controlla TUTTE (200 nell'esempio) le barre precedenti e AGGIORNA il Valore DI MAX.
In ogni istante hai accesso alle barre predenti.
Quindi puoi costruire un vettore e Indice per Indice ...via via che trascorre il tempo puoi definire il valore di quell'indice in funzione delle barre precedenti.
Ovviamente non puoi andare a cambiare il valore di un vettore ad un certo indice i quando sei ad un indice > i
Altrimenti vuol dire che quel valore dipende da un evento futuro...e purtroppo ancora non siamo in grado di verificare una condizione nel futuro per prendere un azione nel passato...chissà forse ci arriveremo
ciao,MarcoUltima modifica di Marco Bosco; 08-10-13 alle 11:24
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)
-
08-10-13, 13:00 #12
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Ti chiedo scusa nel caso in cui non avessi capito bene:
mi dici di utilizzare un qualcosa del tipo MAX(HIGH, n) ???
Riferendomi all'esempio che avevo postato in precedenza, ti faccio un esempio numerico:
30 30
40 40
60 60
70 70
50 70
60 60
50 60 <----- servirebbe Max a 2 o 3 periodi (se fosse a 4 periodi restituirebbe 70 !!!)
40 60 <----- servirebbe Max a 3 o 4 periodi (se fosse a 5 periodi restituirebbe 70, a 2 darebbe 50 !!!)
30 60 <----- servirebbe Max a 4 o 5 periodi (se fosse a 6 periodi restituirebbe 70, a 3 darebbe 50 !!!)
40 40
50 50
60 60
A sinistra ho riportato un ipotetico vettore degli HIGH, mentre a destra ho riportato i valori del vettore che dovrebbe calcolare la funzione che volevo costruire io.
Allora ti chiedo:
a quanti periodi lo devo settare il Max?Ultima modifica di Smash; 08-10-13 alle 13:21
-
08-10-13, 13:08 #13
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
Ciao ragazzi,
scusate se mi intrometto, ma a mio parere il punto fondamentale è il seguente:
A parte i già utilizzatori di Fiuto e BeeTrader probabilmente già abituati a ragionare in modo vettoriale, quasi tutti gli altri, i nuovi utenti, arrivano da piattaforme che vengono programmate con linguaggi "tradizionali" tipo EasyLanguage, EFS, Java o C++, etc ...
Siamo tutti da anni abituati a ragionare che per ogni barra del grafico vengono passate tutte le linee del programma, e poi si passa alla barra successiva.
Completamente un altro mondo.
Ora arriva questa modalità vettoriale che implica un completo sovvertimento del modo di ragionare e degli schemi di programmazione, che francamente mi , e credo ci, ha totalmente spiazzato.
Spero che il team di beeTrader sia abbastanza saggio e lungimirante dal comprendere questa difficoltà dei nuovi utenti, e che fornisca un supporto alla programmazione adeguato, possibilmente innondando il forum di esempi anche complessi di programmazione da analizzare e comprendere.
Meglio evitare risposte del tipo: provaci da solo che impari meglio.
Altrimenti il rischio è che gli utenti si scoraggino e tornino alla loro vecchia piattaforma.
Cordialmente
Massimo
-
08-10-13, 13:17 #14
- Data Registrazione
- Feb 2012
- Località
- Pisa
- Messaggi
- 351
Analizzando la guida di EasyScript, sto pensando che il problema si risolverebbe usando la funzione primitiva LASTIF, che però restituisce un vettore: basterebbe trovare il sistema per estrarre da quel vettore i valori singoli da passare come argomento alla funzione REF ... ma per ora non ci sto riuscendo.
-
08-10-13, 13:32 #15
- Data Registrazione
- Mar 2011
- Messaggi
- 718
mi permetto solo di scriverti perchè vedo che sei un nuovo utente di questa community, e sinceramente in più di 2 anni che la frequento nessuno mi ha mai risposto con frasi banali come quella che hai citato tu.
Stai pure tranquillo che qui la professionalità è di casa e di qualsiasi cosa tu abbia bisogno chiedi e sarai sicuro che il massimo che si può fare lo faranno.
Ti parlo per esperienza personale.
-
08-10-13, 13:49 #16
ciao Smash,
per capire meglio cosa succede puoi usare il comando PRINT che ti permette di fare DEBUG e crea proprio i vettori come li hai scritti tu in modo che tu possa esaminarli e vedere cosa succede.
Ti scrivo i passi che ho fatto io:
1)Aprire BT
2)Aprire L'editor
3)dal menu New fare nuovo indicatore
4)inserire il codice
#Crea un vettore di nome PLOT1 set PLOT1 = max(HIGH,2) #Crea un vettore di nome PLOT1 set PLOT2 = max(HIGH,20) #Stampa in debug i valori del vettore HIGH PRINT(HIGH) #Stampa in debug i valori del vettore PLOT1 PRINT(PLOT1) #Stampa in debug i valori del vettore PLOT2 PRINT(PLOT2)
5)Salva lo script premendo save (io l'ho chiamato semplicmeente new2)
6)Premi il bottone debug (si apre la finestra debug)
7)Poi tornare su BT lasciando aperta la finestra dell'editor ..e aprire un grafico (io ho aperto quello Daily sullo stoxx)
8)Inserire l'indicatore new2
9)Asegnare 2 colori diversi
A me appare così:
10)tornare alla finestra Debug ... puoi vedere che appaiono i dati in colonne proprio come le hai scritti tu.
Da qui puoi analizzare i risultati e vedere se sono di tuo gradimento. La stessa cosa la puoi fare combinando infinitamente tutte le funzioni e stampandole in debug per vedere se ottieni quello che vuoi.
ciao,
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)
-
08-10-13, 13:58 #17
Ciao maxmax68,
hai perfettamente ragione!
Tieni anche conto che il SW, e quindi il nuovo linguaggio, non ha nemmeno una settimana di vita...
Lasciamogli il tempo di presentarsi!
Per le ragioni che hai detto conoscendo le persone di PlayOptions, e come avrai modo di conoscerle e farti sorprendere anche tu, credo proprio che saranno già al lavoro per fare quello che hai chiesto.
ciao,
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)
-
08-10-13, 14:14 #18
- Data Registrazione
- Sep 2013
- Località
- Monza
- Messaggi
- 186
-
08-10-13, 14:32 #19
Salve,
nella prossima release di beeTrader saranno aggiunte alcune funzionalità al linguaggio EasyScript.
- Nuova funzione CHANGEIF(CONDITION, VECTOR)
Se la CONDITION è vera, resistituisce il valore di VECTOR, altrimenti restituisce il valore restituito per la barra precedente.
- Nuova variabile DATE
Data della barra, espressa nella forma numerica YYYYMMDD.
Nuova variabile TIME
Orario della barra, espresso nella forma numerica HHMM.
Per orari inferiori a 10:00, la forma numerica diventa HMM.
Per orari inferiori a 01:00, la forma numerica diventa MM.
Per orari inferiori a 00:10, la forma numerica diventa M.
Max Francario
-
08-10-13, 15:01 #20
Caro Massimo, ti ringrazio per le lezioni di marketing ma per la mia ditta è impossibile innondare il forum di esempi.
Che il linguaggio sia totalmente diverso è proprio il motivo per cui deve essere apprezzato beeTrader e ti spiego:
io sono un trdader e non un programmatore, le mie esigenze, che dovrebbero combaciare con le tue, sono di avere un prodotto che dia la possibilità di scrivere ciò che io faccio manualmente.
Se questo l'avessi trovato in altri software non avrei investito tante risorse per costruirne uno mio.
Il cambiamento è epocale, lo stai scrivendo tu e concordo.
La mia frase "prova e impara" voleva essere costruttiva e non inutile come scrivi tu.
Io penso, a sessant'anni, che costruire ed imparare assieme sia meglio.
Sei bravo a programmare, capisci il linguaggio, hai delle idee, bene, allora sei il benvenuto a darci una mano a far crescere gli altri utenti con meno esperienza...se corri dietro a due lepri, non ne prendi nemmeno una.