Pracovní skupina poskytovaná tradery pro tradery. Naleznete v ní odpovědi na své technické otázky týkající se programů Amibroker, Python, InteractiveBrokers TWS a TradeStation Global.
Přikládám kód pro Tradestation. Při programování jsem vycházel z této studie Swiss Finance Institute. Pokud si studii přečtete, měli byste se v kódu orientovat, je do něj zapracovaná kapitola 3 (základ) a 4.4 (Volatility Multiplier).
Noise Area je počítaná tak, že jak kód prochází dny od počátku, načítá průběžně data do pole. Obchodovat může až v okamžiku, kdy pole naplní. Nechtěl jsem to zbytečně komplikovat, proto jsem tento moment nastavil jako 1,3 násobek délky (look_back), ze které se Noise Area počítá. Je to proto, že se můžou vyskytnout dny, které končí dříve. Např. načítám hodnoty pro úsečku 14:00, ale daný den burza zavře dříve a hodnota pro tuto úsečku je 0. Což by Noise Area rozhodilo na několik dalších dnů.
Vykreslení Noise Area a VWAP do grafu probíhá tak, že se vykreslují trendline mezi jednotlivými svíčkami. TS umožňuje vykreslit jen určitý počet trendline, proto se musí nastavit dny, které chcete vykreslit. Nastavuje se úplně na konci kódu a defaultně je to nastaveno tak, aby se vykreslilo posledních 80 dnů. Můžete ale nastavit i konkrétní den nebo od - do.
Position sizing jsem vyřešil tak, že se nastaví výchozí počet kontraktů které chci obchodovat (default_shares_qt), nastavím cílovou volatilitu (vol_target), maximální páku (max_paka) a na počátku každého dne vypočtu anualizovanou volatilitu (AnnVol). Pokud AnnVol = vol_target, odpovídá počet kontraktů default_shares_qt. Při snižující se volatilitě počet kontraktů roste (max. na hodnotu default_shares_qt * max_paka) a při zvyšující naopak klesá (min. 1).
Cílovou volatilitu jsem určil podle histogramu volatility, kdy jsem vzal prostě tu nejčastější. V kódu je příkaz "print(AnnVol)", který do Print Logu vypíše anualizovanou volatilitu pro každý den. Označil jsem, zkopíroval, vložil do excelu, hodil na to histogram a odečetl nejčastější výskyt. Pro každý trh je jiný, pro MES jsem nastavil na 0.08.
Nastavení kódu - pokud nechcete vyloženě upravovat kód, tak pro jeho nastavení stačí měnit hodnoty v částech "NASTAVENÍ", "Array" a "Vykreslení Noise area a VWAP do grafu", kde se nastavují dny, pro které se má vykreslit Noise Area a VWAP. V NASTAVENÍ lze separátně nastavit, na close jakého timeframe se má vstupovat a vystupovat (5 / 10 / 15 / 30) a taky lze omezit max počet obchodů long, short i celkově.
Nastavení grafu pro backtest musí obsahovat dvě datové řady
Nastavení první řady
Nasatvení druhé datové řady
Výsledná Equity na MES za posledních 5 let (bez provizí a skluzů) potom vypadá takto
Mít to včera nasazené, tak bych se pěkně napakoval, včerejší obchod na MNQ byl ještě brutálnější než na MES 🤦♂️.
Budu rád za jekékoli připomínky. Doufám, že ten koncept nastavení position sizingu, včetně určování cílové volatility, je v pořádku. Kód vypadá jak vypadá, protože je prostě od neprogramátora.
IMSFI Financnik 10.4.2025.txt
Dobrý den,
to vypadá jako by jste mezitím nainstaloval nějakou novou knihovnu Functions. Generátor pak místo importu pomocných skriptů z podsložky functions načítá stejnojmennou knihovnu.
B.
Zdravím.
Při spuštění generatoru mi to vyhazuje chybu viz níže. Ještě v úterý osmého bylo vše v pořádku. Pak jsem při nastavování musel udělat špatný krok a nevím kde.
Jaromír
C:\X_signaltrader>generator.py
Traceback (most recent call last):
File "C:\X_signaltrader\generator.py", line 39, in <module>
from functions.logger import Systemlog
File "C:\Python\Python_3_12_9\Lib\site-packages\functions.py", line 68
nodes = tuple(map(lambda (k, v): process_node(inner, k, v),
^^^^^^
SyntaxError: Lambda expression parameters cannot be parenthesized
Uvažujete správně. Potřebujete software + data. S tím, že tato kombinace může mít řadu podob a může být bezplatná i placená. Záleží jakou kvalitu a komfort práce potřebujete.
Jednodušší situace je u dat. Hodně obchodníků začíná s bezplatnými daty z yahoo. Ty jsou relativně ok, ale nejsou zde delistované akcie a historické konstituenty. Data se dají poměrně snadno zdarma stahovat, občas jsou v nich nějaké nepřesnosti, ale pro pomalejší strategie jsou ok. Kdo to myslí s tradingem vážně, měl by podle mě sáhnout pro Norgate Datech. Pro delistované akcie a historické konstituenty je nutné Platinum předplatné. Při roční platbě vychází US akcie na 52,5 dolarů a je to skutečně super služba. Pro akcie reálně podle mě není lepší řešení.
Software existuje neomezeně. Pokud budete využívat Norgate Data, vybíral bych takový nástroj, který s těmito daty nativně pracuje. Viz https://norgatedata.com/accessibility.php. Osobně dnes asi nejvíce využívám Python + Norgate data, ovšem to rozhodně vyžaduje určitou znalost Pythonu. Ambiroker + Norgate data je určitě snazší řešení a za pár dnů budete mít otestované první systémy. Ale i pokud sáhnete po některém z dalších software, tak dosáhnete cíle - sám kombinuji nakonec různé software pro různé úkoly. Někde je snazší naskriptovat jednoduchou strategii, jinde se lépe pracuje s portfolii atd.. S Norgate daty umí pracovat i Excel skrz XLQ2 - https://norgatedata.com/accessibility.php#xlq2
Dekuji za rychlou odpoved.
Jak uz jsem zde na foru nekolikrat cetli, hlavni je zacit obchodovat a zkusenosti postupne prijdou. A to bych take chtel udelat. A jestli to spravne chapu, at uz se rozhodnu pro jakoukoliv s pomalejsich strategii (vhodne pro zacatek) je treba ji otestovat na historickych datech. K tomu tedy jsou potreba adekvatni nastroje (jako treba Excel, Python nebo Amibroker) a zakoupit si adekvatni data (minimalne na dobu backtestu). Spravne?
Me uvahy se vztahuji na ty jednodussi strategie, ktere mame ve cvicnem portfoliu a s kterymi lze zacit jako NDX SMO nebo MONDAY BUYER.
Historicka data bude tedy treba k backtestovani zakoupit tak jako tak? At uz budou pouzita ruznymi nastroji. Take se testuje delsi obdobi do historie a jak jsem se dival, ne kazda firma nabizi data tak daleko dozadu.
Kdyz uvazuji jak dal po prakticke casti, nektere souvislosti me nenapadly a potrebuji si je potvrdit jestli to spravne chapu. Kazdopadne dekuji za odpovedi.
Ales
Je potřeba použít zdroj dat, které obsahuje konstituenty a delistované akcie. Jeden z nejdostupnějších, které také používám jsou Norgate data - https://norgatedata.com/.
Ad vliv na výsledky. Hodně záleží na typu strategie. Pokud budete testovat strategie obchodující momentum s delší dobou držení - například typu NDX SMO, tak to bude mít poměrně vysoký dopad. Jde o to, že index sám o sobě je defacto momentum strategie. V dnešním indexu, například Nasdaq 100, jsou společnosti, kterým se v minulém období dařilo (pokud ne, tak se do indexu nedostaly, nebo z něj vypadly). Pokud byste tak historicky nakoupil jakoukoliv akcii, která je dnes v indexu a držel, tak byste pravděpodobně vydělával. Potíž je ale s v tom, že před lety vypadal index úplně jinak a nikdo nevěděl, jak bude index vypadat dnes. Proto bychom při testování měli respektovat historické složení indexu ke dni otevírání obchodu.
Dobry den. V některých článcích zde na internetu zmiňujete důležitost historického složení indexu - Tedy backtestovat pro dané období ty firmy, které v té době v indexu byly. Zmínka třeba tady:
https://www.financnik.cz/clanky/praxe/vytvoreni-momemtum-portfolio-systemu-obchodujiciho-akcie-r1774/
Pokud chci zkusit backestovat třeba právě rotační strategii na nasdaqu nebo jiném indexu. Jak bych se mohl nejlépe dostat k složení indexu v historii?
Napadla by mě otázka, jestli to má velký vliv na výsledky. A když o tom přemýšlím, řekl bych, že čím dál do historii se testuje, tím větší vliv to bude mít. Dva roky zpět asi nebudou tak velké změny jako testovat deset let zpátky.
Diky předem.
Ales
Zdravím,
tak jsem si dnes říkal, že už mám vše odladěné a začne mi skript běžet a pro změnu se mi objevila chyba viz. níže. Něco asi timezone. Pro jistotu jsem použil původní nastavení, které je zde. Ale stejný problém.
Díky za pomoc. T.
Dobrá otázka. Na kterou ale není snadná odpověď.
Hrozně záleží co a jak obchodujete, jaké máte zkušenosti.
Pokud máte menší zkušenosti a obchodujete s přiměřenými váhami malý kapitál, tak bych nic neměnil. Některé strategie (Monday Buyer, MR3000L atd) pravděpodobně budou mít drawdown, ale to v tradingu není nic, co bychom nečekali. To že si drawdowdem projdete, vás pak posílí do dalších let a ukáže vám, jaký typ strategií je vám příjemnější atd.
Pokud cítíte, že máte váhy přepálené, tak bych pravděpodobně stáhnul váhy long mean reversion - minimálně do doby, než se v trzích uklidní volatilita a věci si trochu sednou.
Ale upřímně vnímám, že diskréční zásahy do portfolií u méně zkušených obchodníků mohou vytvořit více škody než užitku. Můžete trochu ušetřit, ale můžete současně zanést do hlavy nechtěné vzorce toho, že zasahovat do systémů je normální. A to v budoucnu spíše povede ke ztrátám.
Osobně mám váhy pro long mean reversion stažené, ale z toho důvodu, že kapitál se mi automaticky začal alokovat do short swing breakout systémů, které jsem vyvinul po covidu. Ty zde zatím nesdílím, protože například minulý rok tyto systémy prakticky jen prodělávaly a už sem s nimi pomalu přestával mít trpělivost. Tak uvidíme, jak zafungují nyní. Nicméně právě to, že jsem je do portfolia nasadil bylo výsledkem zkušenosti s MR3000L v covidu, kdy jsem žádné váhy neměnil (a taky situaci nakonec přežil ok).
Zdravím Petře,
budete nějak upravovat své obchodování vzhledem k tomu, co se nyní děje na trzích? Nebo obchodování necháváte běžet pořád stejně?
Nevím, jak k obchodování v této situaci přistupovat, jelikož jsem to nezažil. Mají se strategie dále obchodovat tak, jak jsme si je na základě testu nastavili, nebo by zde měli nastat nějaké úpravy? např. úprava jednotlivých vah strategie. Děkuji
Ad otevírací cena - praxe ukazuje, že je lepší skript spouštět například v 15:31:15. Mám pocit, že TWS bývá v první minutě nějak přehlcená a ne vždy vrátí to, na co se jí ptáme. Spouštím po těch 15:31 a zcela bez problémů.
Ad ta potvrzení - určitě je to nějaká otázka toho, jak si můžete nastavit TWS. Já spouštím zcela automaticky a nic potvrzovat nemusím.
Dobrý den,
u mně verze 0.0.62 funguje dobře, ale musím používat vlastní výpočet benchmarku.
portfolio.index = pd.to_datetime(portfolio.index)
portfolio = portfolio.sort_index()
benchmark_price = yf.download('^GSPC', start=portfolio.index.min(), end=portfolio.index.max())['Close']
benchmark_returns = benchmark_price.pct_change().dropna()
benchmark_returns = benchmark_returns.reindex(portfolio.index).fillna(0)
pak u řádku reportu nahradím benchmark uvedený titulem na obsah načtený z proměnné benchmark_returns.
qs.reports.metrics(portfolio["Total_chg"], benchmark=benchmark_returns)
B.
Zdravím, mám nějaké menší problémy:
1) 15:31 se mi nenačte otevírací cena, tím pádem se ukončí script. Někdy se mi podaří 15:32 - 15:35.Potom Ok.
2) U simu se mi příkazy vyplní bez potvrzení, ale u live musím odeslat "Transmit". ( asi je potřeba někde zrušit v TWS.
3) Musím potvrzovat propojení "connect" a to dvakrát. Chtěl bych spouštět dávkou a nevím jak na to.
Diky za reakci
I ja k tomu nakonec pristoupim stejne. Tzn. kazdy report je samostatny a dividendy jsou za me jeden report (od noveho uctu) pro oba ucty
Hezky vikend
Aktualizovaná výkonnost strategií dashboardu k 5.4.2025:
V akciových trzích vládnou opravdu silné výprodeje díky ohlášeným Trumpovým clům.
Od minulého týdne už se toho u mě ale na systematickém účtu tolik nedělo. SMO NDX je bez pozic, v intradenním breakoutu jsem měl jen několik obchodů (zlato a bitcoin) a ve swingových strategiích příliš živo nebylo (až na pátek, kdy se mi otevřely nové pozice).
Byť mám za sebou v prvním čtvrtletní na účtu desítky, ne-li stovky obchodů (nepočítal jsem), jsem na svém účtu u IB prakticky "na nule". Což z pohledu toho, co předvádí trhy jako celek je vlastně docela dobrý průběžný výsledek:
Equity mého obchodování intradenního breakoutu u IB (jde o součást výše uvedeného screenu z IB):
Takto vypadají mé denní zisky/ztráty (vztaženo ke kapitálu 100K dolarů):
V dubnu jsem zatím se strategií neměl mnoho ziskových dnů, tak věřím, že brzy přijde opět plodnější období. Dlouho jsem neměl například signál na QQQ/SPY a tudíž se mi neobchodovaly ani opce. Jejich živá equity vs SPX ovšem vypadá nyní docela působivě:
Zelená křivka stav opčního účtu, modrá index S&P 500.
Pro zajímavost - takto vypadá letošního backtestová výkonnost trhu QQQ skrz základní podobu vyvíjeného momentum intradenního systému:
Zisk cca 7,5% - je patrné, že tento přístup může solidně diverzifikovat stávající breakout.
Server od roku 2003 vydává
Centrum finančního vzdělávání, s.r.o. info@financnik.cz
Upozornění: Všechny informace poskytované na Financnik.cz jsou určeny výhradně ke studijním účelům témat týkajících se obchodování na burze a neslouží v žádném případě coby konkrétní investiční či obchodní doporučení. Provozovatel serveru ani jednotliví autoři nejsou registrovanými brokery či investičním poradcem ani makléřem. Jsou-li na stránkách zmiňovány konkrétní finanční produkty, komodity, akcie, forex či opce, vždy a pouze za účelem studia obchodování na burze. Vydavatel serveru není zodpovědný za konkrétní rozhodnutí jednotlivých uživatelů. Burzovní obchodování a investování s finančními instrumenty (a komoditami obzvláště) je vysoce rizikové. Rozhodnutí obchodovat komodity a akcie je odpovědností každého jednotlivce a jedině on sám nese za svá rozhodnutí plnou odpovědnost. Nikdy se nepouštějte do obchodů, jejichž podstatě plně nerozumíte. Pamatujte, že burza má svá pravidla, kterým je třeba porozumět, než začnu riskovat své vlastní peníze!