Trading e Money Management
Hai un problema con Excel? 
Trading e Money Management
di Roby (utente non iscritto) data: 08/03/2015 16:29:06
Buongiorno,
sono un trader e vorrei testare alcune mie idee di gestion del capitale su excel.
Ho subito un problema in quanto vorrei, premendo il taso F9, generare numeri casuali 0 e 1 e basta con probabilità 50:50
Ho notato che quando aggiorno una cella qualsiasi del foglio genera ugulamente numeri casuali; invece vorrei poter aggiornare altre celle del foglio e la generazione di numeri casuali avvenire solo e soltanto alla pressione del tasto F9.
Grazie a tutti coloro che mi leggeranno e mi aiuteranno.
di mabolsie (utente non iscritto) data: 08/03/2015 17:42:53
..scusem mi sun ignurant se l'è un trader ??
te saludi !!
di Vecchio Frac data: 08/03/2015 18:04:52
Se hai messo in qualche cella del foglio la formula =CASUALE o =CASUALE.TRA, accade che premendo F9 si ricalcola l'intero foglio. Ti conviene invece creare una piccola funzioncina con due righe di codice e associare la tua funzione a una combinazione di tasti.
di Roby (utente non iscritto) data: 08/03/2015 18:52:42
Ho messo qs macro e l'ho associata a ALT+A ma a me interessa che generi numei casuali : solo 0 o 1.
Inoltre è molto lento a riempire le 1000 righe
Come posso ovviare ai problemi di cui sopra ?
Grazie
Sub CalcolaRND()
For i = 2 To 1001
Cells(i, 2).Value = Rnd(0)
Next
End Sub |
di Vecchio Frac data: 08/03/2015 19:49:01
Anzitutto devi capire come funziona la generazione di numeri causali.
Si deve inizializzare il generatore con Randomize, che genera sequenze ripetute di numeri pseudocasuali in funzione del numero passato come argomento. Per avere ogni volta un numero diverso dalla sequenza precedente di solito si usa Randomize Timer.
Poi per ottenere un casuale si usa Rnd(n) che genera un numero con virgola minore di uno in una sequenza pseudocasuale generata da Randomize. Per avere un numero maggiore devi moltiplicare il risultato fino a rientrare nel range desiderato e per avere un numero intero devi utilizzare Int(). Il numero generato è sempre minore del valore specificato come fattore di prodotto. Quindi Int(Rnd(1)*5) genera numeri causali interi compresi tra zero e 4.
Questa è la tecnica normale per ottenere numeri causali.
Nel tuo caso specifico puoi utilizzare un trucco velocissimo che consiste nell'applicare una formula direttamente al range che ti interessa, quindi consolidare i risultati per convertire le formule in valori; per restare nel tuo esempio:
range("B2:B1001")= "=RANDBETWEEN(0,1)"
range("B2:B1001").value= range("B2:B1001").Value
di Vecchio Frac data: 08/03/2015 19:49:57
Sarò più esplicito.
Sub CalcolaRND()
range("B2:B1001")= "=RANDBETWEEN(0,1)"
range("B2:B1001").value= range("B2:B1001").Value
End Sub |
di Roby (utente non iscritto) data: 08/03/2015 22:30:19
Graie 1000
Fantastico.
Deve mettere risolto e poi eventualmente aprire altro post oppure posso contiunare a postare qui eventuali altri dubbi ?
di Vecchio Frac data: 09/03/2015 09:08:18
Se i dubbi successivi riguardano questa tecnica puoi continuare. Altrimenti segna come risolta e apri una nuova discussione per problemi nuovi o specifici.
Vuoi Approfondire?