Signal Pilot
🔴 Haladó • 57. lecke a 82-ből

Kereskedési automatizálás: kódold le az előnyödet, vedd ki az érzelmet

15 perc olvasás • Automatizált végrehajtás és API
Signal Pilot
Professzionális kereskedési képzés
0%
Haladsz!
Olvass tovább a lecke befejezéséhez

Hajnali 3. A sweep setupod jelez. Te alszol.

A botod beadja az ügyletet, kiteszi a stopot, 3R-t céloz. Miközben te álmodsz.

Reggel 6. Felébredsz. A pozíció lezárva. +2,8R nyereség. A kávé is jobban esik.

🎯 Amit az automatizálás ígér

Semmi FOMO. Semmi félelem. Semmi habozás. Csak kód, amely minden egyes alkalommal tökéletesen végrehajtja a szabályaidat.

Ez nem tudományos fantasztikum. 2024-ben így kereskednek a profik.

📉 ESETTANULMÁNY: Mike 19 000 dolláros letéthívása

Felállás: Mike Sullivan (összetett példa), Python-fejlesztő, 200 000 dolláros számla. Bot az Alpaca API-ján (vásárlás SPY-ból RSI<30 esetén). 2020-2023-as backtest: 67 % találati arány, +140 000 dollár. NULLA biztonsági kontrollal élesítve.

A katasztrófa (egy inflációs sokk reggelén): A bot 8 hétig ment (+14 000 dollár, 71 % találati arány). A SPY -2,8 %-os réssel nyitott 510 dolláron. A bot 22-es RSI-t látott, és tovább vásárolt: 200 000 dollár 510, 505, 495 és 490 dolláron = 800 000 dolláros pozíció (4-szeres tőkeáttétel, 499,87 dolláros átlagár). 15 órára: a SPY 488 dolláron — 7 %-kal az előző záró alatt — a pozíció 781 000 dollárt ért, 19 005 dollár mínuszban, és megérkezett a letéthívás. Mike a munkahelyén ült, és nem tehetett semmit.

Talpra állás: A számla a robbanás után: 195 000 dollár. Újraépítve 5 kontrollal: legfeljebb 50 000 dolláros pozíció, VIX>25 = kikapcsolás, naponta legfeljebb 3 ügylet, riasztás a csúcstól -5 %-nál, teljes leállás -10 %-nál. Eredmény a következő 8 hónapban: 195 000 dollár → 218 000 dollár (+12 %), és egyetlen kontroll sem mondta fel a szolgálatot.

Tanulság: A biztonsági kontrollokat kódold le ELŐSZÖR: (1) pozíciólimitek, (2) volatilitásszűrők, (3) lekapcsolás maximális drawdownnál, (4) vészleállító. A backtest hazudik: kihagyja a fekete hattyúkat.

Kérdés: Mike botja EGYETLEN REGGEL alatt letéthívást kapott. Mi okozta?

A) Végrehajtási slippage és késleltetési gondok
B) Az API-kapcsolat megszakadt az összeomlás alatt
C) NULLA biztonsági kontroll: a bot négyszer átlagolt lefelé egy 7 %-os napi esés alatt, és 200 000 dolláros számlán 800 000 dolláros (4-szeres tőkeáttételű) pozícióig jutott
D) Egy kódhiba dupla megbízásokat adott
Helyes: C. Mike lekódolta, hogy «vásárolj, ha az RSI túladott», de soha nem kódolt pozíciólimitet, volatilitásszűrőt vagy vészleállítót. A bot az összeomlás közben 4-szeres tőkeáttételű pozíciót épített: 19 005 dollár mínusz és egy letéthívás, mielőtt Mike egyáltalán billentyűzet közelébe ért volna. Talpra állás: 5 biztonsági kontroll hozzáadva, 8 hónap alatt 195 000 dollárból 218 000 dollár. A biztonsági kontrollokat kódold le ELŐSZÖR.
⚡ Gyors eredmények holnapra (kattints a kinyitáshoz)
  1. Kezdd papíron — Soha ne tegyél valódi tőkét egy tesztelés nélküli automatizálás mögé. Előbb papíron, és a 2. rész szerint ez hónapokat jelent, nem heteket.
  2. Tegyél be pozíciólimiteket — Égesd bele a kódba a maximális pozícióméretet: ügyletenként a számla 2 %-a kockázatban ÉS egy névérték-plafon, mert 2 % kockázat nem 2 % kitettség.
  3. Építs vészleállítót — Készíts kézi kikapcsolást, amely egyetlen kattintással vagy paranccsal leállítja a bot minden tevékenységét.
