V tomto článku
Po prečítaní dokážete…
- Rozlíšiť neúplné dáta od platného záporného výsledku pravidla.
- Skontrolovať spoločný čas kotácie a pôvodný rozpočet objemu.
- Zostaviť po reštarte kontrolu cieľa, plnení a aktívneho zvyšku.
Vysvetlenie pojmov priamo v článku
Algoritmické obchodovanie Expert Advisor (EA) Jednoduchý kĺzavý priemer (SMA) Exponenciálny kĺzavý priemer (EMA) Obchodný plán Backtest: skúška pravidiel na historických údajoch Nominálna hodnota pozície Demo účet Očakávaná hodnota výsledkuPrvý algoritmický projekt môže zapisovať signály, počítať objem alebo kontrolovať expozíciu bez jediného obchodu. Vyberte jednu operáciu, ktorej výsledok dokážete vysvetliť a overiť. Údaje, pravidlo aj správanie programu určte skôr než povolíte odosielanie príkazov. Automatizácia sama nevytvára ziskovú stratégiu.
Čo algoritmické obchodovanie je a čo ním nedokazujete
Oddeľte výber signálu, realizáciu už prijatého rozhodnutia, správu pozície a výkazníctvo. Program deliaci existujúci príkaz má iný účel než robot vyberajúci vstupy. Správa BIS z roku 2020 o FX execution algorithms skúma realizáciu a jej riziká; nepotvrdzuje ziskovosť retailového robota. Skratka EA tam znamená execution algorithm, v MetaTraderi Expert Advisor.
Špecifikácia potrebuje symbol, zdroj dát, prevádzkové hodiny, čas rozhodnutia, pravidlá vstupu a výstupu, objem, limit expozície a reakciu na už otvorenú pozíciu. Ľudské rozhodnutia o vstupoch a dohľade zostávajú. Kód môže odstrániť jeden ručný omyl a zaviesť iný, napríklad duplicitnú požiadavku po reštarte. Správnosť programu preto overujte oddelene od ekonomického výsledku pravidla.
Nástroj vyberajte podľa úlohy
Na jednoduchú pripomienku môže stačiť upozornenie. Natívne Alerts v MT5 porovnáva cenu, objem posledného obchodu alebo čas; nie je editorom ľubovoľného spojenia priemeru a ATR. Vlastná logika môže potrebovať indikátor či EA. MQL5 funguje v MT5; Python môže analyzovať dáta alebo používať príslušné zdokumentované prepojenie. Neexistuje povinný rebrík upozornenie → MQL5 → Python → FIX.
Overte kompatibilitu s konkrétnym účtom, dátami a operáciou. Nepredpokladajte pevný počet riadkov kódu, čas vývoja, latenciu ani API dostupné pri každom produkte brokera. Základy EA v MQL5 vysvetľujú program v platforme; Backtest v Pythone je iný výskumný postup. Tú istú myšlienku nemusíte povinne písať dvakrát.
Tretí vstup priemeru nemožno hádať
Požadovaný počet záznamov patrí k pravidlu. Dve správne ceny nestačia na rozhodnutie založené na troch.
Tretí vstup priemeru nemožno hádať
Celý diagram zobrazíte posunutím do strany.
Na malej obrazovke posúvajte diagram vodorovne alebo ho zväčšite. Vysvetlenie nájdete aj v texte.
Pôvodný model jedného symbolu a intervalu vyžaduje presne tri ukončené historické závery, od najstaršieho: x, 100, 102. Majú rovnakú váhu 1/3, pred porovnaním nezaokrúhľujeme. x je neznáma staršia cena, nie budúca. Vymyslené x = 98 dá priemer 100 a posledných 102 je nad ním. Iné možné x = 106 dá 308/3 ≈ 102,667 a podmienka neplatí. Ani variant nepredstierame ako trhové dáta.
Priemer iba z dvoch cien je 101, ale tým zmeníte pravidlo. Dosadenie nuly vytvorí fiktívny údaj. Program zapíše neúplné dáta a nevydá rozhodnutie; to nie je platný výsledok „nevstúpiť“. Po neskoršom úspešnom stiahnutí overí tie isté zamýšľané sviečky. CopyRates vracia počet skopírovaných záznamov alebo chybu; nestačí overiť, že prišlo aspoň niečo. Príklad rieši úplnosť, nie smer indexovania poľa.
Aké zručnosti potrebujete?
Programovanie, správa dát, výpočet objemu a štatistické uvažovanie pomáhajú overiť konkrétne použité správanie. Krátka equity krivka opisuje vzorku, nedokazuje budúci zisk. Naplánujte reprezentatívne dáta, oddelené vyhodnotenie mimo vývojovej vzorky a demo kontrolu realizácie. MQL5 využíva terminál MT5, Python terminál alebo iné zdokumentované rozhranie. Celková odozva závisí od kódu, hostingu, siete a realizácie brokera; jednociferné milisekundy nie sú garancia.
Od nápadu k overiteľnému modelu
Pri hypotetickom prekrížení EUR/USD H1 najprv presne definujte EMA, SMA, ATR, okamih signálu, stop a cieľ. Porovnajte ručné a programové rozhodnutia na rovnakých dátach a dátumoch. Päťročný automatický test nemusí kopírovať šesťmesačnú ručnú vzorku: odlišné sú režimy aj dátové zdroje. Najprv vysvetlite rozdiely na rovnakom období, zahrňte náklady a potom zmrazené pravidlo skúmajte inde.
Cvičná offline špecifikácia môže použiť EMA 21, SMA 55 a výslovne zvolený odstup podľa ATR. Uveďte, či používa ukončené H1 sviečky a kedy sa smie vyhodnotiť. Spočiatku signál len zapíše. Vyskúšajte jeden signál, žiadny signál pri úplných dátach, zmenu sviečky, chýbajúcu históriu a existujúcu pozíciu. Chýbajúci vstup nie je platný záporný signál.
Pôvodný samostatný USD model má equity 10 000 USD, zvolený cenový rozpočet 0,5 % = 50 USD, stop 25 pipov a EUR/USD pip 0,0001. Pri kontrakte 100 000 EUR na lot je hodnota pipu 10 USD. Pred ďalšími nákladmi vychádza 50 / (25 × 10) = 0,20 lotu = 20 000 EUR nominálu. Rozpočet, nominál a marža sú odlišné veličiny; uvedené nastavenia nie sú univerzálne odporúčanie.
Províziu a predpoklady realizácie zahrňte pred prispôsobením objemu povolenému kroku. Bežný stop môže pri medzere vyplniť horšie, takže 50 USD nie je bezpodmienečný limit. Porovnávajte jednotlivé rozhodnutia z identických pravidiel a dát, nielen podobný konečný zisk. Výber parametrov oddeľte od hodnotenia: dobrý výsledok na dátach použitých pri výbere môže vzniknúť výberovým skreslením.
Aj správne ceny môžu vytvoriť chybný spread, keď ich zmiešate v čase. Pôvodný vymyslený prúd má t1 Bid/Ask 1,1000/1,1002 a t2 1,1010/1,1012. Oba riadky majú 2 pipy. Starý Ask t1 s novým Bid t2 dá (1,1002 − 1,1010) / 0,0001 = −8 pipov. Filter spread < 2,5 by túto skonštruovanú hodnotu prijal. Nie je to pozorovaný záporný spread na trhu.
SymbolInfoTick vracia ceny a čas ich aktualizácie v jednej štruktúre MqlTick. Overte úspech a pracujte s uchovanými poľami tej istej štruktúry. Pridajte test zámerne miešajúci dva meniace sa, samostatne platné riadky. Konzistentná kotácia je kontrola dát, nie garancia likvidity alebo ceny budúceho plnenia.
Nový EUR model: po reštarte nesčítajte cieľ a už vyplnený objem
Oddelený hypotetický demo projekt má účet 5 000 EUR a jediný zamýšľaný long 10 000 EUR na EUR/USD, nie ďalších 10 000 pri každom opakovaní. Nettingový účet nemá inú pozíciu ani iný obchodujúci program. Prvých 4 000 EUR sa úplne vyplní na Ask 1,1000; zostávajúcich 6 000 ešte patrí prijatému príkazu. Potom spojenie vypadne skôr, než program pozná konečný stav. Nový pokus nesmie automaticky predpokladať nulovú realizáciu.
Pred ďalšou požiadavkou poznajte vyplnený aj stále aktívny objem. Ak stav neviete zosúladiť, nevymýšľajte jeho nulovú hodnotu.
Na malej obrazovke možno diagram posúvať vodorovne alebo zväčšiť. Hodnoty a záver nájdete aj nižšie v texte.
- Odpoveď alebo stav neznámy
- Ďalší príkaz blokovať – Najprv zosúladiť zámer s príkazmi, históriou plnení a pozíciou.
- Potvrdené 4 000 vyplnené a 6 000 aktívne
- Nový objem 0 EUR – Cieľ už pokrýva 4 000 + 6 000. Samotná otvorená pozícia nestačí.
- Zvyšok potvrdene zrušený bez ďalšieho plnenia
- Nevykrytý cieľ 6 000 EUR – Po ďalšom presnom nákupe 6 000 je celkom 10 000. Nových 10 000 by vytvorilo 14 000.
- Oddelené modely pri rovnakom výstupnom Bid
- 10 000: −13,20 EUR; 14 000: −18,60 EUR – Ask prvej časti 1,1000, druhej 1,1005; výstup Bid 1,0990. Prepočet 0,90, tri poplatky po 0,50 EUR.
V stave neistoty sa ďalšia požiadavka neposiela. Po opätovnom pripojení program spáruje zámer so skutočnými príkazmi, históriou plnení a pozíciou. Ak je 4 000 vyplnených a 6 000 stále aktívnych, cieľ už pokrýva 4 000 + 6 000 = 10 000; ďalší objem je nula. Až v samostatnom variante, kde je zrušenie zvyšných 6 000 potvrdené bez ďalšieho plnenia a žiadny zvyšok nezostáva aktívny, je nevykrytý cieľ 10 000 − 4 000 = 6 000 EUR.
Na porovnanie presne priraďme tento nový nákup 6 000 na Ask 1,1005 a úplné zatvorenie 10 000 na Bid 1,0990. Dve vstupné časti majú cenové výsledky −4 USD a −9 USD, spolu −13 USD. Pevný prepočet je 0,90 EUR/USD a každá z troch operácií má províziu 0,50 EUR: −13 × 0,90 − 1,50 = −13,20 EUR, konečný účet 4 986,80 EUR. Priemerný vstup je (4 000 × 1,1000 + 6 000 × 1,1005) / 10 000 = 1,1003.
Alternatívny chybný program po rovnakom potvrdenom zrušení zvyšku pošle celých 10 000 namiesto 6 000, tiež na 1,1005. Celkom drží 14 000 EUR. Úplný výstup 14 000 na rovnakom 1,0990 dá −4 − 15 = −19 USD. S tým istým prepočtom a troma poplatkami je to −18,60 EUR, účet 4 981,40 EUR. Rozdiel 5,40 EUR spôsobila ďalšia expozícia 4 000 EUR pri pridelenom pohybe, nie chyba smeru signálu.
Oba varianty predpokladajú presné uvedené plnenia, dostatočnú maržu, žiadne ďalšie náklady, financovanie, konverzný spread, externé toky alebo skoršie nútené zatvorenie. Spread je už v cenách; výstupná cena nie je garancia bežného stopu. Nejde o návod obchodovať naživo. Lokálne ID zámeru pomáha spárovaniu, samo nedokazuje serverovú ochranu proti duplicitám. Ani údaj „pozícia 4 000“ nestačí bez stavu ešte aktívnych príkazov a pokračujúcich udalostí. Pri neurčitosti musí zostať blokovaný ďalší vstup.
Kód, dáta a ekonomický výsledok skúšajte oddelene
Projekt môže zlyhať pravidlom, neúplnými dátami, chybným kódom, odlišnou realizáciou aj prevádzkou. Nevyhlasujte poradie dvoch univerzálnych príčin a nepodceňujte programátorské chyby. Po nejasnej odpovedi porovnajte príkazy, plnenia a pozície pred opakovaním. Samotné true z OrderSend nepotvrdzuje dokončené plnenie; potrebujete výsledkové kódy a následný stav. Zapisujte verziu pravidla, čas vstupov a dôvod konania alebo jeho pozastavenia.
Backtest potrebuje dáta príslušného produktu, náklady a časové poradie. Zaznamenajte všetky skúšané varianty. Úprava pravidla po prečítaní mimovzorkového výsledku začlení aj toto obdobie do vývoja. Overovanie obchodnej výhody pomáha oddeliť výber od hodnotenia. Uchovajte aj neúspešné výstupy a dôvody zmien.
Úspešnosť, očakávaný priemer a profit factor merajú iné veci. V pôvodnej hypotetickej vzorke 100 obchodov vyhrá 40 po +2R a prehrá 60 po −1R. Priemer je (80 − 60) / 100 = +0,2R pred nákladmi; profit factor používa kladnú veľkosť súčtu strát: 80/60 ≈ 1,33. Sú to vybrané vstupy, nie výsledok otestovanej stratégie alebo dôkaz ďalšej vzorky.
Veďte rozpočet dát, hostingu, licencií a času aj pri jazyku bez licenčného poplatku. Aktuálne ceny, prístupy a obnova závisia od zostavy. Testujte výpadok aj reštart: VPS neodstráni dohľad ani každú poruchu. MQL5 a Python porovnávajte podľa konkrétnej prevádzky.
Čo urobiť pri prvom projekte?
- Spíšte jednu reprodukovateľnú operáciu: dáta, čas, pravidlo, výstup a dôvody pozastavenia. Spoľahlivý denník signálov môže byť hotový prvý projekt.
- Na malých vysvetliteľných vzorkách overte úplnosť a spoločný čas kotácie. Oddeľte ukončenú sviečku od práve otvorenej.
- Ak potrebujete príkazy, pridajte ich vo výslovne určenom demo prostredí. Skúste prijatie, odmietnutie, reštart aj nejasnú odpoveď. Kalendárny termín neprikazuje prechod na reálne peniaze.
- Zmrazte pravidlo na oddelené vyhodnotenie s nákladmi produktu. Porovnajte rovnaké dátumy a rozhodnutia; materiálny rozdiel vysvetlite namiesto vymyslenej univerzálnej tolerancie.
- Spíšte postup pauzy, reštartu a aktualizácie. Vypnutie lokálneho AutoTrading nezatvorí existujúce pozície. Prijaté serverové ochrany oddeľte od programových a vzdialenú inštanciu overte osobitne. Demo negarantuje rovnakú realizáciu naživo.
Overte si, čo ste sa naučili
Cvičenie: približne 2 minúty.
Zobraziť odpoveď a vysvetlenie
Možné doplnenia 98 a 106 dávajú opačné výsledky. Neprítomný údaj ponechajte ako chýbajúci.
Ďalšie otázky
Čo retailová algoritmizácia skutočne znamená?
Spísať operáciu pre softvér: signály, realizáciu, správu pozície alebo výkazníctvo. Nemusia byť spojené a prvý projekt nemusí obchodovať. Určte informácie, čas, chýbajúce dáta, objem, expozíciu a skutočný stav príkazov. Rozpočet straty nie je nominál ani garantované maximum. Automatizácia nedokazuje trvalú výhodu.
Ako vybrať upozornenie, EA alebo výskumný program?
Podľa úlohy, nie povinného poradia jazykov. Natívne MT5 Alerts podporuje jednoduché porovnania ceny, objemu posledného obchodu a času; vlastné pravidlo môže potrebovať indikátor alebo EA. MQL5 a Python majú odlišné prostredia a prepojenia. Netvrdíme povinných 12–24 mesiacov, univerzálnu podsekundovú odozvu ani dostupnosť API pri každom brokerovi.
Stačí sa naučiť programovať a meniť parametre?
Nie. Potrebujete vedieť preveriť práve používaný kód a dáta, dimenzovať expozíciu a vyhodnotiť štatistické výsledky. Zmena bez syntaktickej chyby netestuje stav, realizáciu ani ekonomické predpoklady. Žiadny univerzálny počet obchodov či dĺžka demo obdobia nedokazuje výhodu. Skúste chýbajúce dáta, reštart, odmietnutie aj nejasnú odpoveď.
Čo overiť pred rozšírením projektu?
Pravidlo, vstupné dáta, program, realizáciu a prevádzku. Chyba kódu môže zneplatniť výsledok alebo vytvoriť nechcenú pozíciu; kladný historický priemer preto nestačí. Uchovajte neúspešné varianty a postup odmietnutia alebo pauzy. Porovnávajte príkazy a plnenia, nielen konečnú krivku; pri nejasnom stave neodosielajte automaticky celý objem znovu.
Zdroje a overenie
- BIS Markets Committee: FX execution algorithms and market functioning (2020)
Rozlišuje realizáciu vopred zvoleného objemu, delenie príkazov a riziká. Neoveruje ziskovosť retailového EA.
- MetaQuotes: CopyRates
Počet získaných záznamov, chyby a čiastočne dostupná história; kontrola požadovaného počtu a času sviečok.
- MetaQuotes: SymbolInfoTick
Úspech volania a ceny s časom aktualizácie v MqlTick. Hypotetický zmiešaný spread nie je trhová príležitosť.
- MetaQuotes: OrderSend
True nie je dôkaz dokončeného plnenia; kontrola retcode a viacerých transakčných udalostí. Nevykonávame obchodný experiment.
Výpočty používajú výslovne uvedené predpoklady. Nenahrádzajú aktuálne trhové údaje ani podmienky poskytovateľa.
