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í
  • Poradna: Neorientuji se v softwaru pro automatické obchodování

    Poslední měsíc mně přišlo několik návrhů, zda bych nemohl připravit článek, který by lépe vysvětlil rozdíl mezi programy jako AdaptradeBuilder a MultiCharts. Pokusím se dnes tedy lépe vysvětlit rozdíl mezi jednotlivými programy, které jsou určené pro stavbu automatických obchodních strategií (AOS).

    Úvod

    Začněme nejprve definováním pojmu AOS. Za AOS považuji takové strategie, které běží bez zásahu uživatele (pokud odmyslím občasnou nutnost zásahu kvůli nějakému technickému zádrhelu jako například výpadek dat apod.), čili takové, které dle předem nadefinovaných podmínek samy vstupují do trhu, samy řídí průběh obchodu a samy z obchodu vystupují. Jsou to tedy strategie, které se obchodují automaticky a nemusíme kvůli nim vůbec sedět u počítače (mojí specializací jsou v tuto chvíli automatické intradenní breakout strategie).

    Pokud chceme provozovat na svém počítači AOS, potřebujeme v podstatě software k následujícím účelů:

    1) K vývoji a definování automatické obchodní strategie. To znamená k definování a zapsání podmínek jako například "nakup dnes za open, pokud byl včerejší den pokles" apod., které následně necháme počítač automaticky zbacktestovat na historických datech.

    2) K optimalizaci obchodní strategie. Můžeme chtít například rozšířit podmínku "nakup dnes za open, pokud byl včerejší den pokles a zároveň rozpětí včerejšího dne (H-L) bylo větší než X". Jak velké má být ale X? Je lepší vstupovat, pokud včerejší den udělal rozpětí 5 bodů, 10 bodů, nebo 15 bodů? Na to se můžeme jednoduše zeptat počítače, pokud máme program, který umožňuje optimalizaci. Zadáme zkrátka a dobře "otestuj X v rozsahu 1 až 30" a počítač nám vyjede výsledky pro všechny tyto varianty.

    3) K testování robustnosti obchodní strategie. Pokud najdeme fungující podmínky a využijeme proces optimalizace, může se stát, že optimální hodnoty byly perfektně "vyladěné" na minulosti (přeoptimalizace), ale v budoucnu nebudou pravděpodobně fungovat. Potřebujeme tedy ujištění v tom, že naše optimalizované hodnoty jsou robustní a dávají nám šanci úspěchu v budoucnu. Toto je nejvíce kritická část vývoje automatických obchodních systémů, nad kterou jsem strávil nejvíce času (veškerý svůj postup prezentuji v semináři breakout strategií). Existuje řada různých postupů, abychom to nekomplikovali, nejjednodušší z nich je, že optimalizujeme na 80 % všech dat z minulosti, které máme k dispozici a finální výsledky pak pustíme na zbylých 20 % dat, která se snaží simulovat neviděnou (nejistou) budoucnost. Tomuto jednoduchému testu se říká "InSample/OutOfSample" (IS/OOS) test.

    4) K automatickému obchodování obchodní strategie.Pokud máme vytvořené podmínky, provedenou optimalizaci a provedený test robustnosti, můžeme se rozhodnout pustit strategii "live", to znamená spustit v příslušném programu v našem počítači a nechat strategii již automaticky obchodovat.

    Nyní tedy pojďme k jednotlivým programům a vysvětlení toho, co z výše zmíněných procesů pro nás přesně dělají.

    Co je MultiCharts a TradeStation

    Jsou to programy, které v plném rozsahu umožňují realizovat kroky 1-4.

    Oba programy mají k zadávání podmínek poměrně jednoduchý jazyk, který se jmenuje EasyLanguage (v překladu "jednoduchý jazyk"). Oba programy mají speciální okno (editor), které si otevřete a do něj zapíšete podmínku, kterou chcete testovat. Je třeba naučit se několik jednoduchých příkazů, které vycházejí ze základních anglických slovíček. Pokud chci například zapsat do EL (EasyLanguage) zmíněnou podmínku "nakup dnes za open, pokud byl včerejší den pokles a zároveň rozpětí včerejšího dne (H-L) bylo větší než X", napíšu:

    If //pokud

    CloseD(1) < OpenD(1) //tento řádek říká, že včera (jeden den nazpět) chceme vidět pokles

    and HighD(1) - LowD(1) < 5 //tento řádek říká, že včerejší rozpětí dne musí být menší než 5

    then //pak

    buy 1 contract this bar at market; //tento řádek říká, že pokud jsou předchozí podmínky splněny, chceme nakoupit 1 kontrakt za market příkaz

    setexitonclose; //tento řádek říká, že chceme vystoupit na konci dne

    Nyní jsme tedy vytvořili velmi jednoduchý obchodní systém. Jako další tedy takový chceme otestovat například na denním trhu S&P500. Uložíme tedy systém pod názvem "test1" a v MCH nebo TS si otevřeme denní graf trhu S&P500. Vložíme do něj systém s názvem "test1" a vybereme v menu "View Strategy Performance Report" (ukaž výsledky systému). Program automaticky otestuje podmínky na celé historii dat, kterou mu dáte k dispozici a ukáže vám equity a miliony dalších údajů o tomto obchodním systému.

    Pokud chcete, můžete také v nabídce zadat, ať vám program (po drobné úpravě kódu) otestuje různé varianty rozpětí včerejšího dne a TS/MCH vám ukáže optimalizované výsledky. Můžeme provést automaticky optimalizaci InSample a provést kontrolu na "neviděné budoucnosti" (OutOfSample), abychom viděli možnou přeoptimalizaci. V obou programech to není žádný problém.

    A následně, pokud budeme chtít systém obchodovat, pouze vybereme v nabídce příslušný účet a systém spustíme, čímž se začne automaticky obchodovat.

    Programy MCH a TS jsou tedy oba komplexním balíkem, který vám umožní realizovat veškeré potřebné kroky. Oba programy používají stejný jazyk pro zapisování podmínek, jsou tedy vzájemně kompatibilní. Nejzásadnější rozdíly pak jsou: Multicharts podporuje všechna jádra procesoru, je tedy mnohem rychlejší a také existuje ve verzi 64-bit, takže umí pracovat s mnohem větší pamětí. Dále je možné program pro automatické obchodování napojit na bezpočet různých brokerů jako Interactive Brokers apod. Oproti tomu TradeStation je platforma nativně vytvořená k obchodování pouze s účtem u TradeStation, umí optimalizovat jen s využitím jediného jádra procesoru, neumí využít veškerou paměť počítače, ale zase nabízí již implementovaná veškerá historická data – do MultiCharts si musíte historická data "sehnat" (například o svého brokera nebo někde zaplatit jako službu atd.). Každý program má tedy svá pro i proti, já osobně používám oba.

    Co je AdaptradeBuilder

    Abychom lépe pochopili, co je program AdaptradeBuilder, vraťme se ještě na chvilku k úvodu.

    Nyní tedy už víme, že pokud máme nějaký nápad (nakupovat, pokud je včerejší den pokles), musíme takový zapsat do kódu, vložit kód do příslušného grafu, nechat počítačem otestovat a následně případně provést optimalizaci, kterou si chceme nechat zobrazit na InSample datech (equity ukazující výsledek po optimalizaci) a OutOfSample datech (equity ukazující výsledek na "neviděné" budoucnost, tj. na datech, které nebyly využity v optimalizaci).

    Problém je ale v tom, že abychom našli nějaký zajímavý, funkční a robustní systém, musíme mít mnoho nápadů a otestovat mnoho podmínek typu "nakup, pokud byl včera pokles". Co ale, když nám už veškeré nápady došly? Co když potřebujeme další inspiraci? A co když nemáme čas pořád všechny ty nápady přepisovat do kódu, vkládat do grafu a optimalizovat s použitím IS/OOS procesu?

    Pak je zde právě AdaptradeBuilder.

    Jednoduše jde o to, že do programu vložíte data, na kterých se snažíte najít nějaký obchodní systém (například trh S&P500 na 5minutových datech, forexový trh apod.), data můžete například vyexportovat z TradeStation. Následně v programu specifikujete, jaké nástroje a indikátory má program při hledání obchodních systémů využít (například různé klouzavé průměry, CCI, MACD, RSI atd.), případně nastavíte různé metody a úrovně výstupů, stop-lossů, profit targetů atd. A pak už necháte program, ať za vás hledá, optimalizuje a ověřuje IS/OOS zcela sám.

    Jak konkrétně to program udělá? Program má v sobě implementovaný velmi nároční algoritmus (nazvaný "genetický algoritmus"), do jehož podstaty se zde nebudu pouštět. V základu jde ale o to, že program nejprve náhodně navrhne třeba 10 000 systémů (záleží, jakou hodnotu nastavíte – tomuto se říká populace) a všechny je okamžitě otestuje na datech, která jste programu dali k dispozici – pokud jste mu dali více trhů a více timeframů, okamžitě všech 10 000 strategií otestuje na VŠECH trzích, které jste mu dali k dispozici. Poté všechny systémy uloží do své paměti a podívá se, zda některé z nich vypadají nadějně (konkrétní požadavky je možné specifikovat). Pokud pár takových najde, začne je automaticky rozvíjet, vzájemně mezi sebou kombinovat a tvořit nových 10 000 systémů, které však už vycházejí z toho, co našel jako zajímavé v předešlém běhu (říká se tomu generace, můžeme nechat systémy vzájemně kombinovat a vylepšovat třeba celkem 10x, což znamená, že by se jednalo o návrh systému v 10 generacích).

    Vše, co AdaptradeBuilder navrhne a okamžitě i otestuje, si můžete jediným kliknutím v mžiku prohlédnout. Kliknete na příslušný systém a zobrazí se vám equity systému, test InSample + OutOfSample a po druhém kliknutí finální kód systému, který už je zcela hotový a připravený pro TradeStation a MultiCharts.

    Pokud například máte rychlejší počítač, můžete nastavit 10 000 populací a 10 generací a počítač vám za cca 12-24 hodin vytvoří a otestuje celkem 100 000 (10 000 x 10) systémů (strategií) na trhu e-mini S&P500, 15minutový timeframe. Jen si představte, jak dlouho by vám trvalo vymyslet, zapsat, vložit do grafu, otestovat a optimalizovat 100 000 strategií? Možná celý život, zatímco s AdaptradeBuilder je to otázka hodin.

    Pokud se vám nějaký ze systémů líbí, pak si zkrátka a dobře kód zkopírujete, vložíte ho do MCH/TS a tam se dále snažíte zkoumat logiku, abyste pochopili, co systém vlastně dělá, přidáte případně vlastní úpravy, provedete další testy robustnosti přímo v TS/MCH, a pokud máte štěstí, dopracujete se ke kvalitnímu automatickému obchodnímu systému.

    AdaptradeBuilder však už neumí systémy obchodovat – pouze je navrhovat a testovat, proto pro obchodování potřebujeme právě TS/MCH. AdadaptradeBuilder také umí generovat systémy pouze v jazyku EasyLanguage, tj. právě pouze pro programy MCH/TS.

    Co jsou NinjaTrader a MSA

    Pokud chceme vytvářet, testovat a obchodovat automatické obchodní strategie, můžeme k tomu také použít NinjaTrader. I tento program umí veškeré potřebné kroky, avšak programovací jazyk je mnohem náročnější a komplexnější a navíc neumí rozeznat systémy v EasyLanguage, takže není možné použít strategie vygenerované z AdaptradeBuilder. Nicméně je to zase nástroj, ve kterém můžeme navrhovat a testovat AOS zcela zadarmo (více o tom, jak vytvářet a testovat v NinjaTraderu vlastní AOS viz v tomto semináři).

    Program MSA je zkratka pro Market System Analyzer, který je od stejného výrobce jako program AdaptradeBuilder. Tento program však neslouží k žádnému z kroků popsaných výše pro tvorbu a obchodování AOS. Tento program slouží k simulacím position sizingu a portfolií systémů. Například máte 3 různé AOS a chcete vidět, jak vypadají výsledky, pokud se spojí dohromady a použijete některý z modelů automatického navyšování pozic (position sizing). Vyexportujete si tedy výsledky z TS/MCH do MSA, kde se vám všechny systémy spojí do jedné equity a následně můžete provádět nejrůznější simulace.

    11.11.2012

    Tomáš Nesnídal


×
×
  • Vytvořit...

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.