Automatizált kereskedés, avagy új távlatok egy Trader életében.

Nagyon sok fórumon még a mai napig harc dúl a manuális kereskedés és az automatizált/robot kereskedés között. Pedig ha valaki egyszer igazán rászánja az időt, hogy a kereskedési stratégiáját leprogramozza, nagyon sok előnyhöz juthatna a többi kereskedővel szemben. Egy kód mindig azt csinálja, amit beleprogramoznak, nem gondolkodik azon, hogy most nyissak, vagy ne nyissak, ha ott a jel, akkor nyit és kész. Szigorúan mindig csak azt csinálja amit kell, a szabályrendszere szerint működik.

Szeretnék megosztani néhány, a mai napig működő kereskedési stratégiát, amely sikeresen átültetésre került automatizált kereskedési nyelvezetre. A lényeg az egyszerűségen van, nem a túlbonyolított, túlparaméterezett rendszeren. Olyan algoritmus jeleket fogok leírni, amelyeket akár manuálisan is le lehet kereskedni, ha a kereskedő ott ül a számítógép előtt és figyeli a monitort egész nap. Az automatizált kereskedési rendszer segít a döntés meghozatalában, és század másodperc alatt el tudja dönteni, hogy kell-e pozícióba lépni vagy sem. Nem-nem, itt nem HFT rendszerről van szó, normál idősíkú kereskedési rendszerekről.

Senkit nem akarok meggyőzni, és megtéríteni, hogy térjen át automatizált kereskedési rendszerre, de megkönnyíti még egy profi kereskedő életét is. Még egy jobb kereskedési segéd is tud gyorsítani a belépéseken, menedzseléseken, kiszállásokon. De ez egy másik téma, itt most teljesen automata rendszerekkel fogunk foglalkozni.

Először is néhány kérdés, mely foglalkoztathatja az embereket:

Milyen robot a jó robot?

A véleményem az, ne legyen túlbonyolítva és lehetőség szerint manuálisan is le lehessen kereskedni a rendszer jeleit, mivel minden automatizált kereskedési rendszer egy manuális kereskedési stratégia alapjaira épül ( nem HFT ).

Használjak-e indikátort a robotban?

Szintén az egyéni véleményem, hogy nyugodtan lehet használni bármilyen indikátort, de csak mértékkel. Ne az legyen, hogy az A-B-C-D-E-F-G-H indikátor együttállásakor nyitok pozíciót. Ilyen esetben valószínű, hogy nem lesz elég mintavételezési pozíciónyitásunk. A találati arány nagy lehet, de a kötés darabszáma viszont kevés.

Mire menjek rá a nagy találati arányra vagy a nagy profit faktorra?

Először is itt tisztázni kell a fogalmakat. Találati arány: A nyerők és a vesztők – azaz a kötések darabszáma – aránya egymáshoz képest. A profit faktor: Az összes nyerő és az összes vesztő aránya egymáshoz képest. Mind a kettő fontos paraméter és mind két paraméternél törekedni kell a minél magasabb érték megtalálásához.

Kell-e optimalizálnom a kereskedési stratégia paramétereit?

A paramétereket, egy bizonyos mértékig optimalizálni kell, be kell állítani a rendszert. Manuális kereskedésnél is vannak paraméterek, melyek beállítása elkerülhetetlen. Mivel már írtam, hogy az automatizált rendszer manuálisan is kereskedhető jeleket használ, így természetesen a paramétereket be kell állítani.

Létezik-e a Szent Grál robot?

Olyan Szent Grál robot, melyre a többség gondolhat (mindig nyer, és sohasem veszít), szerintem ilyen nincs vagy legalábbis én még nem találkoztam vele. Az automatizált rendszer teljesítménye is úgy hullámzik, mint az árfolyam a charton. Én nem hiszek a különböző Martingale módszereken alapuló robotokban/rendszerekben, ha nincs korlátlan mennyiségű pénzed tutira el fogod bukni a tőkédet. A tőke védelme a legfontosabb. Ha a tőke elfogy, akkor a játéknak vége – Game Over – nincs további kereskedés.

 Mekkora Drawdown elérése után kapcsoljam le a robotot?

Ez igen jó kérdés. Mekkora legyen a DD nagysága, mikor leállítom manuálisan a robotot, és felülvizsgálom a működését? Szintén csak az én egyéni véleményem és tapasztalatom, hogy ha a mintavételezési mindenkori legnagyobb visszaesés háromszorosát eléri egy robot vagy esetleg egy portfólió, akkor meg kell nézni, mi a probléma, mi változott meg a piacon. Állítsuk le és, ha kell változtassunk rajta.

A cikk folytatása a konkrét stratégiák kivesézésével folytatódik tovább…..

Bollinger Bands és ADX automatizált kereskedési rendszer egy igazi breakout, part 1.