1. rész: miért automatizáld a kereskedésedet?

Az emberi probléma a kereskedésben

6 hónapot töltöttél egy stratégia csiszolásával. Backtestelted. Előre tesztelted. Találati arány: 62 %. Átlagos R: 2,3. Az előny igazolva.

Elkezded élesben kereskedni. Az eredmény?

Hónap A stratégia teljesítménye (tökéletes követés esetén) A te tényleges teljesítményed A probléma
1. hónap +4200 dollár (62 % találat) +1800 dollár (48 % találat) 3 setupot kihagytál (félelem egy veszteségsorozat után)
2. hónap +3900 dollár (60 % találat) -2100 dollár (38 % találat) Bosszúügyletek, duplázott méret a veszteségek után
3. hónap +5100 dollár (65 % találat) +900 dollár (52 % találat) Haboztál a kitörés-setupoknál, a jelzések 40 %-át elmulasztottad

A kellemetlen igazság: Van egy nyereséges stratégiád. De a gyenge láncszem TE vagy.

A végrehajtás három gyilkosa

1. Habozás (félelemből való kihagyás)

  • Épp két veszteséget szedtél össze. Megjelenik a 3. setup. Azt gondolod: «Talán megvárom a megerősítést…»
  • Vársz. Az ár elmegy nélküled. 4R-es nyertes volt. Félelemből maradtál le róla.
  • Hatás: A nyertesek kihagyása szétveri a pozitív várható értéket

2. Túlkereskedés (FOMO-belépők)

  • A piac elszalad felfelé. A stratégiád azt mondja: «nincs setup». De nem bírod nézni. Beszállsz mégis.
  • Nincs stop. Nincs terv. Csak remény. Megfordul. Veszítesz.
  • Hatás: A véletlenszerű belépők zajjal hígítják az előnyödet

3. Következetlen pozícióméret

  • A setup: 1 %-ot kockáztatsz (óvatos vagy a legutóbbi veszteség után)
  • B setup: 5 %-ot kockáztatsz (magabiztos vagy, «ezt érzem»)
  • Az A setup 3R-t hoz. Csinálsz 3 %-ot. A B setup 1R-t bukik. Veszítesz 5 %-ot. Nettó: -2 %.
  • Hatás: Egyetlen rossz méretezési döntés kitöröl 3 jó ügyletet

💡 Mit old meg az automatizálás

Egy automatizált kereskedési bot végrehajtása: tökéletes fegyelem:

  • Semmi habozás: Megjelenik a setup → az ügylet elindul (még 5 egymás utáni veszteség után is)
  • Semmi FOMO: Nem jelenik meg a setup → a bot vár (bármilyen unalmas is a piac)
  • Tökéletes méret: Minden ügylet pontosan 2 %-ot kockáztat (vagy amennyit beprogramoztál), minden egyes alkalommal

Eredmény: A backtestbeli teljesítményed lesz az éles teljesítményed. Az az előny, amit teszteltél, az az előny, amit kapsz.

A méretezés problémája (a kézi kereskedés korlátai)

A kézi kereskedés plafont tesz a lehetőségeidre:

Korlát Kézi határ Automatizált lehetőség
Piacok 1-3 szimbólum figyelése (az emberi figyelem határa) Több mint 50 szimbólum egyidejű figyelése
Időtávok Legfeljebb 1-2 időtáv követése 5p, 15p, 1ó és napi egyszerre pásztázva
Órák Napi 6-8 óra kereskedés (kiégés kockázata) Megszakítás nélkül kereskedni (kripto) vagy a teljes tőzsdenapon át (részvény)
Setupok Heti 5-10 setup elkapása (diszkrecionális kereskedőnek reális) Heti 50-200 setup elkapása (a bot sosem alszik, sosem téveszt)

Példa: Egy kézi kereskedő az ES-t (S&P határidős) nézi 15 perces grafikonon. Hetente nagyjából 8 setupot kap el. Átlagosan 3200 dollárt keres havonta — setuponként körülbelül 92 dollárt.

Ugyanez a kereskedő automatizálva: A bot az ES, NQ és RTY (indexhatáridős) mellett a GC-t és a CL-t (fém és energia) pásztázza 5p, 15p és 1ó időtávon. Hetente nagyjából 24 setupot kap el. Ugyanazon 92 dolláros setupértékkel ez havi 9600 dollár.

