1. Co indikátor dělá (v kostce)
Indikátor vypočítává pro každý uzavřený bar pravděpodobnost, že se cena v horizontu několika dalších barů bude pohybovat býčím směrem. Výsledek se zobrazuje jako čára v samostatném okně a současně jako textové informace ve dvou panelech: stavový panel a panel průběhu trénování.
Vstupem nejsou klasické indikátory typu RSI/MACD, ale kompaktní popis svíček z více časových rámců. Z těchto vstupů se staví sekvence o pevné délce a ta se předává do hlubší rekurentní sítě typu LSTM.
2. Zobrazované prvky a jejich význam
2.1 Křivka BUY Prob (%)
Křivka je hodnota v procentech (0 až 100) a představuje odhad pravděpodobnosti býčího směru pro bar, který je uzavřený. Aktuální formující se bar se do výpočtu nezapočítává a na něm se křivka nevykresluje.
2.2 Referenční úrovně 50 / 30 / 70
Indikátor zobrazuje tři horizontální úrovně: 50 jako neutral a zóny 30 a 70 jako orientační hranice pro slabé versus výraznější signály. Tyto úrovně jsou vizuální vodítko; nejsou to pevné „pravidlo strategie“.
| Úroveň | Interpretace | Praktické čtení |
|---|---|---|
| 50 | neutral | model nemá výraznou preferenci směru |
| 70 | býčí zóna | pravděpodobnost býčího směru je zvýšená |
| 30 | medvědí zóna | pravděpodobnost býčího směru je nízká; medvědí preference je zvýšená |
2.3 Stavový panel
Stavový panel je blok textů vykreslený do grafu. Slouží jako diagnostika a rychlý přehled: jestli je model připraven, jaká je architektura, jaký je aktuální chybový ukazatel, kolik epoch už proběhlo, jaké časové rámce se používají a co model říká pro nejbližší predikční horizont.
2.4 Panel průběhu trénování (progress)
Druhý panel ukazuje průběh trénování. Zobrazuje procenta průběhu a doplňkové údaje: kolik epoch a mini-batchů je hotovo, odhad zbývajícího času, aktuální chybový ukazatel, cílový chybový prah, a velikost gradientu.
3. Životní cyklus: start, trénink, retrénink, predikce
3.1 Po startu
Indikátor se po připojení k grafu inicializuje, připraví výstupní buffer pro křivku, nastaví měřítko 0 až 100, založí panel informací a panel průběhu, a spustí periodické „pollování“ stavu tréninku.
3.2 První trénování
Pokud není načten uložený model, indikátor zahájí první trénování. Během této fáze se křivka nevykresluje, protože model ještě není připraven. Stavový panel ukazuje stav „GPU Training...“.
3.3 Retrénink
Po dokončení prvního trénu je model připraven a indikátor začne predikovat. Pokud je zapnut automatický retrénink, indikátor při příchodu nového uzavřeného baru kontroluje, zda uplynul definovaný počet barů od posledního trénu. Pokud ano, spustí krátký retrénink.
Po retréninku se interní počitadla směrové úspěšnosti resetují. Důvod je logický: staré skóre popisovalo chování staré sady vah a po změně modelu už není porovnání fér.
3.4 Predikce a kdy se přepočítává
Predikce se provádí dávkově. Indikátor typicky přepočítá větší blok predikcí při startu nebo při novém uzavřeném baru. Křivka se plní hodnotami pro rozsah barů směrem do historie, až do limitu počtu barů, které se mají zobrazit.
Index 0 je formující se bar a pro něj se predikce negeneruje. Index 1 je poslední uzavřený bar. Vyšší index znamená starší historii.
4. Vstupy: Multi-timeframe (MTF) popis svíček
Indikátor používá tři časové rámce (TF1, TF2, TF3). Pro každý bar (pro konkrétní čas) si na každém časovém rámci najde odpovídající svíčku a z ní vytvoří 12 čísel. Celkem je to 36 čísel na jeden časový krok sekvence.
4.1 Proč 12 čísel na timeframe
Cílem je kompaktní reprezentace „tvaru“ svíčky a základní informace o změně objemu bez přímého použití ceny v absolutních hodnotách. Díky tomu je vstup stabilnější mezi instrumenty a lépe se normalizuje.
4.2 Struktura 12 vstupních hodnot na timeframe
| Index (v rámci timeframe) | Název (popis) | Rozsah / normalizace | Význam |
|---|---|---|---|
| 0 až 8 | one-hot kód typu svíčky (9 kategorií) | 0 nebo 1 | Jeden prvek je 1 a ostatní 0 podle toho, do které kategorie svíčka spadá |
| 9 | poměr těla k rozpětí (se znaménkem směru) | typicky -1 až 1 | Velikost a směr těla relativně k rozpětí high-low |
| 10 | rozdíl stínů relativně k rozpětí | typicky -1 až 1 | Jestli dominuje horní stín nebo dolní stín |
| 11 | poměr změny tick volume vůči předchozí svíčce | ořez na interval -2 až 2 | Detekce nárůstu/poklesu aktivity bez extrémních výkyvů |
4.3 Kategorizace svíčky do 9 tříd
Každá svíčka se zařadí do jedné z devíti kategorií podle poměru těla k rozpětí a podle dominance stínů. Pokud je rozpětí extrémně malé, bere se svíčka jako neutrální.
| Kód | Typ | Hlavní kritérium |
|---|---|---|
| 0 | silně medvědí | tělo > 70 % rozpětí, close pod open |
| 1 | středně medvědí | tělo 30 až 70 % rozpětí, close pod open |
| 2 | medvědí s dominantním horním stínem | menší tělo, horní stín větší než dolní |
| 3 | medvědí s dolním stínem | menší tělo, dolní stín větší než horní |
| 4 | doji / neutrální | tělo < 10 % rozpětí nebo minimální rozpětí |
| 5 | býčí s dominantním dolním stínem | menší tělo, dolní stín větší než horní |
| 6 | býčí s horním stínem | menší tělo, horní stín větší než dolní |
| 7 | středně býčí | tělo 30 až 70 % rozpětí, close nad open |
| 8 | silně býčí | tělo > 70 % rozpětí, close nad open |
One-hot reprezentace dává síti jasný diskrétní signál bez nutnosti „uhodnout“, že kód 8 je víc než kód 7. Kategorie jsou typy, ne veličiny.
5. Sekvence pro LSTM: jak se skládá vstupní okno
LSTM pracuje se sekvencemi. Indikátor pro každý predikovaný bar vytvoří sekvenci o pevné délce. Sekvence se skládá z barů od nejstaršího po nejnovější, aby čas v síti plynul přirozeně.
5.1 Okrajové situace
Pokud pro některé kroky sekvence chybí vstupní data (například na hraně dostupné historie), tyto kroky se vyplní nulami. Síť tak dostane konzistentní rozměr vstupu bez posunu struktury.
5.2 Vynechání formujícího baru
Formující bar se ignoruje. Je to zásadní pro stabilitu, protože formující bar se může dramaticky měnit a síť by dostávala nekonzistentní vstupy mezi ticky.
6. Cíl učení: co přesně se síť učí predikovat
Síť negeneruje přímo cenu. Učí se předpovědět pravděpodobnost býčího a medvědího směru. Trénovací cíl se počítá z budoucí změny ceny v definovaném horizontu a tato změna se normalizuje pomocí ATR.
6.1 Horizont predikce
Pro každý trénovací vzorek se vezme cena v čase predikce a cena o N barů později (kde N je predikční horizont). Z jejich rozdílu se vytvoří návratnost.
6.2 Normalizace návratnosti pomocí ATR
Aby byla návratnost porovnatelná v různých volatilitách, dělí se velikostí ATR (převedenou do relativního měřítka). Tím se potlačí problém, že stejný absolutní pohyb může být „malý“ na volatilním trhu a „velký“ na klidném.
6.3 Převod na pravděpodobnost (sigmoid cíl)
Normalizovaná návratnost se převádí přes sigmoid na číslo mezi 0 a 1. Kladná normalizovaná návratnost dá hodnotu nad 0.5, záporná dá pod 0.5. Druhý výstup (medvědí pravděpodobnost) se bere jako doplněk do 1.
Cíl pro býčí směr = sigmoid(normalizovaná_návratnost × škálovací_koeficient)
Cíl pro medvědí směr = 1 - cíl_pro_býčí_směr
Síť byla trénovaná přímo na cílech v intervalu (0,1). Výstup sítě proto už typicky leží v tomto rozsahu a při predikci se nepřidává další sigmoid. Použije se jen ořez a renormalizace dvojice, aby součet byl 1.
7. ATR: výpočet, Wilderovo vyhlazování a cache
ATR se používá pro normalizaci návratnosti při tréninku a jako podpůrná stabilizační veličina. Výpočet je řešen Wilderovým vyhlazováním, které je vhodné pro postupné zpracování časové řady.
7.1 True Range (TR)
TR pro bar bere maximum z: high-low, |high - předchozí close|, |low - předchozí close|. Tím zohlední i gapy.
7.2 Wilderova rekurence
Nejprve se spočítá seed jako jednoduchý průměr prvních period TR hodnot, a potom se postupuje rekurencí: ATR_nový = (ATR_starý × (period - 1) + TR) / period. Směr výpočtu je od starších barů k novějším, aby rekurence dávala smysl.
7.3 Cache ATR
Protože ATR je potřeba často a pro mnoho barů, ukládá se do cache. Cache mapuje bar indexy na ATR hodnoty pro požadovaný rozsah barů. Pokud se požaduje stejný rozsah znovu, výpočet se přeskočí.
Indikátor drží průměrnou ATR hodnotu jako kontrolní veličinu pro detekci, zda je ATR cache validní. Nepoužívá se přímo pro normalizaci cíle; normalizace pracuje s ATR na konkrétním baru.
8. Trénovací data: výběr vzorků, míchání a rozsahy barů
Trénovací vzorek se váže k určitému baru, pro který se skládá sekvence lookback barů. Zároveň je potřeba mít k dispozici budoucí bar pro výpočet cíle. To vytváří přirozené omezení, které bary lze použít.
8.1 Platný rozsah barů pro trénovací vzorky
8.2 Míchání vzorků
Kandidátní bary se před výběrem trénovacích vzorků zamíchají. Smysl je zjevný: síť nemá „vidět“ dlouhé bloky podobných období v pevné posloupnosti, což zlepšuje robustnost a stabilitu trénu.
8.3 Počet vzorků
Počet trénovacích vzorků je omezen parametrem maximálního počtu trénovacích barů. Pokud kandidátů existuje méně, použije se méně.
9. Architektura sítě a význam hlavních hyperparametrů
Síť je hlubší LSTM s několika vrstvami a dvěma výstupy: býčí a medvědí pravděpodobnost. Vrstvy mají nastavitelné velikosti a volitelný dropout.
9.1 Velikosti skrytých vrstev
Vyšší velikost znamená větší kapacitu. S tím roste nárok na VRAM i riziko přeučení. Indikátor nabízí tři velikosti, přičemž třetí vrstva může být vypnutá (nulová velikost).
9.2 Dropout
Dropout je regularizační technika. Prakticky „vypíná“ část neuronů během trénování, čímž brání tomu, aby se síť naučila příliš specifické kombinace pro konkrétní historii. Druhá LSTM vrstva používá snížený dropout (poloviční), aby se zachovala kapacita hlubší části.
9.3 Gradient clipping
Gradient clipping omezuje velikost gradientu, což je u rekurentních sítí důležité pro stabilitu. Zabrání explozím gradientu, které se typicky projeví skoky chyby nebo numerickými problémy.
9.4 Learning rate a weight decay
Learning rate určuje krok učení. Příliš vysoká hodnota způsobí nestabilitu, příliš nízká zpomalí učení. Weight decay působí jako regularizace na vahách, brání jejich nekontrolovanému růstu.
9.5 Target MSE a počet epoch
Trén je limitovaný maximálním počtem epoch a může skončit dříve, pokud chyba klesne pod cílovou hodnotu. První trén je delší, retréninky jsou kratší.
10. Predikce: dávky, limity, ořez a renormalizace
Predikce se provádí v dávkách, aby se využila GPU efektivně a aby se omezily nároky na paměť. Indikátor předpovídá pro určitý rozsah barů do historie, který je omezen parametrem maximálního počtu predikovaných barů.
10.1 Rozsah barů pro predikci
Predikce se generuje od posledního uzavřeného baru směrem do historie, dokud je k dispozici lookback historie. Zároveň se udržuje limit na maximální počet barů, které se mají predikovat a zobrazit.
10.2 Ořez na interval 0 až 1
Výstupy sítě se oříznou na 0 až 1, aby se eliminovaly malé numerické přestřely. Poté se dvojice (býčí, medvědí) renormalizuje tak, aby součet byl přesně 1.
10.3 Převod na procenta
Býčí pravděpodobnost se vynásobí 100 a uloží se do výstupní řady jako hodnota křivky. Medvědí pravděpodobnost se implicitně chápe jako doplněk do 100.
11. In-sample accuracy: co měří a co neměří
Indikátor průběžně vyhodnocuje směrovou úspěšnost predikcí. Dělá to pouze pro případy, kdy je model dostatečně „rozhodnutý“ (rozdíl býčí a medvědí pravděpodobnosti je výraznější). Následně porovná predikovaný směr s reálným směrem pohybu ceny po predikčním horizontu.
11.1 Prahování rozhodnosti
Pokud je rozdíl mezi býčí a medvědí pravděpodobností malý, predikce se nepočítá do accuracy. Smysl je omezit šum: nerozhodné výstupy nejsou signál, ale „nevím“.
11.2 Interpretace
In-sample accuracy není out-of-sample backtest. Je to rychlá diagnostika, jestli model konzistentně reaguje na pohyb v rámci toho, co právě vidí a co průběžně vyhodnocuje. Ber to jako teploměr, ne jako certifikát zisku.
Vysoká in-sample accuracy sama o sobě neznamená, že strategie vydělává. Záleží na tom, jak signál používáš, jak filtruješ režimy trhu, jak řešíš RRR, skluz a drawdown.
12. Model a stav: ukládání, načítání, snapshot nejlepšího stavu
Indikátor umí volitelně ukládat stav modelu do souboru a při dalším startu jej načíst. Dále si drží interní snapshot nejlepší dosažené chyby a v případě chyby tréninku se umí vrátit k posledním dobrým vahám.
12.1 Uložení stavu
Uložení probíhá až při ukončení (deinit) nebo po úspěšném trénu, pokud je tato volba zapnutá. Soubor se ukládá do společného úložiště platformy a jeho název je nastavitelný parametrem.
12.2 Načtení stavu
Pokud je volba ukládání zapnutá a soubor existuje, indikátor se při startu pokusí model načíst. Při úspěchu je model připraven bez nutnosti dlouhého prvního trénu.
12.3 Snapshot nejlepšího stavu
Pokud během trénu dojde k dosažení lepší chyby než dosud, uloží se tento stav jako nejlepší. V případě chyby trénu se indikátor vrátí na poslední nejlepší známý stav.
13. Parametry: detailní popis všech vstupů
Tato část je hlavní reference. Popisuje každý parametr: co dělá, jak ovlivní výstup a jaké jsou typické dopady na výkon a stabilitu.
13.1 Multi-timeframe
| Parametr | Význam | Dopad |
|---|---|---|
| TF1 | první časový rámec (obvykle aktuální) | nejrychlejší kontext; reaguje rychle na změny |
| TF2 | druhý časový rámec (např. H1) | střední kontext; stabilizuje signál |
| TF3 | třetí časový rámec (např. H4) | pomalejší kontext; dodává informaci o režimu trhu |
13.2 Architektura
| Parametr | Význam | Doporučení |
|---|---|---|
| Lookback | délka sekvence (počet kroků) | vyšší = více kontextu, ale pomalejší a náročnější; typicky 20 až 80 |
| HiddenSize1 | kapacita první LSTM vrstvy | základní kapacita; příliš nízko = slabý signál, příliš vysoko = VRAM a přeučení |
| HiddenSize2 | kapacita druhé LSTM vrstvy | tvoří hlubší abstrakci; často menší než první |
| HiddenSize3 | volitelná třetí vrstva (0 = vypnuto) | zapínej, pokud máš dost VRAM a chceš stabilnější dlouhodobější reprezentaci |
| Dropout | regularizace během trénu | 0.0 až 0.3; vyšší = méně přeučení, ale může zhoršit citlivost |
13.3 Trénování (GPU)
| Parametr | Význam | Praktické poznámky |
|---|---|---|
| TrainBars | maximální počet trénovacích vzorků | víc = robustnější, ale delší trén |
| InitialEpochs | počet epoch pro první trén | delší rozjezd; zvedá šanci, že model bude použitelný hned po startu |
| RetrainEpochs | počet epoch pro retrénink | kratší „dofoukání“ modelu na aktuální režim |
| RetrainInterval | počet uzavřených barů mezi retrény | nižší = častější adaptace, vyšší = stabilnější chování a méně zatížení |
| LearningRate | krok učení | příliš vysoký = rozkmitané MSE; příliš nízký = pomalé zlepšení |
| WeightDecay | regularizace vah | pomáhá proti přeučení a růstu vah |
| TargetMSE | cílová chyba pro předčasné ukončení | nižší = delší trén; sleduj, zda se model nezačne přeučovat |
| MiniBatch | velikost mini-batche | větší = stabilnější gradient, ale víc VRAM; menší = rychlejší reakce, ale šum |
13.4 Predikce
| Parametr | Význam | Dopad |
|---|---|---|
| PredictBatch | velikost dávky pro predikci | vyšší = rychlejší GPU throughput, ale víc paměti |
| MaxPredictBars | max počet barů pro vykreslení predikce do historie | omezuje práci i vizuální „hustotu“ |
| PredictAhead | horizont v barech dopředu | nižší = kratší predikce, často stabilnější; vyšší = náročnější úloha |
13.5 Zobrazení
| Parametr | Význam | Poznámka |
|---|---|---|
| BullColor | barva pro býčí interpretaci v panelu | ovlivňuje pouze textovou interpretaci, ne křivku |
| BearColor | barva pro medvědí interpretaci v panelu | ovlivňuje pouze textovou interpretaci, ne křivku |
| NoiseColor | barva pro neutrální interpretaci v panelu | neutrální stav |
| InfoCorner | umístění panelů do rohu grafu | praktické při více indikátorech |
| ProgressWidth | šířka progress panelu | větší je čitelnější; čistě kosmetika |
| ProgressHeight | výška progress panelu | čistě kosmetika |
13.6 Advanced
| Parametr | Význam | Rizika / poznámky |
|---|---|---|
| GradClip | limit velikosti gradientu | příliš nízko může brzdit učení, příliš vysoko může destabilizovat |
| AutoRetrain | automatické retréninky | vypni, pokud chceš fixní model pro testování nebo nižší zátěž |
| SaveModel | ukládat stav modelu do souboru | užitečné pro rychlý start; vyžaduje správná oprávnění úložiště |
| ModelFile | název souboru se stavem | udržuj verzování, pokud experimentuješ |
| VerboseLog | podrobné logování | při ladění pomůže; v produkci může zahlcovat log |
14. VRAM odhad: co zahrnuje a jak jej číst
Stavový panel zobrazuje odhad VRAM. Je to aproximace, která zahrnuje: paměť na váhy a stavy optimizeru, paměť na trénovací data, cache pro průchod sítí, a buffery pro predikce.
Prakticky: když VRAM odhad leze k limitu GPU, sniž velikost vrstev, mini-batch nebo rozsah trénovacích vzorků.
15. Doporučené pracovní postupy: nastavení a čtení signálu
15.1 Jak indikátor číst bez iluzí
Křivka je pravděpodobnostní signál, ne příkaz k obchodu. Nejlépe funguje jako filtr režimu nebo jako vstup do větší logiky. Typické použití je: vyžadovat, aby BUY Prob (%) byl nad určitou hranicí pro long a pod určitou hranicí pro short.
15.2 Konzervativní prahy
Často dává smysl používat přísnější prahy než 70/30, například 75/25 nebo 80/20, pokud chceš méně signálů a vyšší selektivitu. Zároveň sleduj, jak se mění in-sample accuracy při různých prahech rozhodnosti.
15.3 Kombinace s kontextem trhu
Protože vstup už obsahuje více timeframe, signál často lépe funguje, když se používá s jednoduchými tržními filtry: trendové období, boční období, extrémní volatilita. Ne kvůli „magii“, ale kvůli tomu, že rozdělení dat v různých režimech je jiné.
Pokud chceš z indikátoru udělat spolehlivý modul do systému, logika bývá: signál jako pravděpodobnost, plus risk management, plus filtr režimu. Když tohle chybí, i dobrý signál dokáže dělat špatná rozhodnutí. Trh má talent na trapasy.
16. Výkon, limity a typické problémy
16.1 Nedostatek barů
Indikátor potřebuje minimální počet barů: lookback + predikční horizont + rezerva. Pokud graf nemá dost historie, trén se nespustí nebo nebude smysluplný.
16.2 Chybějící historie timeframe
Pokud některý timeframe nemá staženou historii, vstupy pro něj se mohou vyplnit nulami. V praxi to snižuje kvalitu signálu. Řešení je jednoduché: nechat platformu stáhnout historii pro všechny zvolené timeframe.
16.3 Nestabilní trénink
Projevy: MSE skáče, progress stojí, gradient norm je extrémní, nebo se trén ukončí chybou. Obvyklé kroky: snížit learning rate, zvýšit gradient clipping (nebo naopak, pokud je příliš agresivní), snížit mini-batch, snížit velikost vrstev, případně zvýšit dropout.
16.4 Pomalý trénink
Záleží na GPU, velikosti modelu, lookback, mini-batch a počtu vzorků. Pokud je to pomalé: sniž TrainBars, sniž InitialEpochs, sniž Lookback nebo sniž HiddenSize.
16.5 Přeučení
Projev: in-sample accuracy roste, ale signál je v reálném čase „podezřele dokonalý“ a pak selhává při změně režimu. Pomáhá: vyšší dropout, vyšší weight decay, menší kapacita, delší retrain interval (méně často přepisovat model).
17. Logika panelů: jak vznikají texty a kdy se mění
Texty v panelech se aktualizují při výpočtu indikátoru a průběžně během trénování. V režimu tréninku se zobrazují „živé“ hodnoty průběhu (epochy, MSE, best MSE, LR, gradient). Po ukončení tréninku se zobrazí výsledné hodnoty posledního běhu.
17.1 Stav (Waiting / Training / Ready)
Waiting znamená: model ještě není připraven (a zároveň se netrénuje). Training znamená: trén probíhá na GPU. Ready znamená: model je připraven a predikce se generují.
17.2 Slovní predikce pro horizont
Panel čte hodnotu BUY Prob (%) na posledním uzavřeném baru a podle prahů ji přeloží na: býčí / medvědí / neutrální. Medvědí procento se bere jako doplněk do 100.
18. Číselník a slovník pojmů
19. Doporučené experimenty a ladění parametrů
Tady je sada experimentů, které obvykle rychle ukážou, jestli máš nastavení „v rozumné oblasti“. Každý experiment měň jedinou věc, jinak nebudeš vědět, co zabralo.
19.1 Stabilita trénu
Cíl
dosáhnout plynulého poklesu MSE bez výbuchů gradientu
Postup
nejdřív sniž learning rate, pak uprav gradient clipping, pak mini-batch
19.2 Citlivost signálu
Cíl
signál reaguje, ale nebliká
Postup
měň lookback (nižší = citlivější), pak dropout (nižší = citlivější)
19.3 Robustnost mezi trhy
Cíl
podobné chování na různých symbolech
Postup
zvyš weight decay, zvyš dropout, sniž kapacitu vrstev
20. Bezpečné používání, odpovědnost, poznámky k riziku
Indikátor je predikční modul založený na strojovém učení. Vždy existuje režim trhu, ve kterém selže. Doporučení je používat jej jako část systému, nikoli jako jediný důvod k otevření pozice.
Zvlášť u krátkých timeframe a u instrumentů s vysokou volatilitou mohou být krátkodobé predikce nestabilní. Hlídej skluz, spread, likviditu a rizikové limity.
21. Technická poznámka k provozu a publikaci na webu
Tento manuál je určen jako statický HTML soubor s drobným JS (navigace, vyhledávání, zvýraznění sekce).