Jump to content
Co nového? Mé kurzy
Články a tutoriály:
Hledat v
  • Více možností...
Najít obsah, který ...
Hledat výsledky v ...
Seriály Komoditní Manuál Psychologie obchodování
  • Pracujeme s TradeStation (3)

    V minulém díle našeho seriálu jsme si ukázali, jak v programu TradeStation připravit triviální testovací "obchodní systém". Dnes náš připravený kód aplikujeme na data a podíváme se jak v TradeStation zkoumat výsledky našich automatizovaných backtestů.

    Máme-li napsaný kód obchodní strategie (viz minulý díl), je třeba ještě poslední krok, před nasazením na data kód ověřit. Ověření se provádí kliknutím na tlačítko Verify v horní nástrojové liště editoru EasyLanguage (tlačítko se zeleným zaškrtávátkem). V rámci této operace TradeStation zkontroluje, zda-li je kód po programátorské stránce v pořádku a případně upozorní na nesrovnalosti, které je třeba opravit.

    Jakmile máme kód ověřený, již nic nebrání jej zkusit aplikovat na realtime nebo historická data.

    Otevření grafu, výběr timeframe

    Nový graf v TradeStation otevřeme kliknutím na ikonu Chart Analysis:

    Otevře se graf obsahující symbol a timeframe, se kterým bylo v programu pracováno naposledy. Změnit symbol a timeframe lze přes volbu hlavního menu Format > Format Symbol (volba je dostupná také přes kontextové menu, které se vyvolá kliknutím pravého tlačítka myši do grafu).
    TIP: TradeStation lze nastavit také tak, aby se okno s formátem symbolu zobrazilo vždy po kliknutí na tlačítko Chart Analysis. Volbu lze nastavit přes hlavní menu, položka View > Chart Analysis Preferences. Zde v záložce General zaškrtněte volbu Promt for format when creating new Chart Analysis windows.

    V okně Format Symbol lze nastavit vše, co se volby zobrazovaného trhu týče. Nejvíce se pracuje se záložkou Settings (nastavení). Do pole Symbol je třeba vložit příslušný symbol trhu (který lze vyhledat přes tlačítko Lookup). Tip: Symbol začínající zavináčem (@) představuje tzv. kontinuální kontrakt - tedy nekonečný kontrakt pospojovaný z jednotlivých kontraktních měsíců. Takový kontrakt je nezbytný pro automatizovaný backtesting, ale zejména při pozičním obchodování je třeba se problematice věnovat trochu blíže a pochopit, jak je kontrakt poskládán, jaká rizika a náklady představuje přerolování atd. Zkratka @ER2 tak představuje kontinuální graf našeho oblíbeného trhu emini Russell 2000. V rámci definování symbolu umožňuje TradeStation ještě další upřesnění formátu dat. Symbol můžeme zakončit tečkou a některým z definovaných aliasů. Např. ".D" znamená zobrazování pouze denních elektronických dat (např. @ES.D zobrazí kontinuální graf denních cen trhu mini S&P, @ER2.D kontinuální graf trhu denních cen trhu emini Russell 2000 atd.) To může být zajímavé pro testování různých intradenních strategií, při kterých s nočními daty nepracujeme. Další alias je např. ".P", který zajistí zobrazení pouze cen pitového trhu.
    V našem příkladu zadáme do pole "Symbol" @ES.D - testovací strategii aplikujeme na trh mini S&P, přičemž máme zájem pouze o denní data.

    Dále je třeba vybrat:
    Select Interval - příslušný timeframe (v nabídce jsou tickové, volume grafy, intradenní grafy atd.). Pro náš test zvolíme intradenní graf (intra-day) s periodou 60 minut (do pole Interval Setting/Minute Bar vložíme 60).
    Dále musíme v položce Range specifikovat interval, za který se mají zobrazit historická data. Pozn.: TradeStation funguje tak, že data jsou dostupná ze serveru výrobce a po stažení se pro další použití ukládají na lokální disk. První stažení dat tak může trvat déle (hodně záleží, kolik dat si ze serveru vyžádáme). V našem příkladu máme vybráno zobrazení posledních 200 dnů historie.

    To jsou všechny základní parametry, které pro zobrazení našeho grafu potřebujeme. Podle potřeb je možné nastavit i další parametry (např. barevnost grafu, práci s měřítkem nebo přesné definování obchodních hodin trhu).

    Po kliknutí na OK se zobrazí graf trhu mini S&P s nastaveným timeframe 60 minut.

    Přiřazení studie do grafu

    Nyní musíme do grafu přiřadit vytvořený obchodní systém = studii. To lze provést přes hlavní menu, položka Insert > Strategy (nástroj je dostupný také z kontextového menu, které se zobrazí po kliknutí pravým tlačítkem myši do grafu).

    V rámci okna Insert Strategy zvolte vytvořenou studii a klikněte na OK. Otevře se okno "Format Analysis Techniques & Strategies", nabízející přehled všech strategií, které jsou v rámci daného grafu aplikovány:

    V přehledu (který lze jinak vyvolat přes menu Format > Strategies) vidíme aktuální parametry nastavení systému (číslo 20 je hodnota naší jediné použité konstanty CCIperioda - kliknutím na číslo jej lze snadno změnit). Ve sloupci Status je zobrazeno, zda-li je příslušná strategie aktivní (ON) nebo neaktivní (OFF) - toto lze přepínat tlačítkem Status. Poslední čtyři sloupce udávají, jaké vstupní a výstupní mechanismy strategie obsahuje - v našem případě je vidět, že strategie obsahuje pouze vstup do krátké pozice. Kliknutím na Close okno zavřeme.

    V tuto chvíli máme v našem grafu aplikovánu strategii, kterou jsme si vytvořili v minulém díle seriálu. V grafu se však nevytvořily žádné prodejní signály. Proč? Protože naše jednoduchá testovací strategie neobsahuje žádné ukončení otevřené pozice, obsahuje pouze podmínku pro vstup do krátké pozice.

    Strategii je tak třeba buď rozšířit o další kód pro uzavření otevřených pozic, nebo použít další strategii, která bude pozice uzavírat. Taková strategie je v TradeStation připravená a pro testování jednodušších systémů je velmi snadno použitelná - jmenuje se "_Stop & Targets". Strategii vložíme do grafu stejným způsobem, jako již bylo popsáno výše - tedy přes Insert > Strategy. Okno "Format Analysis Techniques & Strategies" pak bude vypada následovně:

    Strategie "_Stop & Targets" obsahuje již připravený kód pro práci s profit targety a stop-lossy. Je však třeba nejprve nastavit potřebné konstanty:

    Kliknutím na jméno strategie "_Stop & Targets" v okně "Format Analysis Techniques & Strategies" (vyvoláme přes menu Format > Strategies) se otevře panel, ve kterém můžeme nadefinovat obsah jednotlivých konstant. Do políčka ProfitTargetAmt můžeme zadat dolarový profit target, do políčka StopLossAmt dolarovou hodnotu stop-lossu, BreakevenFloorAmt reprezentuje dolarovou hodnotu otevřeného zisku, po jehož dosažení je stop-loss posunut na vstup. Strategie obsahuje dále předefinované funkce na posouvání stop-lossu a funkci ExitOnClose - tuto nastavme na "true", což znamená, že pozice bude ukončena na konci obchodního dne (nebudeme držet pozici přes noc). Mimochodem - pokročilejší strategie budou samozřejmě zahrnovat podobné podmínky (patrně i v sofistikovanější podobě) ve vlastním kódu obchodníka - v rámci EasyLanguage není jejich programování příliš složité. Pokud se chcete podívat jak je strategie "_Stop & Targets" naprogramovaná a kód použít pro vlastní práci, je možné se do kódu snadno podívat. Strategii otevřeme kliknutím na ikonu EasyLanguage > Open EasyLanguage Document a výběrem strategie "_Stop & Targets" z nabídky dostupných strategií.

    V rámci okna "Format Analysis Techniques & Strategies" je pro backtesting důležité ještě nastavit některé parametry obchodování. To se provádí přes tlačítko Properties... Ve vlastnostech strategie můžete nastavit např. skluz v plnění, komise a především je důležité zapnout funkci Back-testing resolution. Tato funkce zajistí, že se program "dívá" i na průběh "uvnitř" jednotlivých úseček (na úrovni tickových nebo minutových dat - vše lze v okně navolit). Zejména při vyšším timeframe (jako např. v našem případě) tato funkce zajistí, že TradeStation dokáže správně identifikovat, co se děje v rámci každého 60 minutového baru a správně tak pracovat např. s posouváním stop-lossu a uzavírání pozice na stop-lossu nebo profittargetu.

    Po uzavření okna "Format Analysis Techniques & Strategies" by již graf měl obsahovat také graficky zobrazené vstupy a výstupy naší strategie aplikované na celou zvolenou historii dat:

    Vstupy a výstupy si samozřejmě můžeme prohlížet v rámci grafu (patrně si budeme chtít do grafu přidat také CCI indikátor - to provedeme přes hlavní menu Insert > Indicator a výběr CCI indikátoru. Pozor - nezapomeňte pak v okně "Format Analysis Techniques & Strategies" nastavit v záložce Analysis Techniques správnou periodu indikátoru - vše již funguje stejně, jako bylo popsáno u nastavení parametrů strategie) ale zcela jistě budeme chtít vidět souhrnné výsledky - základ analýzy každého obchodního systému.

    Celkovou analýzu výsledků aplikovaného systému získáme přes volbu View > Strategy Performance Report (Alt + Shift + P). Tato volba nám poskytne komplexní informace o výkonnosti daného systému vč. grafů equity křivek a dalších:



    Nyní máme prostor dál naši strategii efektivně zkoumat, případně rozvíjet do plně automatizovaného obchodního systému (který lze z TradeStation pochopitelně rovnou obchodovat). Připomeňme, že pomocí optimalizace můžeme např. zkoumat dopad změny výstupních parametrů, testovat různé přístupy práce se stop-lossem, sledovat změnu/robustnost systému s různým natavením periody indikátoru atd. atd. Příprava obchodní strategie je pochopitelně velmi dlouhodobý proces, který vyžaduje nejen znalosti ovládání programu, ale samozřejmě i obchodování a především nekonvenční myšlení. Prezentovaný systém - jak jsme již psali na začátku seriálu - byl uveden jen jako čistě ilustrační tak, aby byl kód co nejjednodušší a pochopitelný pro začínající uživatele programu. Jak si ale dokážete představit, také pro obchodníky, kteří nedokáží postavit plně automatizovaný systém, může i různé dílčí testování částí jejich obchodních systémů přinést opravdu cenné informace. Příště se v našem seriálu podíváme na trochu složitější kód a další "vychytávky" TradeStation.

    17.1.2007

    Petr Podhajský

    Fulltime obchodník věnující se tradingu více než 15 let. Specializace na systematické strategie obchodované na futures a akciích. Oblíbený styl obchodování - intradenní s využitím orderflow. Poslední roky pak stavba automatizovaných portfolio systémů.


    Mohlo by vás dále zajímat

    Tradestation - současné přihlášení

    Dobrý den všem,
    poradíte někdo jak se přihlásit k účtu Tradestation současně na 2 pc? Na jednom k Live a na druhym k Demu. Vždy mně ted druhý login zruší předchozí přihlášení nezávisle na tom, zda se přihlašuji k Live nebo Demu. 
    Díky za radu

    Je mozne si vyskusat Tradestation na deme?

    Zdravim,

    Chcel by som sa spytat ci je mozne si vyskusat a zoznamit sa s Tradestation platformou na deme? Nasiel som na stranke TS informaciu o "Simulatore" ale nebol tam link aby som sa dozvedel viac.

    Ak ano , ako dlho toto demo trva?

    Dakujem za pomoc, skutocne som hladal ale nenasiel som to nikde na ich stranke.
    Jan

    Breakout první korekce - automatické testování v TradeStation

    Dnes navážu na svůj minulý článek „Studujeme intradenní systémy - breakout první korekce“ a prakticky vám ukážu, jak přibližně složité je vytvořit automatický test strategie, jehož výsledky byly v článku uvedeny.
    S Tomášem skoro na každém našem kurzu diskutujeme na téma, zda-li obchodní strategie programovat či nikoliv. Odpověď je vždy jednoznačná – pokud člověk s tradingem začíná, měl by se z naší zkušenosti programování čehokoliv vyhnout. Je totiž jen velmi nepatrná šance, že začátečník, který má o burze jen minimální povědomí, naprogramuje něco, co by mělo reálnou šanci „samo“ vydělávat peníze. Obzvláště to platí v oblasti intradenního obchodování. Jediné, co může začínajícího tradera posunout vpřed je studium grafů. A začátečníkům, kteří se snaží dívat na trhy skrz mechanické programování, bohužel navždy unikají ty nejzákladnější principy.
    Situace se pochopitelně mění u zkušených obchodníků. Pokud již rozumíte principům obchodování, máte dobře osahané své strategie (nejlépe skrz dlouhodobější živé obchodování), mohou vám různé programové nástroje zvýšit efektivitu nejrůznějšího testování nebo pomoci při nejrůznější automatizaci. Osobně používám programovatelné nástroje pro hledání tendencí nebo problematických období. Jednoduše řečeno jsem si vědom, že nejsem žádný programátor a nejsem schopen naprogramovat veškeré nuance obchodních přístupů, které používám. Většinou si tak vytvořím nějaký jednoduchý kód vystihující z principu určitou myšlenku a mohu chtít mechanicky otestovat její robustnost v čase předtím, než ji začnu jemně testovat ručním backtestem.
    Nástrojů, ve kterých lze testovat mechanické principy existuje obrovské množství. Poměrně dost tipů můžete získat ve starším článku „Jaký software pro backtesting a vytváření vlastních obchodních systémů a indikátorů?“. Osobně dnes používám programy TradeStation a Microsoft Excel.
    Krátce o TradeStation
    TradeStation je brokerská analytická platforma, kombinující skoro vše, co obchodník potřebuje pro technickou analýzu a mechanické programování nejrůznějších algoritmů. Podrobněji viz např. náš seriál „Pracujeme s TradeStation (1)“. Dnes samozřejmě existují i další podobná řešení, já osobně ale upřednostňuji právě TradeStation, kterou ke své spokojenosti používám již velmi dlouho. Mezi hlavní důvody patří snadná práce s daty (v podstatě historická data vůbec neřeším, protože se mi vždy načtou od brokera, byť např. ticková data jsou zde omezená pouze na 6 měsíců), velmi rozsáhlá uživatelská komunita (když potřebuji tak na diskuzním fóru vždy najdu řešení svého problému) a samozřejmě technické možnosti. Jenom pro dokreslení obrázku - platforma je zdarma klientům TradeStation (pokud děláte alespoň skutečné minimum obchodů) nebo se platí cca 100 dolarů měsíčně (plus je třeba vždy platit poplatky burzám za jejich data), komise jsou podobné jako u InteractiveBrokers. TradeStation má pochopitelně také své ALE – vývoj platformy je poměrně dost pomalý a např. až letos do platformy přibyla možnost obchodování rangebars (vteřinové grafy pořád chybí) a pro obchodníky z Evropy je nepříjemné, že prakticky příliš nelze obchodovat evropské trhy.
    Podoba kódu pro testování konceptu proražení první korekce
    Abyste si dokázali udělat představu o náročnosti programování v TradeStation, přikládám svůj kód pro diskutovanou strategii proražení první korekce. Upozorňuji, že nejsem programátor, ale uživatel. Je tak pravděpodobné, že věci jdou dělat efektivněji nebo jinak. Aby byl kód přehledný, uvádím jej jako obrázek, pokud by měl někdo zájem, napište do diskuze a vložím jej v textové podobě:

    Jak vidíte, kód není příliš dlouhý. Nejprve se definují používané proměnné a vstupní hodnoty.
    Následná zhruba třetina kódu sleduje, kolik uděláme obchodů za den. V této chvíli obchoduje strategie jediný obchod denně, počítání obchodů se děje přes proměnnou numTradesToday a jakmile má tato proměnná hodnotu 1, další obchody bude software „obchodovat“ až následující den.
    Teprve až posledních několik řádků obsahuje kód samotné strategie. Obchodujeme pouze v určité hodiny (zde nastaveno přes proměnné čas 9:33 až 10:00, což je lokální čas obchodování trhu TF, budete-li chtít obchodovat např. trh NQ je třeba nastavit lokální čas o hodinu nižší, neboť TF a NQ se obchodují na jiné burze, v jiném časovém pásmu) a sledujeme, zda-li trh překoná v daném čase první korekci. V takovém případě zkoušíme nastoupit stop příkazem nad high (v případě dlouhé pozice) poslední úsečky.
    Výstupy v tomto kódu definované nejsou, protože používám předpřipravené kódy dostupné v TradeStation. Strategie ani neřeší „premarket“, protože v TradeStation můžeme strategii automaticky aplikovat pouze na data v hlavní obchodní hodiny – v našem případě zvolím „ticker“ @TF.D.
    Shrnutí
    Článkem jsem chtěl ukázat, že pro určité typy situací může být efektivní použít programové prostředky a otestovat si robustnost myšlenky tímto způsobem. Pochopitelně, že vytvoření kódu např. v TradeStation vyžaduje určitou zkušenost, ale můžete mi věřit, že sám ovládám jen minimum příkazů, většinou kód buduji systémem pokus-omyl-diskuze, ale i tak je vytvoření podobného kódu otázka maximálně několika málo hodin práce (a zkušený programátor toto pochopitelně má hotové za pár minut). Zdůrazňuji, že je nutné rozlišovat situace, pro které má mechanické testování smysl dělat, a pro které nikoliv. Pokud však obchodník buduje jednoduché strategie, které plánuje obchodovat čistě mechanicky a tyto lze naprogramovat, tak by se o to myslím mohl pokusit. Jednak proto, že si poté velmi zkrátí čas s hrubým otestováním robustnosti přístupu (aplikováním na roky historie zpět, další trhy atd) a jednak proto, že může kód použít pro zautomatizování exekucí, protože proč nenechat jednoduchou strategii tohoto typu zobchodovat počítač, pokud je vše nadefinováno mechanicky?
    Na závěr připomenu, že sám jsem diskréční typ obchodníka a mechanické přístupy testování používám většinou na vyšší timeframe (většinou denní), navíc za účelem sledování různých základních tendencí a pravděpodobností, nikoliv pro budování AOS. V rámci intradenního obchodování neobchoduji přístup, který by bylo možné naprogramovat, ale na druhou stranu se určitě nezdráhám použít nejvhodnější nástroje v případech, které jsou k tomu vhodné.
×

Důležitá informace

Na tomto webu zpracováváme cookies potřebné pro jeho fungování a analytiku, v případě udělení souhlasu také cookies pro účely cílení reklamy.