Amit ez felold: Nem jobban kereskedsz. TÖBBET kereskedsz — anélkül, hogy kiégnél.

És a plafon: Az ES, MES, SPY és QQQ nagyrészt ugyanaz az ügylet. Korrelált szimbólumok hozzáadása a jelzések számát sokszorozza, nem az előnyödet — a kockázatodat viszont igen, ha négy egyszerre lő. Korrelálatlan lehetőségeket számolj, ne tickereket.

Mikor van értelme automatizálni (és mikor nincs)

Az automatizálás ezekre a legjobb:

  • Szabályalapú stratégiák: Világos be- és kilépési feltételek (pl. «vásárolj, ha az ár lesöpör egy alját, majd visszaveszi»)
  • Gyakori setupok: Olyan stratégiák, amelyek hetente több mint 10-szer jeleznek (a darabszám indokolja a kódolást)
  • Unalmas végrehajtás: Olyan stratégiák, ahol a mérlegelés nem ad hozzá semmit (mechanikus előnyök)

Az automatizálás ezekkel küzd:

  • Diszkrecionális setupok: «Csak akkor kereskedem, amikor *jónak érzem*» (az ösztön nem kódolható)
  • Kontextusfüggő ügyletek: «Ez a kitörés akkor működik, ha a forgalom az átlag 2-szerese fölött van ÉS van hírkatalizátor» (az összetett kontextust nehéz számszerűsíteni)
  • Ritka stratégiák: Setupok, amelyek havonta 1-2-szer jeleznek (nem éri meg lekódolni)

⚠️ Az automatizálás nem javít meg egy rossz stratégiát

Gyakori hiba: «A stratégiám kézzel nem működik. Hátha egy bot nyereségessé teszi?»

A valóság: Az automatizálás PONTOSAN úgy hajtja végre a stratégiádat, ahogy lekódoltad. Ha a stratégiának nincs előnye, a bot következetesen veszíteni fog — csak gyorsabban és hatékonyabban.

Szabály: CSAK olyan stratégiát automatizálj, amelynek több mint 100 kézi ügyleten bizonyított pozitív várható értéke van. Az automatizálás felnagyítja az előnyt. Nem hoz létre előnyt.

2. rész: az API és a bróker kiválasztása

Bróker-API-k összehasonlítása

Nem minden bróker támogatja az automatizált kereskedést. Amelyek igen, azok is nagyon eltérnek minőségben, költségben és funkcióban.

A legjobb bróker-API-k automatizált kereskedéshez

Bróker Eszközosztályok Az API minősége Költségek Erre a legjobb
Alpaca Részvények, ETF-ek, kripto ⭐⭐⭐⭐⭐ Kiváló (RESTful + WebSocket, jól dokumentált) Részvény jutalék nélkül, kriptón 0,1-0,25 % Kezdők (a legkönnyebb API, ingyenes papírkereskedés, Python-könyvtár)
Interactive Brokers (IBKR) Részvény, opció, határidős, deviza, CFD (globális piacok) ⭐⭐⭐⭐ Jó (erős, de bonyolult, meredek tanulási görbe) Részvény 0,005 dollár/darab, opció 0,65 dollár/kontraktus Haladó kereskedők (opciót és határidőst akarnak automatizálni, globális hozzáférés)
Binance Kripto (több mint 600 pár; a fő tőzsde zárva van az USA-ban élők előtt — a Binance.US külön, jóval kisebb helyszín) ⭐⭐⭐⭐⭐ Kiváló (REST + WebSocket, nagy áteresztőképesség) Azonnali 0,1 %, határidős 0,02-0,04 % (BNB-kedvezménnyel) Kripto algokereskedők (megszakítás nélküli piac, magas likviditás)
Schwab (korábban TD Ameritrade / thinkorswim) Részvény, opció, határidős ⭐⭐⭐ Közepes (a régi TD Ameritrade API-t 2024-ben leállították; a helyére lépett Schwab Trader API még érik) Részvény 0 dollár, opció 0,65 dollár/kontraktus Meglévő Schwab-ügyfelek (megvan a számlájuk, és automatizálnának)
TradeStation Részvény, opció, határidős ⭐⭐⭐⭐ Jó (kódolás EasyLanguage-ben, beépített backtesting) Részvény 0 dollár, opció 0,60 dollár/kontraktus Aktív kereskedők (integrált platformot akarnak, külső kódolás nélkül)

