Prohledat Finančník.cz
Zobrazeny výsledky pro štítek 'tradestation'.
Nalezeno výsledků: 6
-
TradeStation je robustní obchodní platforma známá svými kvalitními daty, programovatelností a rychlými exekucemi, což ji činí vhodnou volbou pro aktivní systematické obchodníky. Ačkoli byla založena v roce 1982 a tradičně se zaměřovala na zkušené obchodníky s vyššími účty, v posledních letech se snaží přilákat i méně zkušené investory. Nedávno společnost například zrušila minimální požadavky na založení účtu, zavedla kryptoměny a zrušila poplatky za používání platformy, pokud obchodník aktivně neobchoduje. TradeStation nabízí bezproblémové obchodování s akciemi, ETF, opcemi a futures. Kromě toho nabízí bezplatná tržní data a žádné měsíční poplatky za platformu. V květnu 2022 představila TradeStation své vylepšené API, přes které je možné obchodovat skrz nejrůznější skripty, ale získávat i data, která jsou v platformě k dispozici. Poplatky za obchodování jsou popsány zde: https://www.tradestation.com/pricing/#et_pb_tab_1. Pro tradery v USA nabízí TradeStation obchodování bez poplatků, obchodníci mimo USA platí komise. U akcií je minimální komise 5 USD, což službu dělá pro menší účty výrazně dražší než Interactive Brokers. Velmi konkurenční komise ale společnost nabízí u Futures, kde jsou ceny podobné jako u Interactive Brokers. TradeStation je zajímavou volbou zejména pro automatizaci obchodování. Skrz jazyk EasyLanguage lze v platformě programovat jak pokročilé skenery, tak automatizované systémy, které mohou běžet na serverech společnosti. K dispozici je i funkční paper účet, na kterém lze automatizované obchodování simulovat. Základní představu o práci s platformou můžete získat v našem seriálu Pracujeme s TradeStation.
-
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
-
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é.
-
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. Díly seriálu: Pracujeme s TradeStation (1) Pracujeme s TradeStation (2) Pracujeme s TradeStation (3)
-
V dnešním díle našeho seriálu postoupíme od teoretického úvodu k praxi. Ukážeme si konkrétně jak v programu TradeStation naprogramovat triviální "obchodní strategii" a jak porozumět jednotlivým položkám kódu. Pojďme se rovnou pustit do práce s přípravou kódu našeho jednoduchého systému. Ten bude spočívat ve vstupu do krátké pozice v případě, že se indikátor CCI překříží s nulovou linkou. Věřím, že nemusím zdůrazňovat, že dnešní triviální příklad zde vytváříme čistě pro demonstraci a nejde o kompletní obchodní systém, který by byl připraven pro aplikování do trhu - přípravu takového si naznačíme v některém budoucím díle seriálu. Pravidla pro automatizovaný obchodní systém (nebo jeho dílčí část) se v rámci TradeStation nazývají strategie a vytvářejí se v okně strategy. To se vyvolá nejsnadněji přes ikonku EasyLanguage v tzv. shortcut liště - svislé liště s ikonkami, která se nejčastěji zobrazuje na levé straně programu. Pokud lištu s ikonkami nemáte v TradeStation zobrazenou, vyvoláte ji přes hlavní horní menu View > Shortcut Bar (Ctrl + Shift + S). Kliknutím na ikonku EasyLanguage se rozbalí kontextové menu, ve kterém v případě založení nové strategie zvolte New EasyLanguage Document > Strategy. Mimochodem - na uvedeném seznamu je vidět, jaké množství nejrůznějších typů kódu lze v TradeStation vytvářet. V druhém kroku nás TradeStation vybídne k založení nové strategie. TIP: všechny strategie se ukládají na disk do jednoho adresáře a je proto dobré, připravit si nějakou vlastní konvenci řazení strategií v rámci adresáře. Zejména v testovacím období se vám jinak stane, že se v nejrůznějších strategiích přestanete orientovat. Osobně si např. testovací strategie vytvářím s tečkou na začátku, takže se mi řadí na začátek výpisu v adresáři. V rámci založení nové strategie máme možnost vybrat si také šablonu, která nám do dokumentu vloží určitou základní pomocnou osnovu, jak by strategie měla vypadat a základní příkazy, které by měla obsahovat. V tuto chvíli si pojďme vybrat strategii se šablonou (template) None a začít "s prázdným papírem". Každá základní strategie by v TradeStation měla obsahovat několik prvků. Ne všechny jsou povinné, ale většina těchto prvků je natolik praktická, že je dobré se je naučit v kódu používat od začátku. Aby byl náš tutoriál co nepraktičtější, pojďme si strukturu celého našeho dnešního příkladu ukázat rovnou na kódu: V kódu si všimněte, že různé příkazy, nebo chcete-li slova, mají různou barvu. Světle modře jsou automaticky vyznačeny systémové příkazy - tj. takové, které v rámci programovacího jazyka EasyLanguage mají předem definovaný význam a které je třeba se naučit používat. Fialově jsou zobrazeny existující funkce (na screenshortu je fialově zobrazeno slovo CCI. Tj. jde o odkazy na existující kódy, zajišťující příslušnou funkcionalitu. Nejčastějším příkladem funkce jsou nejrůznější indikátory - ty jsou pochopitelně v programu již naprogramovány a obchodník se tak může na danou funkci pouze odkázat. Např. tím, že napíše CCI, čímž vyvoláme funkci provádějící aktuální výpočet indikátoru CCI. Zeleně jsou zobrazována slova, která nemají žádný programový význam a vesměs slouží pro orientaci uživatele. Jako první řádek našeho jednoduchého obchodního systému vidíme: Inputs: CCIperioda(20); Jde o definovaní vstupních konstant a příkaz Inputs: naleznete v kódech drtivé většiny obchodníků pracujících s TradeStation. Je to velmi jednoduchý způsob jak definovat konstanty, které budeme v kódu používat a potřebujeme jim přiřadit určitou hodnotu. Jako řada programovacích jazyků, také EasyLanguage potřebuje dopředu znát jména konstant, se kterými budeme v rámci kódu pracovat. Není třeba nastavovat žádný jejich typ, stačí je pouze programu představit - napsat jejich jméno a do závorky výchozí hodnotu. Inputs: CCIperioda(20); znamená, že budeme v kódu používat naši konstantu se jménem CCIperioda a tato konstanta bude mít hodnotu 20. Proč vkládáme hodnotu 20 "složitě" přes konstantu a nepoužijeme v kódu přímo dané číslo? To má dva základní důvody: ve složitějších kódech se můžeme na konstantu odkazovat na řadě míst kódu. V takovém případě už by bylo mnohem složitější případnou číselnou konstantu změnit (změnu bychom museli složitě provádět na mnoha místech dokumentu, takto stačí změnit číslo pouze v definici konstanty). TradeStation s hodnotami konstant dále pracuje a tyto hodnoty je možné později měnit v nastavení strategií, případně indikátorů atd., přes přehledný panel bez nutnosti zásahu do programového kódu. A především je možné přes konstanty velmi snadno provádět tzv. optimalizaci - nechat TradeStation projít řadu možných parametrů dané konstanty (tj. v našem případě např. CCI v rozsahu 9-50) a sledovat, jaké dopady to bude na danou strategií mít. Tzn. definování konstant pomocí příkazů Inputs je velmi praktické a používané. Konstant můžeme definovat samozřejmě více než jednu - v takovém případě je oddělujeme čárkami. Za poslední konstantou je třeba vložit středník. Středníkem vždy ukončujeme každý příkaz v rámci EasyLanguage. Příklad definování 3 konstant najednou: Inputs: CCIperioda(20), mujstoploss(120), mujprofittarget(300); Takto zapsaný řádek připravuje v rámci EasyLanguage tři konstanty obchodníka, se kterými se dále bude pracovat v kódu strategie. Všechny tři konstanty budou mít na začátku příslušné hodnoty - tj. např. konstanta mujprofittarget bude mít hodnotu 300 atd. Jak již bylo řečeno výše, výhodou tohoto nastavení je zejména skutečnost, že konstanty bude možné velmi efektivně zkoumat programem pomocí tzv. optimalizace - automatického hledání nejrůznějších kombinací parametrů a zobrazování jejich dopadu na strategii. Konstanty zadané pomocí Inputs lze později velmi snadno konfigurovat v nastavení strategie. Snadno tak můžeme např. sledovat dopad různého stop-lossu. Výpočet provede TradeStation v rámci zvoleného rozsahu zcela automaticky (pomocí nástroje Optimalizace). Druhý řádek obsahuje: Variables: myCCI(0); Tento řádek je velmi podobný řádku Inputs s tím rozdílem, že se definují proměnné. Ty představují pro obchodníka srozumitelná "slova", která později naplňuje určitým obsahem (různé výpočty atd.) a dále s nimi pracuje. Proměnné uvedené v řádku Variables nelze optimalizovat, je to čisté "představení" všech používaných uživatelských proměnných a jejich prvotní naplnění hodnotou. Prvotní hodnotu udává číslo zapsané v závorce. V našem případě pracujeme s námi vymyšlenou proměnnou myCCI, která při prvním spuštění kódu bude mít hodnotu nula. Všechny proměnné použité v kódu musí být uvedeny buď v řádku Inputs nebo Variables, jinak nebude kód fungovat. Budeme-li ve složitějším kódu pracovat s více proměnnými opět můžeme jejich představení řetězit tak, že je uvedeme do jednoho řádku, ukončeného středníkem: Variables: myCCI(0),starttime(900),endtime(1200); Máme-li v kódu mnoho konstant a proměnných, lze zápis udělat na více řádků - každý musí začít označením Variables, nebo Inputs a musí končit středníkem. Třetím řádkem máme ukončeny veškeré "přípravy kódu" a dostáváme se již k samotné strategii. EasyLanguage vychází z běžných jednoduchých programovacích jazyků a všem obchodníkům, kteří kdy pracovali s libovolným programovacím jazykem bude zápis patrně velmi srozumitelný. Pro absolutní neprogramátory je pak porozumění pouze věcí určitého cviku a praxe. Uvidíte, že na konci našeho seriálu budete schopni jednoduché strategie připravovat bez jakýchkoliv problémů. myCCI=CCI(CCIperioda); Tento řádek přiřazuje naší proměnné myCCI hodnotu funkce CCI s příslušnou periodou. V našem konkrétním úvodním příkladu je tento řádek skoro nadbytečný, protože bychom mohli dále pracovat rovnou s funkcí CCI(CCIperioda), ve složitějších konstrukcí se však proměnným nevyhneme a je tak dobré si na jejich přítomnost zvyknout. if myCCI crosses below 0 then Sellshort ( "CCI_short" ) next bar at market ; Poslední řádky kódu obsahují samotnou logiku našeho jednoduchého ukázkového systému. Angličtináři si patrně dokáží význam odvodit na první pohled. Modře vytištěné jsou příkazu jazyka EasyLanguage, které je třeba ovládat, a jejichž význam a seznam lze nalézt v uživatelské příručce nebo v nápovědě programu. příkaz if znamená klasickou programovou logiku, nebo-li "jestli". Syntaxe if je následující: if podmínka then ** základní zápis podmínky; následují příkazy, které se mají vykonat při splnění podmínky. V našem konkrétním příkladě tedy podmínka znamená: pokud hodnota myCCI klesne pod hodnotu 0 (jinými slovy překříží nulovou linku) potom vykonat otevření krátké pozice s názvem "CCI short" následující bar za market. Podmínky mohou být samozřejmě výrazně košatější a lze je jednoduše řetězit klasickými operandy jako je AND a OR. Tj. chceme-li např. přidat další podmínky, že příkaz se má vykonat pouze v čase 9 - 15 hodin, můžeme zadat: if myCCI crosses below 0 AND time>900 AND time Sellshort ( "CCI_short" ) next bar at market ; Co se základních příkazů pro otevírání pozic v TradeStation týče, potom: pro dlouhou pozici: otevřít=buy, uzavřít=sell pro krátkou pozici: otevřít=sellshort, uzavřít=buy to cover (pozor všimněte si, že příkaz sell neslouží k otevření krátké pozice, ale k uzavření dlouhé, a to je v pojetí EasyLanguage rozdíl!) Pokyny lze vykonávat za market, jako v našem příkladu, ale samozřejmě i pomocí dalších typů obchodních příkazů jako je limit nebo stop. Tomuto se budeme ale věnovat v některém dalším díle seriálu v rámci konkrétního příkladu. Ač to na první pohled může vypadat složitě, po určité praxi lze i s několika základními funkcemi a příkazy, kterým se budeme v tomto seriálu věnovat, poskládat řadu zajímavých systémů, které nemusí nutně fungovat jako plně automatizované, ale mohou i začínajícím uživatelům programu pomoci s testováním základních myšlenek, které lze posléze pilovat např. pomocí jemného diskréčního testování. V příštím díle seriálu si ukážeme, jak náš první ukázkový systém aplikovat do různých trhů a vyhodnocovat jeho výsledky. Díly seriálu: Pracujeme s TradeStation (1) Pracujeme s TradeStation (2) Pracujeme s TradeStation (3)
-
Komunita traderů okolo Finančníka se za poslední rok velmi rozrostla a na setkání obchodníků je znát, že se vytvářejí skupinky traderů diskutující práci v různých pokročilých specializovaných obchodních programech. Řada z vás patrně ví, že s Tomášem považujeme za nejsilnější analytický nástroj pro tradery MS Excel, nicméně jelikož jsme strávili několik let intenzivní prací s dalšími programy, rozhodli jsme se připravit seriály, které by měly ulehčit začátky všem, kteří se rozhodnou tyto programy používat. Přestože půjde o specializované informace určené pouze těm traderům, kteří se rozhodli používat daný software, věříme na druhou stranu, že naše zkušenosti mohou ostatním pomoci výrazně se posunout dále a přeskočit mnoho měsíců studia, které jsme museli problematice věnovat my. V tomto seriálu se budeme věnovat programu TradeStation. Seriál bude pojat hodně prakticky. Dnes začneme obecnějším úvodem, v dalších lekcích si ale probereme použití různých funkcí na praktických příkladech. Řadu přístupů si ukážeme na konkrétním programování některé ze strategie WoodiesCCI. Cílem celého seriálu je samozřejmě technické know-how týkající se programování TradeStation a nikoliv vytváření konkrétního finálního mechanického obchodního systému, pokusím se ale do textu zapracovat konstrukce, které je jinak v manuálu k TradeStation těžké objevit (ukázky money-managementu, časový stop-loss, omezování obchodování v průběhu dne atd.). Co je TradeStation Jako v každém prvním dílu delšího seriálu si nejprve nástroj, se kterým budeme pracovat, pojďme alespoň ve stručnosti představit. Program TradeStation byl dlouhou dobu patrně nejrozšířenější analytický software pro technické obchodníky. V zásadě jde o velmi univerzální platformu umožňující obchodování, zobrazování grafů, zakreslování technických formací a především programování skutečně všeho možného - od vlastních indikátorů, funkcí až po kompletní mechanické obchodní systémy. TradeStation je velmi flexibilní díky vlastnímu programovacímu jazyku EasyLangauge. Podrobnější představení programu naleznete v našem článku Backtesting: TradeStation. Dnes již existuje na trhu celá řada programů, které nabízejí více či méně podobné funkce jako TradeStation (velmi kompletní přehled naleznete v článcích Jaký software pro backtesting a vytváření vlastních obchodních systémů a indikátorů? a Jaký software pro backtesting a vytváření vlastních obchodních systémů a indikátorů? (2) a řada obchodníků od TradeStation přešla k jiným programovým řešením, přesto je dnes TradeStation stále jeden z nejvyhledávanějších programů v této oblasti. V Evropě Tradestation působí pod značkou TradeStation Global a své brokerské služby nabízí coby tzv. introducing broker pro Interactive Brokers. Tedy klientské účty jsou otevírány u brokera Interactive Brokers, TradeStation Global pak klientům poskytuje dodatečnou podporu a také svůj kompletní software TradeStation. Ten je postaven na stejném základu jako americký originál, ale je napojen na služby a data Interactive Brokers. Podrobnosti viz zde. Základy EasyLanguage Výhodou specializovaného obchodního jazyka je samozřejmě jeho připravenost pro prostředí tradingu. Trader nemusí řešit programování základních indikátorů, obchodních příkazů, práci s grafy - vše je připraveno a stačí pospojovat dohromady. Obrovskou výhodou TradeStation je také práce s historickými daty - je-li počítač s TradeStation připojen on-line k Internetu (což je předpokládám u většiny obchodníků), jsou přes dataserver výrobce v programu k dispozici všechna historická data trhů, které má obchodník k dispozici (myšleno klasická minutová data a výše, ticková data poskytuje TradeStation cca za půl roku zpět) - tj. stačí zvolit příslušný symbol a data se automaticky stáhnou z Internetu. Data pak lze v EasyLanguage volat velmi snadno. V rámci programového kódu se nejčastěji data referují následovně: Datové slovo Zkratka Popis Open O Otevírací cena daného baru High H Nejvyšší cena daného baru Low L Nejnižší cena daného baru Close C Uzavírací cena daného baru Volume V Celkové volume v rámci baru OpenInt I Open interest v rámci baru V EasyLanguage lze používat jak celá programová datová slova, tak příslušné zkratky. Úplně jednoduchý pokyn v rámci EasyLanguage tak může například znít: if Close>100 then ...... což můžeme také napsat jako if C>100 then .... Výše uvedená konstrukce představuje základní programovou podmínku, říkající: pokud (příkaz if, ke kterému se dostaneme podrobněji v některém z příštích dílů seriálu) bude cena na close úsečky vyšší než 100 pak se provedou další příkazy (např. otevření pozice atd.). Jak bude program vědět, ke které úsečce, je ono "Close" myšleno? Které Close máme na mysli? Toto programu specifikujeme později tím, že vytvořený kód (indikátor, strategie atd.) aplikujeme na nějaký konkrétní graf s konkrétním timeframe. Pokud kód aplikujeme na graf s timeframe 5 minut (tj. jedna úsečka bude představovat změnu cenu příslušného trhu v průběhu 5 minut), pak se close bude vztahovat na uzavírací cenu pětiminutového baru. Vytvořený kód lze samozřejmě aplikovat jak na grafy zobrazované v reálném čase - tak jak přicházejí data z burzy, tak na historická data. V případě aktuálně zobrazovaných grafů bude TradeStation podmínku aplikovat na každou poslední úsečku daného grafu, v případě historického backtestu TradeStation "projede" zvolený graf "čárku po čárce" a zvolenou strategii tak aplikuje na všechny bary v grafu a u každého baru bude testovat, zda-li je Close vyšší než 100 a pokud ano, tak provede zbytek kódu. Tímto poměrně velmi jednoduchým způsobem lze vytvářet komplexnější a složitější podmínky a systémy, které mohou sloužit mj. k zobrazování různých formací v realtime grafech, backtestování našich podmínek na historických datech, k vytváření automatizovaných obchodních systémů atd. V příštím díle seriálu si ukážeme, jak si v TradeStation vytvořit již komplexnější (byť stále jednoduchý) obchodní systém a aplikovat jej na aktuální nebo historická data. Díly seriálu: Pracujeme s TradeStation (1) Pracujeme s TradeStation (2) Pracujeme s TradeStation (3)