Väsäilen tällä hetkellä itselleni J:llä toteutettua MtGoxin BTC/USD -kurssidatan historiallista tietokantaa. Tarkoituksena on tallentaa ensin tietokantaan (toteutettu J:n mapped file-tekniikalla, nopea) kurssidatat minuuttitasolla viimeisen vuoden ajalta ja mahdollisesti päivitellä myöhemmällä datalla. Tallennettavia kenttiä olisivat Bitcoinchartsin tyylisesti:
date (vvvvkkpp)
time (hhmmss, oikeastaan tässä sekunnit turhia)
open (*100000, tallennus integerinä)
high (sama^)
low (sama^)
close (sama^)
volume USD (*100, int)
volume BTC (*100, int)
weighed price (*100, int)
Ideana on siis muuntaa kaikki kentät kokonaisluku-tyyppisiksi kertomalla desimaalit pois ja saada näin aikaan säästöä levytilassa ja hakuajoissa. Haku J:n komentotulkista käsin toimii jo nyt, jatkossa on tarkoitus koodailla käyrien piirtelyä ja teknisiä analysaattoreita, joita voisi vapaasti yhdistellä tiettyyn aikasarjakuvaan. Itselläni on tarkoitus käyttää tätä treidausstrategioiden suunnitteluun mutta tietokanta taipuu varmaan moneen muuhunkin käyttöön, jossa on jokin mtgox-kurssidatakytkös. Kenties laitan työni tulokset jakeluun Open Source-periaatteella, en ole vielä asiaa päättänyt. J602:n voi ladata ja asentaa veloituksetta www.jsoftware.com:sta. J-ohjelmat ovat muuten siirrettäviä win/mac/linux -ympäristöissä, mutta tuo mapped files database taisi pelittää pelkästään windowsissa. On muuten nopea, J:stä löytyy demo, jossa tuolla on toteutettu miljoonan tietueen “ajoneuvotietokanta”, josta haut ovat sekunnin kymmenyksien luokkaa.
Olen työtön ohjelmoija ja kiinnostunut keskustelemaan, jos jollakulla on tarjota tämänsuuntaisia hommia. Koodailen pääasiassa APL:n eri murteilla ja J:llä.
Tuossa on hieman otetta sessiolokista, meneillään raakadatan siivoilu, 0-rivien ja peräkkäisten duplikaattirivien typistäminen. Tietueita kaikkiaan 364593 riviä. Aikaa tuohon boolean-vektorilla ohjattuun typistykeen meni silmänräpäys, ehkä 0.1 sekuntia. Hyvältä vaikuttaa ainakin vasteaikojen suhteen.
Nyt mulla on valmiina funktiot tietyltä aikajanalta poimitun kurssi/volyymidatan plottaukseen. Jotain teknisiä analysaattoreita voisi vielä koodailla ja ajaa tuohon päälle, pitäisi vaan keksiä mitkä analysaattorit purisivat Goxin tapaiseen markkinaan parhaiten.
Sitten vielä keksitään toimiva trading-strategia. Simuloidaan ja kenties laitetaan tuotantoon siellä missä p**ka osuu tuulettimeen. Ja rikastutaan…
[quote=“Kurdeli, post:3, topic:923”]Nyt mulla on valmiina funktiot tietyltä aikajanalta poimitun kurssi/volyymidatan plottaukseen. Jotain teknisiä analysaattoreita voisi vielä koodailla ja ajaa tuohon päälle, pitäisi vaan keksiä mitkä analysaattorit purisivat Goxin tapaiseen markkinaan parhaiten.
Sitten vielä keksitään toimiva trading-strategia. Simuloidaan ja kenties laitetaan tuotantoon siellä missä p**ka osuu tuulettimeen. Ja rikastutaan…[/quote]
Osaatko sattumoisin sanoa paljonko MtGoxin bid-ask spread on keskimäärin? Tämä vaikuttaa strategian toimivuuteen olennaisesti, vaikka kysessä olisi SP500:n kaltainen erittäin likvidi markkina. Toki MtGoxissa on suurempi volatiliteetti.
Spreadi on itse asiassa nähtävissä joidenkin päivien kurssikäyrissä, perstuntumani on että se olisi voimakkaasti kytköksissä mtGoxin perimiin palvelumaksuihin, olikohan 0.55% sekä myydessä että ostettaessa. Jollain argoritmilla sen voisi varmaan laskea tuosta raakadatasta, jotain tyyliin “suodatetaan 2 tyypillisintä arvokeskittymää aikajanalla t ja lasketaan näiden erotus”. Vaatinee “flat trading rangen” tai lievää trendausta.
Niin, siis noi x-akselin arvot on suoria indeksejä tietovektoreihin, pitäisi saada jotain pvm/hh:mm -selitteitä aikaiseksi jahka ehdin.
Ehkä voisi olla hyvä idea laskea joku kausitasoitettu sarja tuohon rinnalle, vaikka 30 havainnon liukuva keskiarvo tms.
Noi 636624*60 -alkioiset tietokannat vievät levytilaa hieman yli 14MB per integer-kenttä. Allokoin 6 vuoden tarpeisiin, joten kasvuvaraa on vielä.
[font=courier]
goxPlotRangeVol 20130516 20130516.1225 #gclose NB. tietojen lkm tietokannassa
364683[/font]
Tuommoisen aika-navigaattorin sain tehdyksi. Sillä voi askeltaa tiettyä aikajanaa halutunkokoisia askeleita eteen ja taaksepäin ja lisäksi noihin aikakenttiin voi syöttää aikajanan päätepisteet muodossa vvvvkkpp.hhmm. Kuvaa voi käyttää myöhemmin analyysityökalun osana, se voisi esim. automaattisesti fokusoitua kuvaajan kiintoisiin kohtiin, joissa indikaattori antaa buy/sell -signaaleja.
4.626555 5.141555 5.143015 5.144975 5.144977 5.146437 5.144839 5.146398 5.146401 5.146462 5.146063 5.145563 5.145563 5.145562 5.146662 5.146662 5.148221 5.148221 5.148221 5.147761
[/font]
Tuo LKA on laskettu käsittelemättömästä raakadatasta, pitää jakaa 100000:lla niin päästään oikeaan suuruusluokkaan.
Vaikuttaa yllättävän nopealta, liukujakson kasvatus esim. 6000 arvoon ei tunnu näkyvän suoritusajassa juuri lainkaan.