Gyors döntési útmutató

Az Alpacát válaszd, ha: most tanulod az automatizálást (a legkönnyebb API, ingyenes papírkereskedés, a legjobb dokumentáció). Az Interactive Brokerst válaszd, ha: opció, határidős vagy globális piac kell (minden eszközosztály, 0,005 dollár/darab, intézményi színvonal). A Binance-t válaszd, ha: csak kriptóval foglalkozol (megszakítás nélküli piac, több mint 600 pár, 0,1 % díj).

💡 Profi tipp: mindig papírkereskedéssel kezdj

A fenti brókerek mindegyike kínál papírkereskedést (szimulált kereskedés valós adatokon).

Ajánlott ütemterv:

  1. 1-2. hét: Csatlakozás az API-hoz, alapvető megbízásküldés tesztelése (vétel, eladás, stop-loss)
  2. 3-8. hét: A stratégia lekódolása, papírkereskedésben való indítása, napi ellenőrzés
  3. 9-12. hét: A stratégia teljesítményének validálása (egyezik a backtesttel?)
  4. 4. hónaptól: Ha 3 hónapon át nyereséges papíron, indulj élesben a tőke 10 %-ával
  5. 6. hónaptól: Ha továbbra is nyereséges, skálázd fel a teljes allokációra

Soha ne hagyd ki a papírkereskedést. Mike (a fenti esettanulmány) kihagyta, és egyetlen reggel alatt letéthívást kapott.

3. rész: az első automatizált stratégiád megépítése

A kereskedési ötlettől a futtatható kódig

Van egy kézi stratégiád. Hogyan fordítod le olyan kódra, amelyet egy bot végre tud hajtani?

Az 5 lépéses stratégiafordítási keret

1. lépés: a belépési feltételek meghatározása (csak explicit szabályok)

A kézi kereskedő így gondolkodik: «Akkor veszek, ha az ár lesöpör egy alját, és visszapattan.»

Ez egy botnak túl homályos. A botnak pontos logika kell:

  • Mi az a «sweep»? → Az aktuális gyertya alja legalább 0,3 %-kal a korábbi swing-alj alá süllyed
  • Mit jelent a «visszapattan»? → Az ár 1-3 gyertyán belül újra a swing-alj fölött zár
  • Mi az a «swing-alj»? → Az elmúlt 20 gyertya legalacsonyabb alja

Kódolva:

swing_low = min([bar.low for bar in last_20_bars])
current_low = current_bar.low
current_close = current_bar.close

if current_low < swing_low * 0.997:  # 0,3 %-kal alasoport
    if current_close > swing_low:     # visszavette
        ENTRY = True  # sweep setup megerositve

2. lépés: a kilépési feltételek meghatározása (stop és cél)

A kézi kereskedő: «A stopot a lesöprés alá teszem, és 3:1 kockázat-hozam aránynál realizálok.»

Kódolva:

entry_price = current_close
stop_loss = swing_low * 0.995  # kozvetlenul a lesopres alatt
stop_distance = entry_price - stop_loss
target = entry_price + (stop_distance * 3)  # 3R-es cel

3. lépés: a pozícióméret meghatározása (kockázatkezelés)

A kézi kereskedő: «Ügyletenként körülbelül 2 %-ot kockáztatok.»

Kódolva:

account_equity = 100000  # 100 000 dollaros szamla
risk_per_trade = 0.02    # 2 %
risk_amount = account_equity * risk_per_trade  # 2000 dollar

stop_distance = entry_price - stop_loss
position_size = risk_amount / stop_distance  # megveendo reszvenyek

# Pelda: belepo 520 dollar, stop 518 dollar, tavolsag 2 dollar
# Poziciomeret = 2000 dollar / 2 dollar = 1000 reszveny
# ...ami 520 000 dollarnyi SPY egy 100 000 dollaros szamlan. A 2 %-os
# kockazati szabaly semmit nem mond a nevertekrol: a szuk stop attetelt vesz.
max_notional = account_equity * 1.5   # kemeny plafon: a sajat toke 1,5-szerese
position_size = min(position_size, max_notional / entry_price)
# Plafonnal: 288 reszveny. A valos kockazat 576 dollar, nem 2000 -
# ez az ara, es pont ez tart benn a jatekban.

