Použití VB.NET pro obchodování na burze – 2. díl

V minulém, úvodním díle “střípků” z obchodování pomocí VB.NET jsme si ukázali, jak na 1 řádek kódu spočítat průměr z posledních 200 obchodních dnů nějaké akcie. Dnes pokračujme, a podíváme se na to, jak ze stejné množiny dat vytáhnout průměr pětidenní, který bychom mohli potřebovat například pro strategii “90%”.

Seznam cen akcií, který jsme vytvořili v kódu ve VB.NET v minulém díle je databáze, se kterou lze v kódu pracovat. Čáry a kouzla, které to umožňují se jmenují LINQ (Language-integrated Query) a pokud máte zájem se o tom dozvědět více, začněte třeba tady. Tento seznam cen, tedy databázi v paměti počítače můžeme například:

  • zprůměrovat (jak jsme viděli v minulém díle)
  • sečíst (i když to by zrovna v případě akcií moc smysl nedávalo)
  • naklonovat
  • spojit s jiným seznamem
  • rozdělit
  • zjistit počet prvků
  • atd.

My využijeme schopnosti jazyka VB.NET načíst z libovolně velkého seznamu jen 5 položek, a ty již zprůměrujeme stejně jako v předchozím díle. Kód může vypadat následovně:

Code Snippet
Module Module1
  Sub Main()
    Dim Ceny As List(Of Decimal) 'ceny GLD od 4.12.2013 do 19.9.2014 (200 obch. dnů)
    Ceny = New List(Of Decimal)(
      {119.96, 118.3, 118.55, 119.72, 121.82, 120.86, 118.29, 119.38, 119.69, 118.65,
      117.61, 114.82, 115.94, 115.57, 116.1, 116.74, 117.12, 115.39, 116.12, 118,
      119.29, 119.5, 118.82, 118.12, 118.46, 120.26, 121.02, 119.89, 119.66, 119.79,
      120.93, 119.7, 119.19, 121.79, 122.29, 120.96, 120.95, 122.47, 119.77, 120.09,
      121.32, 120.99, 121.29, 121.24, 122.17, 122.92, 124.36, 124.43, 125.49, 127.15,
      127.4, 126.27, 127.6, 127.58, 128.99, 129.21, 128.11, 128.2, 127.62, 130.29,
      128.68, 128.89, 130.17, 129.09, 129.13, 129.86, 131.76, 132.21, 133.1, 131.64,
      130.62, 128.09, 127.86, 128.47, 126.18, 126.41, 125.41, 124.59, 124.56, 123.61,
      123.39, 124.32, 123.92, 125.57, 124.91, 126.09, 126.32, 127.01, 126.93, 127.85,
      125.49, 125.54, 124.75, 124.24, 123.78, 123.76, 124.56, 125.43, 124.88, 124.86,
      124.22, 123.8, 125.06, 126.22, 125.98, 124.17, 124.17, 124.1, 124.94, 124.6,
      125.81, 124.77, 124.5, 124.58, 124.69, 124.39, 124.67, 124.51, 121.85, 121.2,
      120.94, 120.43, 119.7, 120.01, 119.76, 120.66, 120.61, 120.65, 121.39, 121.41,
      122.64, 122.96, 122.42, 122.28, 122.67, 126.94, 126.5, 126.85, 126.98, 126.99,
      126.73, 126.66, 128.04, 127.7, 127.7, 127.16, 127.02, 127.07, 127.84, 128.54,
      128.78, 125.72, 124.53, 124.97, 127.09, 126.13, 126.34, 125.74, 125.62, 124.35,
      125.79, 125.58, 125.2, 124.83, 123.39, 124.38, 123.99, 123.87, 125.67, 126.18,
      126.19, 125.96, 125.99, 126.2, 126.31, 125.48, 124.96, 124.68, 124.22, 122.88,
      123.19, 122.74, 123.35, 123.32, 124, 123.86, 121.65, 122.15, 121.48, 122.06,
      120.73, 120.87, 120.26, 119.47, 118.38, 118.64, 118.83, 117.54, 117.78, 117.09
      })
    'jestliže vím, že mám právě 200 cen, mohu si dovolit
    Console.Write(Ceny.Skip(195).Take(5).Average) 'vypíše 117.976

    'jestliže nevím, kolik mám cen, napíšu
    Console.Write(Ceny.Skip(Ceny.Count – 5).Take(5).Average) 'vypíše 117.976

    'jestliže chci prostě průměr posledních pěti cen, napíšu
    Ceny.Reverse()
    Console.Write(Ceny.Take(5).Average) 'vypíše 117.976

  End Sub
End Module

Stejného výsledku jsem pro ilustraci dosáhl třemi různými způsoby:

  1. Z původního seznamu jsem přeskočil 195 hodnot a vzal jsem 5 hodnot následujících (čili, vlastně posledních pět) a ty jsem zprůměroval. Nevýhoda je, že v takovém případě musím spoléhat na to, že v seznamu mám právě 200 cen-ani více, ani méně.
  2. Totéž jako v prvním bodě, pouze se nespoléhám na počet hodnot a přeskočím všechny kromě posledních pěti.
  3. Celý seznam hodnot si otočím (tedy převrátím jej) a po přetočení vezmu prvních 5 hodnot namísto posledních pěti.

Graf

Stejně jako minule připojuji graf, který ukazuje, že výpočet souhlasí:

zlato5

Ostatní články tohoto seriálu

  1. Použití VB.NET pro obchodování – zasílání e-mailů (25.2.2015)
  2. VB.NET, burza a Linux–není to šílené? (30.1.2015)
  3. Použití VB.NET pro obchodování na burze–10. díl (16.1.2015)
  4. Použití VB.NET pro obchodování na burze–9. díl (2.1.2015)
  5. Použití VB.NET pro obchodování na burze–8. díl (14.12.2014)
  6. Použití VB.NET pro obchodování na burze–7. díl (3.11.2014)
  7. Použití VB.NET pro obchodování na burze–6. díl (27.10.2014)
  8. VB.NET a burza – REALTIME data z Google–5. díl (20.10.2014)
  9. Použití VB.NET pro obchodování na burze–4. díl (13.10.2014)
  10. Použití VB.NET pro obchodování na burze–3. díl (6.10.2014)
  11. Použití VB.NET pro obchodování na burze - 2. díl (29.9.2014)
  12. Použití VB.NET pro obchodování na burze–1. díl (22.9.2014)
Příspěvek byl publikován v rubrice Nezařazené se štítky . Můžete si uložit jeho odkaz mezi své oblíbené záložky.

5 komentářů u Použití VB.NET pro obchodování na burze – 2. díl

  1. Vaněk napsal:

    dobrý den, píšete o formě kup a drž. Můžete mi doporučit, u jaké banky nebo brokera mám akcie touto formou nakoupit?
    Děkuji, Vaněk

    • admin napsal:

      U jakékoliv. V případě strategie „kup a drž“ v podstatě žádné extra služby brokera nepotřebujete, stačí když na základě Vašeho pokynu koupí akcie, a to samozřejmě umí každý. Takže klidně FIO, Patria, BrokerJet … rozhodněte se podle poplatků.

  2. Vaněk napsal:

    to platí i pro americké akcie?

Napsat komentář

Vaše emailová adresa nebude zveřejněna.