isAuthorized()) Header("Location: /login.php"); require('../header.html'); require('../../src/interpolate.php'); require('../../src/ticker.php'); define("NUM_GRAPHS",6); if (isset($_GET["ticker"])) $ticker = $_GET["ticker"]; else $ticker = ""; $expr = array(); for($i=0;$i

Graph

\n"; $row = 1; for($i=0;$i\n"; echo "\n\n"; $row = 1-$row; } echo "\n"; ?>
Show start: Show end:
Ticker:
Expr $i:
<< Menu

0) { if (($expr[$i] == "TICK") || (substr($expr[$i],0,9) == "TICK TICK") || (strpos($expr[$i],"CANDLES") !== false)) $height = 400; else $height = 200; echo "\n"; echo "

\n"; } } } ?>

Nápověda:

Show start/end

Datumy ve formátu YYYYMMDD.

Ticker

Jeden ze známých tickerů

Výrazy

Zde je to na první pohled trochu komplikovanější. Tedy - pokud vám něco říká "Reverzní polská notace" (RPN) nebo "Postfixový zápis", tak asi nepotřebujete moc další nápovědu. Pro ostatní dodám, že se jedná o způsob zápisu, kdy se nejdříve uvedou argumenty a pak teprve jméno funkce.

Proč používám tak šílený zápis? Protože to umožňuje sestavovat libovolné výrazy a je to přitom jednoduché na implementaci (jednoduchým zásobníkovým automatem). A kromě toho jsem měl (ještě mám) kalkulátor od HP, který RPN používal a já jsem jej ochotně půjčoval ostatním a koukal, jak na něm neumí počítat :-)

Možné funkce

  • TICK - Časová řada uzavíracích hodnot akcie uvedené výše v políčku Ticker.
  • <reálné číslo> - Konstanta - pro vstupy do funkcí, konstantu není možno (v aktuální verci) nakreslit.
  • <řada> <počet dní> MA - Moving average časové řady (výstupem je samozřejmě opět časová řada)
  • <řada> <počet dní> RSI - RSI časové řady (výstupem je časová řada)
  • <řada 1> <řada 2> DIFF - Rozdíl časových řad (1-2) (výstupem je časová řada)
  • <řada 1> <řada 2> MIN - Minimum časových řad (výstupem je časová řada)
  • <řada 1> <řada 2> MAX - Maximum časových řad (výstupem je časová řada)
  • <řada> <počet dní> LOWP - Časová řada, hodnotou řady je procento případů, kdy je za posledních n dní hodnota původní řady nižší, než aktuální hodnota. (Např. si to můžete představit jako procento dní, kdy za poslední rok byla hodnota akcie nižší než v daný den.)
  • <YYYYMMDD> <c0> <c1> TREND - Trendová čára, začínající v daném dni hodnotou c0 a zvyšující se každý obchodní den o hodnotu <c1>. Takto je možno eventuelně kreslit i konstanty - vodorovné čáry.
Jak jsem již předeslal, toto jsou funkce, nicméně je možno je skládat a tak vytvořit prakticky libovolnou konstrukci. Příklady:
  • TICK - Nakreslí graf akcie
  • TICK 20 MA - Nakreslí 20-ti denní MA akcie
  • TICK 12 RSI - Nakreslí 12-ti denní RSI
  • A pozor: TICK 20 MA 12 RSI - Nakreslí 12-ti denní RSI 20-ti denního MA (a teď mi řekněte, který jiný SW tohle umí :-) ). Přepsáno do infixového zápisu je to RSI(MA(TICK,20),12).
Podstatné je, že výsledkem výrazu musí být časová řada, konstanty nekreslíme :-). Dokonce může být výsledkem výrazu více časových řad, potom jsou nakresleny do jednoho grafu:
  • TICK TICK 50 MA - Nakreslí graf akcie spolu s 50-ti denním MA
  • TICK 12 RSI TICK 20 MA 12 RSI - Nakreslí 12-ti denní RSI spolu s 12-ti denním RSI 20-ti denního MA
A nakonec jsem si nechal lahůdku. Pokud uvedete do výrazu CMIN (jenom CMIN, žádné TICK, nic takového), dostanete speciální (můj vlastní :-) ) indikátor. Je to oscilátor s rozsahem hodnot 0 - 100. Signál BUY dává při překročení hodnoty 10 směrem vzhůru, signál SELL při překročení hodnoty 90 směrem dolů (cca, samozřejmě nutno ověřit na historických datech).

Není to funkce (proto není uveden výše), ale je to "makro" a jeho definice je:

TICK 30 RSI 200 LOWP TICK TICK 200 MA DIFF 200 LOWP MIN

Tak, a teď snad chápete, k čemu jsem potřeboval tak složitý systém pro počítání výrazů s číselnými řadami :-)