4. lépés: az ügyletkezelés meghatározása (opcionális)

Részletekben szállsz ki? Húzod a stopot? Realizálsz részlegesen?

Példa: «2R-nél 50 % nyereséget realizálok, a többit hagyom futni 3R-ig.»

if current_price >= entry_price + (stop_distance * 2):
    SELL_HALF = True  # 2R-nel 50 % zarasa
    # A maradek 50 % stopjat nullszaldora huzni

5. lépés: a szűrők meghatározása (rossz setupok kizárása)

Milyen körülmények érvénytelenítik a setupot?

  • Időszűrő: Csak a tőzsdenap első 2 órájában kereskedj (keleti idő szerint 9:30-11:30)
  • Volatilitásszűrő: Hagyd ki az ügyleteket, ha a VIX 30 fölött van (túl szaggatott)
  • Trendszűrő: Csak long setupok, ha az ár az 50 periódusos EMA fölött van
if VIX > 30:
    SKIP_TRADE = True  # tul volatilis a piac

if current_time < "09:30" or current_time > "11:30":
    SKIP_TRADE = True  # a kereskedesi ablakon kivul

✅ Teljes stratégiapélda (a sweep-bot logikája)

Mind az 5 lépés futtatható pszeudokódba öntve:

# 1. lepes: belepesi feltetelek
swing_low = min([bar.low for bar in last_20_bars])
if current_bar.low < swing_low * 0.997:  # sweep
    if current_bar.close > swing_low:     # visszavette

        # 2. lepes: kilepesek
        entry = current_bar.close
        stop = swing_low * 0.995
        target = entry + ((entry - stop) * 3)

        # 3. lepes: poziciomeret
        risk_amount = account_equity * 0.02
        size = risk_amount / (entry - stop)

        # 4. lepes: ugyletkezeles (50 % 2R-nel)
        profit_target_partial = entry + ((entry - stop) * 2)

        # 5. lepes: szurok
        if VIX < 30 and time_in_window():
            PLACE_ORDER(symbol, size, entry, stop, target)

Ez már futtatható. Egy bot minden egyes alkalommal tökéletesen követi ezeket a szabályokat.

A bot teljes megvalósítása (sweep-fordulós stratégia)

import alpaca_trade_api as tradeapi
from alpaca_trade_api.rest import TimeFrame
import os, time

# Beallitas
API_KEY = os.getenv('ALPACA_API_KEY')  # SOHA ne ird bele a kodba!
API_SECRET = os.getenv('ALPACA_API_SECRET')
api = tradeapi.REST(API_KEY, API_SECRET, 'https://paper-api.alpaca.markets')

MAX_NOTIONAL_MULT = 1.5   # soha ne tarts a sajat toke 1,5-szeresenel tobbet
MAX_DAILY_LOSS = 0.03     # veszleallito: -3 %-nal aznapra leallunk

def get_swing_low(bars, lookback=20):
    # Hagyd ki az aktualis gyertyat. Ha benne van, a swing-alj MAGA az
    # aktualis alj, a sweep-teszt sosem igaz, es a bot sosem lo el.
    lows = [bar.l for bar in bars[-(lookback + 1):-1]]
    return min(lows)

def check_sweep(current_price, current_low, swing_low):
    # Sweep = aktualis alj < swing-alj (0,3 %), majd vissza fole
    if current_low < swing_low * 0.997 and current_price > swing_low:
        return True
    return False

def calculate_position_size(api, entry, stop):
    equity = float(api.get_account().equity)
    risk_amount = equity * 0.02                        # 2 % kockazat
    by_risk = risk_amount / (entry - stop)
    by_notional = (equity * MAX_NOTIONAL_MULT) / entry  # a kontroll, amit Mike kihagyott
    return int(min(by_risk, by_notional))

def kill_switch_tripped(api):
    acct = api.get_account()
    move = (float(acct.equity) - float(acct.last_equity)) / float(acct.last_equity)
    return move <= -MAX_DAILY_LOSS

def in_position(api, symbol):
    # Kerdezd meg a brokert; ne bizz egy lokalis valtozoban. Egy bracket, ami
    # ejjel teljesult es lezarult, ne blokkolja a holnapi setupot.
    try:
        api.get_position(symbol)
        return True
    except Exception:
        return False