Akkor vágjunk is bele a közepébe. Számomra az egyik legfontosabb az automatizált kereskedési rendszer programozás világában, a megfelelő instrumentum kiválasztása. Ez egy fontos lépés, mert lehetőség szerint trendelő piacra trendkövető rendszert készítsünk, oldalazó piacra viszont oldalazás alapú rendszert állítsunk össze. A most ismertetésre kerülő automatizált rendszer alapvető algoritmusa breakout és trendkövetés egyben, napon belüli pozíciózárással.

Az első lépés kiválasztani az instrumentumokat. Jelenleg a következő piacokra készült automatizált kereskedési rendszer: maga a piac az a határidős piac, ezen belől az FDAX (Német tőzsde határidős piaca), FGBL (Német államkötvény), ES (S&P500 USA tőzsde határidős piaca), YM (Dow Jones USA tőzsde határidős piaca), NQ (Nasdaq USA tőzsde határidős piaca), EMD (S&P MidCap 400 USA tőzsde határidős piaca). Készítettünk rendszereket az olaj és az arany piacára is.

Most nézzük a Német tőzsde határidős indexére (FDAX) készült automatizált kereskedési rendszer algoritmusának a leírását. Én a robotot/rendszert BollingerBandsADX röviden BBADX kereskedési rendszernek hívom. A nevéből is adódik, hogy kettő darab fő indikátort használunk, a Bollinger Bands (BB) és az ADX. A Bollinger Bands adja a breakout jelet, az ADX indikátor viszont a megerősítést. Egyéb segédindikátor használatát is igénybe veszi a rendszerünk. A fő trend meghatározására a 100-as és a 200-as EMA indikátort, az aktuális napon belüli trend meghatározásához a napi nyitóárat veszi figyelembe. Elsőre ez sok indikátornak tűnhet, de nem az. Az indikátorok összehangoltsága a fontos és emellett a kötés darabszáma is megfelelő, majd látni fogjuk lentebb.

Maga a kereskedési jel nagyon egyszerű, a Ninjatraderben használt kódokkal fogom bemutatni – kicsi változtatással. Itt meg kell jegyeznem, hogy én minden kereskedési rendszerben a vételt és az eladást külön-külön kezelem, és külön-külön állítom be. A véleményem az, hogy a LONG és a SHORT karakterisztikája különbözik egymástól, a vétel beállítása nem lesz jó az eladásra, az eladás beállítása nem lesz jó a vételre.

Alap LONG jelzés:

Irany==”L” && Open[0]<Close[0] && Open[1]<Close[0] && Time && CurrentOpen[0]<Close[0] && ADX(period)[0]>ADX && Bollinger(dev,period).Upper[0]+TickSize*tick<Close[0] && EMA(200)[0]<EMA(100)[0]

Alap SHORT jelzés:

Irany==”S” && Open[0]>Close[0] && Open[1]>Close[0] && Time && CurrentOpen[0]>Close[0] && ADX(period)[0]>ADX && Bollinger(dev,period).Lower[0]-TickSize*tick>Close[0] && EMA(100)[0]>Close[0]

Ez a kiindulási állapot és itt már látható is az első különbség a trendmeghatározásban, nem fogom kiemelni, aki figyelmesen megnézte, ő észre fogja venni. Van néhány változó mely magyarázatot kíván. Az első a „Time” ez a robot működési idejét tartalmazza. A második a „period” az indikátorok periódusát pl. 14. A harmadik a „dev” a Bollinger Bands középvonaltól való távolságát pl.2, ez határozza meg a BB szélességét. A negyedik a „tick” ez egy távolság megatározó változó, minimum ennyivel kell a BB főlé-vagy alázárnia az aktuális gyertyának, hogy egyáltalán értelmes kitörésről vagy letörésről beszéljünk. Ha a feltételek adottak, akkor az automatizált kereskedési rendszer a beprogramozott algoritmus alapján kezdheti is a kereskedést.

De mielőtt elkezdenénk a kereskedést még nagyon sok munka van hátra. Be kell állítani az automatizált rendszert, meg kell találni a megfelelő paramétereket, melyek a múltban és remélhetőleg a jövőben is pénzt termelnek a rendszer használójának. Nekem van egy bevált tesztelési, beállítási módszerem. A robotot egy bizonyos időintervallumra állítom be, ez a 2008-2012 vagy 2009-2013, ez számomra az optimalizálási időszak. Ha az általam meghatározott szabályrendszernek megfelelnek a paraméterek (pl. lehetőleg legyen 100 db kötés, nyereséges legyen, alacsony visszaesése legyen, a találati arány nagyobb, mint 30%, 100$ vagy 100€ közeli nyereség legyen minden kötésen), akkor a meglévő összes adaton tehát 2001-től a mai napig tesztelem. Ha a teszteken megfelelt, akkor a robotot fel lehet rakni demo számlára az esetlegesen felmerülő hibák kijavítása érdekében. Had jegyezzem meg, hogy az itt bemutatásra kerülő automatizált kereskedési rendszer 2014-ben készült.

Folytatásban nézzük meg a kiválasztott beállítási időszakra a robot teljesítményét, ez az időszak 2008-2013 év eleje közötti rész. Egyenlőre, most csak a LONG irányt elemezzük ki, mivel már az előzőekben is írtam, hogy én a LONG és a SHORT jeleket és beállításokat külön kezelem.

