Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Come strutturare un programma

    Il mio problema è in questi termini. Devo creare un programma che possa aiutarmi in borsa.
    Devo creare cioè un'applicazione che, dopo aver preso in ingresso dei parametri, mi dia delle risposte a seconda dell'andamento borsistico.
    In particolare, sono interessato alle candele giapponesi, strutture che permettono intuitivamente di capire il mercato.

    http://www.momentumborsa.it/010404/candlestick.htm

    La cosa che più mi interessa sapere è questa. Di tali candele, che credo possano far parte di una classe della mia applicazione, mi interessano questi parametri:

    colore (booleano)
    ala inferiore
    ala superiore
    lunghezza

    che potrebbero apparire come attributi.

    Poi arriva il bello. Ho delle funzioni che devono sfruttare tali dati.
    Faccio l'esempio delle bande di Bollinger.
    Tale calcolo si effettua tenendo conto delle ultime 20 candele.
    Prima domanda: non posso inserire manualmente i valori che mi servono. Ammettendo per esempio che io crei la classe Candela con i sovracitati 4 parametri, non posso dover creare manualmente 20 candele ( new Candela a = new Candela (true, 23, 19, 30)) trascrivendo i valori, causa perdita di tempo e possibilità di errore elevatissima.
    Devo invece poter usufruire di tali valori prendendoli da un foglio in formato txt o exel.
    Inoltre, la formula del calcolo delle Bande di Bollinger si basa su due grandezze: la media aritmetica degli ultimi 20 valori di chiusura: nel caso in cui il colore sia nero devo sommare il limite inferiore della candela (trand ribassista), nel caso in cui il colore sia bianco devo sommare ala media il limite superiore (trand rialzista).
    Dal valore calcolato della media a 20 candele (altro problema, come faccio a dire all'applicazione che deve prendere in esame solo le ultime 20 candele?) devo applicare un'altra funzione, detta varianza, che sfrutta la media calcolata più ancora una volta tutti i 20 valori di chiusura. Come potrei implementare quest'altra funzione???
    Poi dovrei stampare i valori ottenuti.

    Faccio un riepilogo.

    Mettiamo che ho in un file txt i valori di lunghezza, chiusura, apertura e colore delle ultime 100 candele.

    1) devo poter inserire tali valori nella mia applicazione senza perdere tempo
    2) devo calcolare il valore delle Bande di Bollinger per le ultime 80 candele, dato che le prime 20 mi servono per il calcolo delle bande della 20esima candela, le candele dalla seconda alla 21esima mi servono per il calcolo delle bande della 21esima e così via
    3) tale calcolo si basa su funzioni (media e varianza) che si basano ancora SOLO SU 20 CANDELE, nè una di più nè una di meno.
    4) la media è la sommatoria dei valori di chiusura della candela (limite superiore se il colore è bianco, limite inferiore se il colore è nero) diviso per il numero di candele analizzate, nel mio caso 20. ( x_medio += ((limSup && bianco || limInf && nero)) / 20 )
    5) la varianza è la radice quadrata della sommatoria dei valori di chiusura di ognuna delle 20 candele meno il valore medio prima calcolato, il tutto diviso per 20. (varianza = (rad.quadrata di ((per ogni candela) (valore chiusura - x_medio) )/20).

    Per essere più chiaro vi posto il link,

    http://csifinanza.altervista.org/Bollinger.html

    Dopo aver detto tutte queste cose, qualcuno mi può aiutare nel risolvere i problemi sovracitati?
    Inoltre, come potrei organizzare la gerarchia di classi per la mia applicazione?

    Vi ringrazio anticipatamente dell'attenzione.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Innanzitutto andiamo con calma e proseguiamo risolvendo i problemi uno per volta. Premetto subito che non saprei aiutarti per i calcoli su candele giapponesi e bande di Bollinger (le uniche candele che conosco sono quelle di cera che si accendono.... per quelle bande, non so manco cosa siano).

    Parli di un file di testo che dovrebbe contenere i dati delle candele. Bene, per prima cosa dovresti stabilire con quale formato memorizzare i dati. Dire file di testo, dice poco, nel senso che l'unica cosa sicura è che i dati sono leggibili/scrivibili dall'utente con un editor di testo.
    Una possibilità è avere un file in cui ogni riga contiene i dati di una candela, separati con un qualche separatore (spazi, virgole, quello che ti pare).

    Passiamo al codice: la entità "candela" è sicuramente rappresentabile bene con una singola classe Candela, che contiene gli attributi (campi privati) e implementa i soliti metodi setter/getter, come è buona consuetidine fare.

    Per leggere il file si potrebbe fare una classe LettoreCandele, con un costruttore che riceve un File (o String con il nome del file) e implementando ad esempio un metodo leggi() che ritorna un ArrayList di oggetti Candela. Il metodo farà uso delle classi di I/O come ad esempio BufferedReader per leggere le linee del file.

    Beh, a quel punto hai un insieme di candele accessibile tramite indice e ci farai quello che vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    I files dove sono caricati i dati per le candele possono essere di due tipi, a mia discrezione.
    O è un file di testo txt del blocco notes di windows o è un file excel.

    Hai poi scritto
    Per leggere il file si potrebbe fare una classe LettoreCandele, con un costruttore che riceve un File (o String con il nome del file) e implementando ad esempio un metodo leggi() che ritorna un ArrayList di oggetti Candela. Il metodo farà uso delle classi di I/O come ad esempio BufferedReader per leggere le linee del file.

    Bene, non lo so fare assolutamente.
    Mettiamola così.
    Creo la Classe Candela creando attributi privati quali lunghezza, colore, alaSuperiore, alaInferiore ecc...
    Mettiamo dunque che i miei files, quelli con i dati, sono in un fule excel che mette, per esempio, in una colonna tutte le altezze, in un'altra il colore, in un'altra l'alaSuperiore e in un'altra ancora l'alaInferiore. Questo file è salvato sul desktop con nome "Baned di Bollinger".
    E poi che faccio?
    Mi spiace dimostrarmi così ignorante e bisognoso d'aiuto; ringrazio di cuore andbin e chiunque altro mi sarà d'aiuto.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragno nero doce
    I files dove sono caricati i dati per le candele possono essere di due tipi, a mia discrezione.
    O è un file di testo txt del blocco notes di windows o è un file excel.
    Per i file di testo, ok. Per i file di Excel, quali intendi? I file .xls?? Perché i file .xls sono file binari in formato proprietario. A meno che tu usi una libreria apposita per gestire i file xls, dubito che facilmente riuscirai ad estrarre qualcosa. Se invece parli di file tipo i CSV o testo formattato, allora torniamo a dei normali file di testo.

    Originariamente inviato da ragno nero doce
    Bene, non lo so fare assolutamente.
    Non è difficile, basta usare alcune classi del package java.io, tipo BufferedReader, InputStreamReader, FileInputStream.
    Se fai una ricerca sul forum troverai sicuramente molte discussioni che parlano di queste classi. Insomma, si tratta poi solo di creare alcuni oggetti e poi fare delle apposite read.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Scsate se sono pedante, ma non ho trovato nulla in questo forum che possa fare al caso mio.
    Avreste un link da consigliarmi per avere le informazioni che cerco???
    Inoltre, vi propongo un altro problema.
    Se io metto come attributi privati la lunghezza, il colore e le ali superiori e inferiori, creo una calsse del genere

    class Candela

    private duoble lungh, alaInf, alaSup;
    private boolean color;


    In un'altra classe dovrò poter sfruttare circa 20 candele: ciò vuol dire che dovrò poter avere accesso, per esempio, a 20 parametri "lungh" di 20 candele consecutive.
    Mi conviene strutturare un array di Candele? Se si, dopo aver creato l'array, come posso prendere tale campo "lungh"?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da ragno nero doce
    Scsate se sono pedante, ma non ho trovato nulla in questo forum che possa fare al caso mio.
    Avreste un link da consigliarmi per avere le informazioni che cerco???
    Ecco un esempio valido, anche dal punto di vista della gestione delle eccezioni, per la lettura "a righe" di un file testo.

    codice:
    import java.io.*;
    
    public class Prova
    {
        public static void main (String[] args)
        {
            try
            {
                leggiFile ("testo.txt");
            }
            catch (IOException e)
            {
                System.out.println (e);
            }
        }
    
        public static void leggiFile (String nomeFile)
            throws IOException
        {
            InputStream is = null;
            InputStreamReader isr = null;
            BufferedReader br = null;
    
            try
            {
                is = new FileInputStream (nomeFile);
                isr = new InputStreamReader (is);
                br = new BufferedReader (isr);
    
                String line;
    
                while ((line = br.readLine ()) != null)
                {
                    // fai qualcosa con la riga ....
                }
            }
            finally
            {
                if (br != null)
                    br.close ();
                else if (is != null)
                    is.close ();
            }
        }
    }
    Originariamente inviato da ragno nero doce
    In un'altra classe dovrò poter sfruttare circa 20 candele: ciò vuol dire che dovrò poter avere accesso, per esempio, a 20 parametri "lungh" di 20 candele consecutive.
    Mi conviene strutturare un array di Candele? Se si, dopo aver creato l'array, come posso prendere tale campo "lungh"?
    Nella mia risposta iniziale avevo suggerito l'utilizzo di un ArrayList per contenere l'insieme degli oggetti Candela.

    La classe Candela che hai riportato:

    Originariamente inviato da ragno nero doce
    class Candela

    private duoble lungh, alaInf, alaSup;
    private boolean color;
    non è tutta lì. Cioè non basta, c'è da mettere anche il costruttore e i metodi setter/getter.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.