def place_bracket_order(api, symbol, size, entry, stop, target):
    try:
        order = api.submit_order(
            symbol=symbol, qty=size, side='buy', type='limit',
            limit_price=entry, time_in_force='gtc',
            order_class='bracket',
            stop_loss={'stop_price': stop},
            take_profit={'limit_price': target}
        )
        print(f"✓ Megbizas: {size} reszveny @ ${entry} | Stop: ${stop} | Cel: ${target}")
        return order
    except Exception as e:
        print(f"✗ A megbizas nem ment at: {e}")
        return None

def run_bot(symbol='SPY'):
    print(f"A bot elindult. Figyelem a(z) {symbol} sweep setupjait...")

    while True:
        try:
            if not api.get_clock().is_open:      # 1. kontroll: tozsdeidő
                time.sleep(60)
                continue
            if kill_switch_tripped(api):         # 2. kontroll: napi veszteseglimit
                print("🛑 Elertuk a napi veszteseglimitet. Leallok.")
                break

            bars = api.get_bars(symbol, TimeFrame.Minute, limit=50)
            current_price = bars[-1].c
            current_low = bars[-1].l
            swing_low = get_swing_low(bars)

            if not in_position(api, symbol) and check_sweep(current_price, current_low, swing_low):
                print(f"🎯 Sweep eszlelve @ ${current_price}")
                entry = current_price
                stop = swing_low * 0.995
                target = entry + (entry - stop) * 3  # 3R
                size = calculate_position_size(api, entry, stop)   # 3. kontroll: neverték-plafon
                if size > 0:
                    place_bracket_order(api, symbol, size, entry, stop, target)

            time.sleep(60)  # percenkent ellenorizzuk
        except Exception as e:
            print(f"Hiba: {e}")
            time.sleep(60)

run_bot()  # ~75 sor - es a harom legfontosabb kozuluk a kontroll.

Mit csinál ez: Csatlakozik az Alpacához, lehúzza a SPY 1 perces gyertyáit, felismeri a sweep utáni fordulókat (az alj lesöpör a swing-alj alá, majd visszaveszi), 2 %-os kockázat alapján méretez névérték-plafonnal korlátozva, bracket megbízást ad be (belépő + stop + 3R-es cél), és mindezt 60 másodpercenként megismétli — de csak nyitott piac mellett, csak akkor, ha a bróker szerint nincs pozíció, és soha, ha a nap -3 %-ban áll. Tökéletes fegyelem, nulla érzelem, három fék.

💡 az aha-pillanat

Épp most vetted ki az emberi réteget. Nincs többé «vajon belépjek?». Nincs többé «talán még várok».

Megjelenik a setup → a bot kereskedik. Nem jelenik meg → a bot vár. Tökéletes fegyelem.

4. rész: éles üzembe helyezés (a nehéz rész)

A papírkereskedés ≠ éles kereskedés

A botod papíron tökéletesen fut. Élesíted. Összeomlik. Megbízásokat utasítanak vissza. Nem érted, mi történik.

Üdv az éles üzemben.

Gyakori hibák (és hogyan kezeld őket)

Gyakori hibák: Kapcsolati időtúllépés, elutasított megbízás, részteljesülések, kéréskorlátok, zárva tartó piac. Megoldások: Újrapróbálkozási logika (3×, exponenciális várakozással), előzetes ellenőrzések (fedezet, nyitvatartás, ár), részteljesülések kezelése, kéréskorlátozás (percenként 200), tőzsdeidő-ellenőrzés (keleti idő szerint 9:30-16). A profi botok elegánsan kezelik a hibákat.

Újrapróbálkozási logika (elengedhetetlen)

import uuid

def place_order_with_retry(api, **order_params):
    """A megbizas kuldesenek ujraprobalasa legfeljebb 3-szor"""
    max_retries = 3

    # Minden probalkozasnal ugyanaz az azonosito. Ha az elso keres tenyleg
    # elert a brokerhez, es csak a valasz veszett el, az ujraprobalast
    # duplikatumkent utasitjak vissza a pozicio megduplazasa helyett.
    order_params.setdefault('client_order_id', f"bot-{uuid.uuid4()}")

    for attempt in range(max_retries):
        try:
            order = api.submit_order(**order_params)
            return order  # Sikerult!

        except Exception as e:
            if attempt < max_retries - 1:
                wait = 2 ** attempt  # 1s, majd 2s (exponencialis varakozas)
                print(f"A megbizas nem ment at: {e}. Ujraprobalas {wait}s mulva...")
                time.sleep(wait)
            else:
                # Az utolso probalkozas is elbukott
                print(f"A megbizas {max_retries} probalkozas utan sem ment at: {e}")
                # Riasztas kuldese (e-mail, SMS)
                raise  # A kivetel ujradobasa