Első képen a rendszerünk teljesítményét láthatjuk, 1 db pozíciót nyit ki és azt menedzseli le.

1kepNem esett még szó a menedzselésről, a stop helyszín meghatározásról, valamint a célár meghatározásról. A három dolog közül a legegyszerűbb a célár meghatározása, mivel az minden esetben fix értéken van. Valahol a célár itt nem is fontos, mivel a pozíciót nap végén a robot bezárja a GAP kockázat és a határidős piac napon túli hatalmas margin igénye miatt.

Kétféle menedzselést használ a robot algoritmusa, első a kockázat csökkentése nullába való húzással, a második a profit maximalizálása, követő stop segítségével. Természetesen ezek a tételek a hosszú optimalizálási folyamat adta ki.

Az induló stop helyszín, az már egy kicsit bonyolultabb, mert háromféle stop elhelyezési algoritmus van használatban, és azokat a robot választja ki a beállításoknak megfelelően.

Azt remélem, hogy minden kedves olvasó, aki ezeket a sorokat olvassa, tisztában van vele, hogy a nyereséget vagy a veszteséget nem a beszálláskor, hanem a kiszálláskor realizáljuk. Induljunk ki abból, hogy egy kerekedésbe való belépésnek mindig 50% esélye van arra, hogy nyereséget vagy veszteséget csinál. Ebből adódik az, hogy a stop lehetőleg mindig kisebb legyen, mint a célárunk. Persze az arany középutat nehéz megtalálni valahol ez is a Szent Grál kereséséhez tartozik.

Most akkor jöjjön a teljes tesztünk 2001-től a mai napig, még egyszer had említsem meg, hogy ez a rendszer 2014 év elején készült el.

Második kép, a rendszerünk teljesítményét láthatjuk 2001-2017 évek között.

2kep

Sajnos precízen nem tudtam megadni a függőleges vonalak helyét, így csak nagyságrendileg pontosak a kereskedési évek beállításai. Azért, az látható már az első képen is, hogy van megfelelő kereskedési mintavételünk a 251 kereskedéssel. Ha csinálok egy gyors számolást, akkor átlagban valamivel több, mint négy kereskedés jut egy hónapra. Természetesen lesz olyan hónap vagy hónapok, amikor egyáltalán nincs kereskedés, mert a trend meghatározás nem felel meg annak, hogy vételi pozíciót vegyen fel a robot. Az látható a második képen, hogy a múltban egy kicsit kevesebb ez a szám, míg 2013 után maradt a négy kötés / hónap.

Nézzük meg, hogyan lehet felturbózni egy kereskedési rendszer teljesítményét, kicsit nagyobb profitra, kicsit nagyobb találati arányra, kicsit nagyobb egy kereskedésre jutó nyereségre, csak hogy néhányat említsek ennek a kis trükknek az alkalmazásával. Én ezt úgy hívom, hogy agresszív pozícióépítés. Mit is jelent ez? Számomra azt, hogy ha megy a piac egy irányba, akkor meg kell tolni a pozíciószámot, még abban az esetben is, ha az kicsivel is, de plusz kockázatot jelent, mert így nagyobb esély van a nagyobb profitra, de előfordulhat, hogy a kezdeti kockázatnál nagyobb veszteségre is, de itt kell a jó menedzselés.

Harmadik kép a rendszerünk teljesítményét láthatjuk a beállítási időszakban pozícióépítéssel.

3kep

Mit is látunk a képen? Az automatizált kereskedési rendszer teljesítménye kiegyensúlyozottabb lett, a veszteséges időszakok nem annyira meredekek, mint amikor csak egy pozícióval viszi végig a napot a robot. A pozíció építés darab számával lehet játszadozni, itt maximálisan hét darab pozíciót nyithat ki a rendszerbe ültetett algoritmus, egy alap és hat ráépítés. Azért látszik az is hogy a Drawdown is megnőtt egy kicsit, de a profit növekedés mellett ez elenyésző. A profitunk több mint ötszörösére, míg a veszteségünk csupán csak a két és félszeresével változott meg. A találati arány több mint 10%-kal nőtt, az egy kereskedésre jutó nyereség pedig másfélszeresével nőtt.

Negyedik kép, a rendszerünk teljesítményét láthatjuk 2001-2017 évek között pozícióépítéssel.

4kep A negyedik képen látható, hogy a 2008 előtti időszakban mondhatjuk úgy, hogy nem tudta felvenni a ritmust a piaccal, mint a 2013 utáni időszak. A statisztikát egy kicsit lerontotta, de így is a profit növekedés több mint négyszeres volt, sajnos a Drawdown növekedés felemelkedett három és félszeresre. A találati arány több mint 9%-ban nőtt, egy kereskedésre jutó nyereség pedig kicsivel kevesebb, mint másfélszeresével nőtt.

Ez egy beállítása volt a robotnak és csak a vételi irányt tekintettük meg. A következő cikkben a SHORT irányú BBADX automatizált kereskedési rendszert fogom bemutatni.