V tomto článku
Po přečtení dokážete…
- Rozlišit dva hybridní provozy a jejich závislosti.
- Zachovat sémantiku NaN, rovnosti a konečných vstupů při přenosu.
- Před opakováním usmířit účet a oddělit konečnou cenu od čerstvého požadavku.
Vysvětlení pojmů přímo v článku
Backtest: historický test pravidel Provedení pokynu Nominální hodnota pozice Obchodní provize Demo účet Spread: rozdíl ask a bidMQL5 a Python automatizují předem vymezený proces různými cestami. Nejdříve zvolte účet, data, přístup a provozní sestavu. Jazyk, krátký skript ani hybrid nejsou důkaz ziskových pravidel či univerzálně rychlejší spolehlivé exekuce. Porovnávejte konkrétní závislosti a zaznamenané odpovědi.
Srovnejte provozní uspořádání
MQL5 EA běží přes terminál MT5. Python může použít oficiální balíček MetaTrader 5, samostatné API brokera nebo jen historické soubory. Oficiální balíček komunikuje s terminálem, nikoli přímo s každým brokerovým serverem. Prověřená distribuce na PyPI má Windows x86-64 wheels; dostupnost samotného Pythonu jinde není totéž. Verze interpretu a balíčku musejí souhlasit.
initialize() může terminál podle potřeby spustit. Určete konkrétní instalaci a přečtěte účet, server i demo/live status místo spoléhání na naposledy použitý účet. Úspěšné spojení není potvrzení výsledku dřívějšího pokynu. Samostatné API potřebuje vlastní kontrolu subjektu, produktu, oprávnění, dat a jednotek.
Na malé obrazovce posouvejte tabulku vodorovně, abyste přečetli všechny sloupce.
| Varianta | Závislosti a první kontrola |
|---|---|
| MQL5 EA | Terminál, verze kódu, parametry a účet; ověřte aktivní verzi a odpovědi. |
| Python přes MT5 | Python proces, terminál a komunikace; ověřte identitu po připojení. |
| Python přes jiné API | Autorizace, adaptér, limity a model pokynů; usmiřte jednotky. |
| Python výzkum/MQL5 provoz | Shodná pravidla a verze; přehrajte stejné mezní vstupy. |
Méně procesů může zjednodušit dohled, ale nenahradí reakci na odmítnutí, dílčí plnění nebo nejistý stav. Navazují první algoritmické kroky a základy EA.
Integrace MQL5 má podmínky
MQL5 propojuje události, obchodní funkce a Strategy Tester. Testovací data, náklady a exekuce nejsou automaticky historická realita brokera; cloudová optimalizace má vlastní podmínky. Modely připravené jinde lze provozovat přes podporované ONNX rozhraní: strojové učení tedy nemusí při exekuci potřebovat Python. Ověřte tvary vstupu, předzpracování a význam výstupu.
OnTick není příslib zvláštního callbacku na každý tick. Je-li NewTick ve frontě nebo se zpracovává, další není přidán. Měřte skutečnou zátěž a potřebné časy. Jazyk sám nedokládá jednomilisekundový výkon a rozhodování H1 nevylučuje citlivost na zpoždění vstupu.
Python neodstraňuje kontrolu dat a adaptéru
Analytické knihovny a společná rozhraní pořád potřebují symboly, množství, seance, dostupnost historie a pravidla konkrétního poskytovatele. Více účtů či makrodata jsou požadavky k posouzení, ne automatická převaha jedné sestavy. Uložte verze a konfigurace. Původní repozitář ib_insync byl archivován 14.března 2024: neprokazuje to nefunkčnost existujícího kódu, ale starý návod nepotvrzuje současnou podporu.
Přihlašovací údaje nepatří do veřejného kódu ani běžných logů. Offline analytický test nepotřebuje obchodní oprávnění. Udržujte záznam konkrétní instalace a posledních spolehlivě usmířených operací; návrat procesu po pádu není sám účetní rekonstrukce.
Dva různé významy hybridu
V první variantě Python vyvíjí model a ověřená logika se nasadí jako MQL5 EA. Obsahuje-li provedení vše potřebné, Python nemusí zůstat spuštěn. Ve druhé Python průběžně posílá požadavky přes terminál; sledujte oba procesy, čerstvost vstupů a skutečný stav účtu. MetaQuotes Virtual Hosting migruje podporované EA/grafy, není obecná Windows plocha pro libovolný externí Python.
Záložní EA nedokáže zavřít přes stejný nefunkční terminál či rozbité spojení. Serverové ochrany ověřujte zvlášť podle skutečně přijatých parametrů. Dokumentované order_send() posílá požadavek a vrací strukturu výsledku. Výstup potřebuje odpovídající akci a identifikaci pozice; obecná funkce position_close() zde dokumentována není.
Samostatný model požaduje 0,10 lotu: první pokyn se provede, odpověď se ztratí a slepé opakování dalších 0,10 se také provede. Celkem je 0,20 místo 0,10. Při lineárním EUR/USD s kontraktem 100 000 EUR/lot, pipu 0,0001 a USD účtu vzroste expozice z 1 na 2USD/pip. Obě plnění jsou přidělený předpoklad, nikoli tvrzení, že všechny nejisté požadavky se provedly nebo každý účet pozice stejně slučuje. Po nejistotě nejdříve usmiřte pokyny, realizace a pozice.
Negace může z chybějících dat udělat True
Pravdivý booleovský výraz nepotvrzuje dostupnost indikátoru. Pole a jiné typy mají vlastní pravidla.
- x>10
- False – Chybějící údaj není vyšší konečná cena.
- not(x<=10)
- True – Porovnání je False, jeho negace True.
- isfinite(x) and x>10
- False – Naše explicitní brána vyhodnocení blokuje.
Pro skalární Python float nastavte x = float('nan') a fiktivní mez 10. NaN není nula ani obrovské číslo. x > 10 je False, stejně jako x <= 10; proto not(x <= 10) je True. U konečných čísel mohou podmínky vypadat ekvivalentně, ale chybějící vstup je rozliší. Naše politika math.isfinite(x) and x > 10 blokuje NaN. Před podmínkou prověřte typ, dostupnost a konečnost, nikoli pouze negaci.
Jde o skalární float, ne pole NumPy ani pravidla Decimal. Při přenosu zachovejte chybějící a nekonečné vstupy jako samostatné testy; nepředpokládejte totožnou sémantiku všech jazyků. Samotné True neznamená dostupný indikátor.
Usmiřte hranice pravidla a přidělená plnění
Hypotetický signál po uzavření svíčky na 1,1000: model A tam nakoupí, B až na pozdějším Ask 1,1003. Rozdíl je při pipu 0,0001 tři pipy. Čas, pohyb a cenová strana mohou působit společně; celé tři nelze označit za režii Pythonu ani za spread. Porovnávejte jednotlivé signály, požadavky, množství, ceny a náklady dříve než výnos.
Python float 0.1 + 0.2 je 0.30000000000000004, větší než float 0.3. Decimal vytvořené z řetězců dávají v tomto modelu přesně 0.3; celočíselné jednotky 1+2=3. Zobrazení obou jako „0.3“ nezmění uložené porovnání. Zkontrolujte podmezní, rovný, nadmezní, chybějící a nekonečný případ; tolerance je nové pravidlo, ne kosmetika. Tyto kontroly nespouštějí MQL5 verzi a neprokazují výhodu. Vektorizovaný test může obsahovat náklady a událostní název necertifikuje plnění. MT5 tester neprovozuje libovolný Python skript jako nativní EA.
Nová CZK kontrola čerstvosti: hypotetický požadavek pro 1000EUR byl spočítán s cenou 25,00CZK/EUR v 10:00:00. Pravidlo dovoluje stáří nejvýše 1 sekundu včetně. V 10:00:02 je stáří 2 sekundy, takže po restartu nesmí projít jen proto, že jsou cena a množství konečné. Jeho nominál 25 000Kč se obnovou spojení nezměnil na nový signál. Neodhadujeme tím skutečnou pozdější cenu ani ztrátu. Log obsahuje původní čas, hranici platnosti a důvod odmítnutí, nikoli vymyšlené plnění.
Rozhodněte podle reprodukovatelného požadavku
Sepište účet/API, data, časování, knihovny, systém a dohled. Malý prototyp může číst data a zaznamenávat signál bez obchodování. Pevná doba nastavení, počet řádků ani poměr dvě ku jedné v době učení nevybírá správnou architekturu. Zvažte jednodušší alternativy; zpoždění měřte v konkrétní sestavě.
Další kroky a poruchové případy
- Zmrazte malé pravidlo s dostupností vstupu, jednotkami a významem rovnosti.
- Oddělte datové kontroly od oprávnění pokynů; přečtěte skutečný účet, instrument a demo status.
- Na demu zkoumejte odmítnutí, chybějící vstup, restart a nejistou odpověď. Obnovení komunikace není důkaz dřívějšího neúspěchu.
- Porovnejte jednotlivé záznamy před ziskem; Pythonový backtest navazuje na čas a výběr dat.
Ověřte si, co jste se naučili
Přibližně 2 minut procvičování.
Zobrazit odpověď a vysvětlení
Dostupnost a isfinite potřebují samostatnou kontrolu. True nedokládá výsledek indikátoru.
Další otázky
Potřebuji silný Python?
Začněte malým datovým úkolem se zkontrolovatelným vstupem a výstupem. Uložte verze. Krátké připojení není systém: oprávnění, dostupnost, odpovědi a účetní usmíření zůstávají samostatné. Univerzální počet řádků a harmonogram neexistují.
Je hybrid stabilní v živém provozu?
Záleží na skutečném uspořádání. Připojení neříká, co se stalo s předchozím požadavkem. Před opakováním zkontrolujte pokyny, realizace a pozice. Záložní EA nepoužije nefunkční stejný host či spojení; dvě vrstvy negarantují stabilitu ani maximální ztrátu.
Je MQL5 dost rychlé na tickové strategie?
Měřte potřebnou odezvu při konkrétní zátěži. Fronta NewTick může sloučit přicházející události. Meziprocesní komunikace je závislost, nikoli pevně doložený benchmark desítek milisekund. I H1 může potřebovat přesné časování realizace.
Kdy přejít na Python?
Pojmenujte požadavek, který současné řešení nesplní či neudrží. Ověřte modelová rozhraní, data a adaptéry. MQL5 podporuje ONNX, Python také vyžaduje kompatibilitu. Dva spouštěče ani tři měsíce neurčují finanční nebo vývojovou návratnost.
Zdroje a ověření
- Python — Porovnání NaN
Čerstvě relevantně čteno 967–969 o neuspořádaných porovnáních NaN. Používáme pouze skalární Python float; nepřenášíme tento výsledek automaticky na Decimal či pole.
- Python — math.isfinite
Čerstvě čteno 166–170: konečnost vylučuje nekonečno a NaN, nula je konečná. Čerstvost a oprávnění nejsou vlastnost této funkce.
- MetaQuotes — Připojení Python k terminálu
Čerstvě čteno 75–127: cesta, naposledy použitý účet a případné spuštění terminálu. True potvrzuje spojení, nikoli výsledek dřívějšího pokynu.
- MetaQuotes — Požadavek order_send
Čerstvě čteno 75–114: struktura požadavku a výsledku, volume a position při uzavření. Ukázka API sama nezaručuje žádnou politiku bezpečného opakování.
- MetaQuotes — ONNX
Čerstvě čteno 62–85: podpora běhu, vstupních/výstupních tvarů a testeru. Podpora rozhraní nepotvrzuje výkonnost konkrétního modelu.
- PyPI — Distribuce MetaTrader 5
Čerstvě čten seznam souborů 165–176 pro zobrazenou 5.0.6231: Windows x86-64 a konkrétní CPython ABI. Nejde o tvrzení, že samotný Python na jiných systémech neexistuje.
- Původní ib_insync — Stav repozitáře
Čerstvě čteno 115: archivace vlastníkem 14.března 2024. Archivace není automatický důkaz nepoužitelnosti každého nasazení; starý návod ale necertifikuje současnou podporu.
Výpočty používají výslovně uvedené předpoklady. Nenahrazují aktuální tržní údaje ani podmínky poskytovatele.