Felügyelet és riasztások (kritikus)

A botod egy felhős VPS-en fut. Te vacsorázol. A bot hibába ütközik.

Most értél a félútra. A kulcsstratégiákat már megtanultad.

Remek haladás! Ha kell, nyújtózz egyet, aztán belevágunk a következő haladó fogalmakba.

Honnan tudod meg?

Válasz: Riasztásokból.

import smtplib
from email.mime.text import MIMEText

def send_alert(subject, message):
    """Riasztas kuldese e-mailben"""
    msg = MIMEText(message)
    msg['Subject'] = subject
    msg['From'] = 'bot@yourbot.com'
    msg['To'] = 'you@gmail.com'

    # Kuldes a Gmail SMTP-jen at - ehhez Gmail-alkalmazasjelszo kell,
    # nem a fiokod jelszava; az alap hitelesitest 2022-ben kikapcsoltak.
    with smtplib.SMTP('smtp.gmail.com', 587) as server:
        server.starttls()
        server.login('bot@yourbot.com', os.getenv('EMAIL_PASSWORD'))
        server.send_message(msg)

# Hasznalat
try:
    # Kereskedesi logika
    pass
except Exception as e:
    send_alert(
        subject="🚨 Hiba a kereskedesi botban",
        message=f"A bot hibaba utkozott: {e}"
    )
    raise

Mostantól perceken belül megtudod, ha valami elromlik.

🚨 Vészleállító (nem alku tárgya)

A botodnak automatikusan le kell állnia a kereskedéssel, ha:

  • A napi drawdown meghaladja a -3 %-ot (Mike újraépített botja ráadásul -10 %-nál a csúcstól véglegesen ki is kapcsolt)
  • 5 veszteség jön egymás után
  • Az API-hibák óránként meghaladják a 10-et
  • Váratlan viselkedést észlel

Kódold le ezt. Teszteld. A számlád múlik rajta.

Üzemeltetés: hol fusson a botod

Miért bukik el az otthoni gép

  • Áramszünet: A gép lekapcsol, a bot megáll
  • Internetkimaradás: Nincs kapcsolat = elmulasztott ügyletek
  • Windows-frissítések: Automatikus újraindulás hajnali 3-kor = a bot halott
  • Te: «Csak gyorsan újraindítom a gépet…»

Rendelkezésre állás: 95 % (algokereskedéshez elfogadhatatlan)

Miért nyer a felhős VPS

  • 99,9 % rendelkezésre állás: AWS, DigitalOcean, Linode
  • Nincs áramszünet: Redundáns tápellátás, mentések
  • Gyors internet: Alacsony késleltetés a bróker API-i felé
  • Automatikus újraindulás: Összeomlott a bot? 30 másodperc alatt újraindul

Költség: Havi 5-20 dollár (a legolcsóbb előnyerősítő, amit valaha veszel)

5. rész: a valóság próbája

Az automatizálás nem «beállítom és elfelejtem»

Élesíted a botodat. Egy hónapig kereskedik. Sikeraránya: 65 %. Pont mint a backtestben. Odavagy tőle.

2. hónap: a sikerarány 48 %-ra esik. Nem érted.

Mi történt?

Megváltozott a piaci rezsim. A stratégiád trendelő piacon működik. A piac oldalazásba váltott. A botod tovább kereskedett. Az eredmények megsínylették.

🚨 A kemény igazság

Az automatizálás felnagyítja az előnyödet. De a rezsimváltásokhoz nem alkalmazkodik magától.

Továbbra is figyelned, felül kell vizsgálnod és igazítanod kell. Csak ritkábban.

A bot havi karbantartási listája

1. Teljesítménymutatók: A találati arány a backtest 5 %-án belül van? Az átlagos R pozitív? A drawdown elfogadható? Romlott a slippage? 2. Hibanaplók: Kapcsolati hibák, elutasított megbízások, szélsőséges esetek. 3. Rezsimellenőrzés: A piac még mindig kedvez a stratégiának? Magas VIX → szüneteltetés. Alacsony volatilitás → a kitörések nehezen mennek.

🎓 A lényeg

  • Az automatizálás kiveszi az érzelmet, de nem javít meg egy rossz stratégiát
  • Kezdd az Alpacával (részvény) vagy a Binance-szal (kripto) az egyszerű API-hozzáférésért
  • Éles indulás előtt kereskedj 3-6 hónapot papíron
  • A hibakezelés kritikus: újrapróbálkozás, riasztások, vészleállító
  • Üzemeltesd felhős VPS-en (havi 5-20 dollár) a 99,9 %-os rendelkezésre állásért
  • Havonta ellenőrizd: teljesítmény, hibák, illeszkedés a rezsimhez

📝 Gyakorlófeladat

Építsd meg az első API-s kereskedési szkriptedet

  1. Nyiss Alpaca papírkereskedési számlát
    • Regisztrálj az alpaca.markets oldalon (a papírkereskedés ingyenes)
    • Generálj API-kulcsot és titkos kulcsot
    • Telepítsd a Python-könyvtárat: pip install alpaca-trade-api
  2. Írj egy egyszerű stratégiaszkriptet
    • Csatlakozz az Alpaca API-jához
    • Kérd le a SPY árát 60 másodpercenként
    • Valósíts meg alaplogikát: ha az ár felfelé keresztezi a 20 periódusos SMA-t, adj be vételi megbízást
    • Add hozzá a pozícióméret számítását (ügyletenként 2 % kockázat)
    • Tegyél be stop-losst -1R-nél
  3. Adj hozzá hibakezelést
    • Csomagold az API-hívásokat try/except blokkokba
    • Naplózz minden hibát egy fájlba
    • Valósítsd meg az újrapróbálkozási logikát (3 próbálkozás)
  4. Teszteld 1 hétig papírkereskedésben
    • Figyeld a végrehajtást: rendesen teljesülnek a megbízások?
    • Nézd meg a naplókat: van kapcsolati hiba?
    • Vizsgáld meg a teljesítményt: egyezik a backtesteddel?

Cél: Építsd meg és indítsd el az első automatizált kereskedési szkriptedet papírkereskedési módban. Sajátítsd el az alapokat, mielőtt valódi tőkét kockáztatsz.

🎮 Teszteld, mit értettél meg (semmi nyomás)

1. kérdés: írtál egy botot, amely papírkereskedésben tökéletesen fut. Mennyi a minimális tesztidő az éles indulás előtt?

A) 1 hét (ha megy, élesítsd!)
B) 1 hónap (elég annak megítéléséhez, nyereséges-e)
C) 3-6 hónap (a következetesség ellenőrzése különböző piaci körülmények között)
D) Nem kell tesztelni (a backtest elég)

2. kérdés: a botod sikeraránya a backtestben 65 % volt, de élesben 2 hónap után 48 %. Mi a legvalószínűbb ok?

A) A bróker szabotálja az ügyleteidet
B) Hibás a kódod (véletlenszerű viselkedés)
C) Megváltozott a piaci rezsim (a stratégia nem illik a mostani körülményekhez)
D) A backtesting haszontalan (élesben mindig elbukik)

Ha idáig eljutottál, megértetted: az automatizálás nem varázslat, hanem fegyelmezett végrehajtás nagy léptékben. Kódold le az előnyödet. Teszteld szigorúan. Élesíts óvatosan. Figyeld folyamatosan.

Kapcsolódó leckék

Haladó #55

Gépi tanulás a kereskedésben

Használj ML-modelleket automatizált kereskedési jelzések előállítására.

Lecke elolvasása →
Középhaladó #32

Haladó backtesting

Teszteld az automatizált stratégiáidat, mielőtt élesíted őket.

Lecke elolvasása →
Haladó #59

Teljesítmény-hozzájárulás

Elemezd, mely automatizált stratégiák járulnak hozzá a hozamhoz.

Lecke elolvasása →

⏭️ Következik

58. lecke: haladó portfólióelmélet — Modern portfólióelmélet, hatékony határgörbe, kockázatparitás és professzionális portfólióépítési keretek.

💬 Beszélgetés (0 hozzászólás)

0/1000

Hozzászólások betöltése…

← Előző lecke Következő lecke →
Kizárólag oktatási célra. A kereskedés jelentős veszteségkockázattal jár. Ez nem pénzügyi tanácsadás. A múltbeli teljesítmény nem garantálja a jövőbeli eredményeket.