Prax a overovanie

MQL5 alebo Python: pravidlá, prevádzka a neisté plnenia

Porovnajte terminál, API a hybridný model. NaN a float hranice, spätná kontrola plnení a nový EUR príklad čiastočného vykonania.

Abstraktná redakčná ilustrácia vytvorená AI k téme „MQL5 alebo Python: pravidlá, prevádzka a neisté plnenia“. Nezobrazuje historické kurzy.
Redakčná ilustrácia vytvorená AI; nejde o snímku platformy ani historický cenový graf.

Forex a CFD s pákou môžu rýchlo viesť k strate. Vzdelávací obsah bez osobného investičného odporúčania.

V tomto článku

Po prečítaní dokážete…

  • Odhalíte rozdiel porovnania a negácie pri NaN.
  • Rozlíšite spojenie s terminálom od potvrdeného plnenia.
  • Zosúladíte čiastočný objem a EUR hotovosť pred ďalšou žiadosťou.

Vysvetlenie pojmov priamo v článku

Backtest: skúška pravidiel na historických údajoch Vykonanie pokynu Nominálna hodnota pozície Provízia za obchod Demo účet Spread: rozdiel ask a bid

MQL5 a Python automatizujú definovaný postup odlišnými spôsobmi. Najprv vyberte prístup k účtu, dáta a prevádzkové usporiadanie. Jazyk, krátky skript ani hybridná architektúra samy nepreukazujú ziskové pravidlá alebo všeobecne rýchlejšie a spoľahlivejšie vykonanie.

Porovnajte prevádzkové závislosti

MQL5 Expert Advisor pracuje cez terminál MT5. Python môže používať oficiálny balík MetaTrader5, samostatné brokerovo API alebo iba historické súbory na výskum. Oficiálny balík komunikuje s terminálom; nie priamo s každým brokerovým serverom. Distribúcia musí sedieť k interpretru a systému. Súbory preverovaného vydania PyPI 5.0.6231 majú tagy Windows x86-64. Dostupnosť samotného Pythonu na iných systémoch nie je potvrdením kompatibility tohto balíka.

initialize() môže podľa potreby spustiť terminál. Určte zamýšľanú inštaláciu a skontrolujte účet, server a demo/živý režim; nespoliehajte sa na naposledy použitý účet. Pripojenie nepotvrdzuje výsledok skoršieho pokynu. Samostatné API potrebuje overenie inštitúcie, produktu, oprávnení a dát.

Na malej obrazovke posúvajte tabuľku vodorovne, aby ste prečítali všetky stĺpce.

Závislosti na správu, nie rebríček rýchlosti
UsporiadanieČo udržiavaťPrvá kontrola
MQL5 EATerminál, kód, parametre, účetAktívna verzia a odpovede
Python cez MT5Proces Pythonu, terminál a komunikáciaSprávny účet po pripojení
Python cez brokerovo APIAutorizácia, adaptér, limity, model pokynovJednotky nástroja a povolenia
Výskum Python, vykonanie MQL5Zhodné pravidlá a verziePrehratie rovnakých hraničných vstupov

Pomôžu prvé kroky algoritmického obchodovania a základy EA. Menej procesov môže zjednodušiť dohľad; nenahradí reakciu na odmietnutie, čiastočné plnenie alebo neznámy stav.

Integrácia MQL5 má podmienky

MQL5 spája udalosti terminálu, obchodné funkcie a Strategy Tester. Vyhodnoťte dáta, náklady a predpoklady vykonania; tester nie je historická realita brokera. Cloudová optimalizácia má osobitné podmienky. Modely pripravené inde možno použiť cez podporované ONNX rozhranie, takže strojové učenie nemusí počas vykonania vyžadovať Python. Overte tvary vstupov, predspracovanie a význam výstupov.

OnTick negarantuje samostatné volanie pre každý prijatý tick: ďalší NewTick sa nepridá, ak už jeden čaká alebo sa spracúva. Merajte konkrétnu záťaž a relevantné časy. Názov jazyka nepreukazuje pevnú milisekundovú rýchlosť ani bezvýznamnosť latencie pri H1.

Python neruší kontrolu dát a adaptérov

Knižnice poskytujú analytické a modelovacie nástroje. Spoločné rozhranie stále musí riešiť symboly, množstvá, seansy, dostupnosť dát a pravidlá poskytovateľa. Makrodáta a viac účtov sú požiadavky na posúdenie, nie automatické víťazstvo jednej zostavy.

Uchovajte verzie závislostí a konfigurácie. Pôvodný repozitár ib_insync bol archivovaný 14. marca 2024. Existujúci kód tým nie je dokázane nepoužiteľný, ale starý návod nepotvrdzuje súčasnú podporu. Overte konkrétnu integráciu. Prístupové údaje nepatria do verejného kódu ani bežných logov; analytický súborový test nepotrebuje obchodné oprávnenia.

Dva odlišné hybridné návrhy

V jednom Python vytvorí model a overené pravidlá sa prenesú do MQL5 EA. Ak vykonanie obsahuje celú potrebnú logiku, Python nemusí ďalej bežať. V druhom Python priebežne posiela žiadosti cez terminál. Sledujte oba procesy, čerstvosť vstupov aj skutočný stav účtu.

MetaQuotes Virtual Hosting prenáša podporované EA/grafové prostredie; nie je všeobecná plocha Windows pre externý Python. Ani dodatočný EA neuzavrie pozíciu cez ten istý nedostupný terminál či prerušené spojenie s brokerom. Prijaté serverové ochrany čítajte späť osobitne.

Zdokumentované order_send() odosiela žiadosť a vracia štruktúru výsledku. Uzavretie potrebuje správnu akciu a kontext pozície; všeobecná funkcia position_close() tu zdokumentovaná nie je. Po neistej komunikácii zosúlaďte pokyny, plnenia a pozície pred rozhodnutím o ďalšej žiadosti.

Opätovné pripojenie nie je opakovanie obchodu. Pôvodný hypotetický model žiada 0,10 lota. Celá žiadosť sa vykoná, ale odpoveď sa stratí. Slepá druhá žiadosť 0,10 sa tiež vykoná: spolu 0,20 namiesto zamýšľaných 0,10 lota. Pri lineárnom EUR/USD kontrakte 100000 EUR/lot, pipe 0,0001 a USD účte sa pipová expozícia zdvojnásobí z 1 na 2 USD. Obe plnenia sú výslovne zadané. Netvrdíme, že každý neznámy pokyn bol vykonaný alebo každý účet zoskupí pozície rovnako.

Negácia môže z chýbajúcich dát urobiť True

Python príklad používa x = float('nan') a vymyslený prah 10. NaN označuje chýbajúci výsledok indikátora, nie nulu alebo veľké číslo. Vstupy neboli vopred odstránené.

Chýbajúca hodnota oddelí porovnanie od negácie

Chýbajúca hodnota oddelí porovnanie od negáciePri skalárnom Python float NaN sú x menej alebo rovné 10 aj x väčšie než 10 nepravdivé. Negácia prvého dá True. isfinite vráti False a naša vetva zablokuje vstup.Python float: x = NaN, prah = 10Chýbajúca hodnotanot(x <= 10)Truex > 10Falseisfinite(x) → FalseChýbajúce dáta nie sú signál.Negácia neopraví chýbajúci vstup.
Obe vetvy majú chýbajúce dáta, ale odlišný logický výsledok. Zelená brána oddeľuje dostupnosť od pravidla.

Na malej obrazovke posúvajte diagram vodorovne alebo ho zväčšite. Vysvetlenie nájdete aj v texte.

x > 10 vráti False, not(x <= 10) True. Pri konečných číslach môžu vyzerať ako rovnaká hranica; pri NaN nie sú. Pred pravidlom skontrolujte typ, dostupnosť a konečnosť. math.isfinite(x) and x > 10 zablokuje NaN. Tento prípad zachovajte pri prenose; nepredpokladajte zhodné správanie každej reprezentácie chýbajúcich dát.

Skalárny Python float, nie NumPy pole alebo osobitné Decimal pravidlá. V našom variante chýbajúce dáta blokujú vyhodnotenie. Prah 10 je vymyslený a nepreukazuje obchodnú výhodu.

Porovnajte hranice pravidiel a zadané plnenia

Pôvodný hypotetický signál je dostupný po uzavretí sviečky na 1,1000. Model A tam kúpi, B neskôr za Ask 1,1003. Pri pipe 0,0001 je rozdiel 3 pipsy. Prispievať môže čas, pohyb trhu a strana kotácie; celý rozdiel nemožno označiť za réžiu Pythonu alebo spread. Pred súhrnnými výnosmi porovnajte signály, žiadosti, objemy, plnenia a náklady.

Vektorový test môže zahrnúť náklady; názov „riadený udalosťami“ necertifikuje model plnenia. MT5 tester nespúšťa ľubovoľný Python skript ako natívny EA. Prenesené implementácie potrebujú rovnaké vstupy a verzie pravidiel.

Pôvodná nezávislá hraničná kontrola: skalárny Python float 0.1 + 0.2 dá 0.30000000000000004, viac než float 0.3. Decimal zo stringov dá v tomto modeli presne 0.3; celočíselné jednotky 1+2=3. Zobrazenie oboch floatov ako „0.3“ nemení uložené porovnanie.

Pri prenose skúste pod hranicou, rovnosť, nad hranicou, chýbajúci a nekonečný vstup. Polia, iné číselné typy a zvolená tolerancia majú vlastnú sémantiku. Tieto testy nespúšťajú MQL5 verziu ani nepreukazujú výhodu.

Nový EUR model: po konečnom čiastočnom plnení chýba iba zvyšok

Oddelený hypotetický EUR účet má 1000 EUR, bez kreditov, počiatočných pozícií, iných procesov, čakajúcich pokynov či tokov. Jeden zámer chce long 0,10 lota EUR/USD, kontrakt 100000 EUR/lot, zadaný minimálny objem a krok 0,01 lota. Prvá žiadosť vyplní iba 0,04 lota a jej odpoveď sa stratí. Neskôr evidencia výslovne potvrdí toto plnenie a konečné ukončenie prvého pokynu bez živého zvyšku. V modeli sa už nemôže dodatočne doplniť.

Po zosúladení zostáva 0,10−0,04=0,06 lota. Táto druhá žiadosť sa celá vyplní; spolu 0,10 lota. Slepé opakovanie celých 0,10 sa v porovnávacom variante tiež celé vyplní, spolu 0,14 lota. Nejde o univerzálny retry predpis. Bez potvrdeného konečného stavu pôvodnej žiadosti by ďalšie plnenie mohlo zmeniť zvyšok.

Obe vstupné časti majú zadané Ask 1,1000, neskôr sa celý skutočný objem uzavrie za Bid 1,0990. Pevný modelový prevod je 0,90 EUR za USD. Provízia na každej strane je 5 EUR/lot, účtovaná pri príslušnom plnení; financovanie a ďalšie poplatky/sklz nula. Spread je už v cenách. Dostatočná marža, bez skoršej likvidácie a iných operácií.

Správnych 0,10 má cenovú stratu −10 USD/−9 EUR, vstupné poplatky 0,50 a výstupný 0,50 EUR: čistých −10 EUR, koniec 990 EUR. Pri 0,14 je cena −14 USD/−12,60 EUR, poplatky 0,70+0,70 EUR, čistých −14 EUR a koniec 986 EUR. Oba varianty končia bez pozícií; strata odpovede sama nevytvára peňažnú položku.

Po potvrdenom čiastočnom plnení doplňte iba deklarovaný zvyšokOddelený hypotetický EUR účet 1000 bez kreditov, iných operácií a skoršej likvidácie. Zámer 0,10 lota, prvé konečné plnenie 0,04 bez živého zvyšku; obe vstupné Ask 1,1000, celý výstup Bid 1,0990. Kontrakt 100000 EUR/lot, prevod 0,90 EUR/USD, provízia 5 EUR/lot na každej strane. Krok 0,01 lota, bez ďalších nákladov a financovania, dostatočná marža.MODELOVÝ VÝPOČETZosúladený variant0,04+0,06=0,10 lotaSlepá celá žiadosť0,04+0,10=0,14 lotaNeznámy živý zvyšokZatiaľ neurčený potrebnýobjem
Po potvrdenom čiastočnom plnení doplňte iba deklarovaný zvyšok. Oddelený hypotetický EUR účet 1000 bez kreditov, iných operácií a skoršej likvidácie. Zámer 0,10 lota, prvé konečné plnenie 0,04 bez živého zvyšku; obe vstupné Ask 1,1000, celý výstup Bid 1,0990. Kontrakt 100000 EUR/lot, prevod 0,90 EUR/USD, provízia 5 EUR/lot na každej strane. Krok 0,01 lota, bez ďalších nákladov a financovania, dostatočná marža.

Preverené ID a konečný stav predchádzajú novému objemu. Výsledok je explicitný účtovný model, nie univerzálna brokerová retry politika.

Na malej obrazovke možno diagram posúvať vodorovne alebo zväčšiť. Hodnoty a záver nájdete aj nižšie v texte.

Zosúladený variant
0,04+0,06=0,10 lota – Cena −9 EUR, poplatky 1 EUR, koniec 990 EUR/pozície 0.
Slepá celá žiadosť
0,04+0,10=0,14 lota – Cena −12,60 EUR, poplatky 1,40 EUR, koniec 986 EUR/pozície 0.
Neznámy živý zvyšok
Zatiaľ neurčený potrebný objem – Samotné pripojenie alebo zobrazená čistá pozícia nepreukazujú ukončenie pôvodnej žiadosti.

Vyberajte reprodukovateľnú požiadavku

Zapíšte účet/API, dáta, čas rozhodnutia, knižnice, operačný systém a dohľad. Posúďte udržateľnosť. Malý prototyp môže iba čítať dáta a zapisovať signál bez obchodovania. Pevný čas inštalácie, počet riadkov ani pomer dva ku jednej pri učení neurčujú správnu voľbu.

Pomenujte nesplnenú požiadavku a jednoduchšiu alternatívu. Pri časovo citlivom vykonaní merajte navrhnutú zostavu; interval sviečky nerobí meškanie automaticky bezvýznamným.

Otestujte jedno usporiadanie a poruchové stavy

  1. Zmrazte malé pravidlo: dostupnosť vstupu, rovnosť, jednotky a očakávaný výsledok ešte pred vykonávacím kódom.
  2. Oddeľte demo konfiguráciu, dátové kontroly a obchodné oprávnenia. Overte správny účet a nástroj spätným čítaním.
  3. Na deme skúmajte odmietnutie, chýbajúce vstupy, reštart a neisté odpovede. Opätovné pripojenie nedokazuje zlyhanie skoršieho pokynu.
  4. Zosúlaďte jednotlivé signály a predpoklady plnenia pred ziskom. Krátky úspešný skript nedokazuje natívnu spoľahlivosť ani ziskovosť.

Overte si, čo ste sa naučili

Cvičenie: približne 2 minúty.

Čo vráti not(x <= 10), ak x je skalárny Python float NaN?

Zobraziť odpoveď a vysvetlenie

Treba osobitnú kontrolu dostupnosti a isfinite. True nepotvrdzuje hodnotu indikátora.

Ďalšie otázky

Potrebujem na začiatok pokročilý Python?

Začnite malou dátovou úlohou so známymi vstupmi a očakávaným výstupom. Učte sa potrebné funkcie a ukladajte verzie. Krátke spojenie nie je celý systém: oprávnenia, dostupnosť vstupov, odpovede a evidencia sú samostatné úlohy. Počet riadkov ani čas učenia nie sú univerzálne.

Je Python+MT5 stabilný v živom obchodovaní?

Spoľahlivosť závisí od konkrétnej prevádzky. Reconnect potvrdzuje komunikáciu, nie výsledok žiadosti. Pred opakovaním skontrolujte pokyny, plnenia a pozície. Záložný EA nevyužije nedostupný hostiteľský počítač, terminál či spojenie. Logy aj serverové ochrany potrebujú kontrolu. Dve vrstvy negarantujú stabilitu ani maximálnu stratu.

Stačí MQL5 rýchlosťou pri tickových stratégiách?

Zmerajte požadovanú odozvu pri konkrétnych vstupoch a záťaži. Ak už NewTick čaká v rade alebo sa spracúva, ďalší sa do radu nepridá. Komunikácia procesov je závislosť, nie univerzálny benchmark desiatok milisekúnd. Aj rozhodnutie H1 môže mať nároky na čas vykonania.

Kedy prejsť z MQL5 na Python?

Určte požiadavku, ktorú existujúce riešenie nezvláda alebo neviete udržiavať. Porovnajte modelové rozhrania, dáta a adaptéry. MQL5 má ONNX, Python tiež potrebuje kompatibilné knižnice. Dva spúšťače ani tri mesiace nie sú garantovaná návratnosť vývoja či peňazí.

Zdroje a overenie

  1. MetaQuotes — initialize

    Spojenie s terminálom, voľba inštalácie/účtu/servera a prípadné spustenie. Nie potvrdenie skoršieho pokynu.

  2. MetaQuotes — order_send

    Žiadosť, výsledok MqlTradeResult, objem podľa vykonania a identifikácia pozície pri uzavretí.

  3. MetaQuotes — OnTick

    Sekvenčný rad udalostí a nezaradenie ďalšieho NewTick, ak už čaká alebo sa spracúva; nie nameraný benchmark.

  4. MetaQuotes — ONNX models

    Modelové rozhranie MQL5, vstupy/výstupy a tvary. Podpora formátu nenahrádza validáciu konkrétnej konverzie.

  5. MetaQuotes — Virtual Hosting Migration

    Podporované prostredie, DLL a vylúčené skripty; nie všeobecný Windows pre externý Python.

  6. MetaQuotes — MetaTrader5 on PyPI

    Distribučné súbory preverovaného vydania majú Windows x86-64 tagy; kompatibilita interpretra a balíka je samostatná kontrola.

  7. erdewit — ib_insync repository

    Archív pôvodného projektu od 14. marca 2024. Nie univerzálna diagnóza každého odvodeného adaptéru.

  8. Python — Expressions

    NaN porovnania a logická negácia. Vlastné skalárne prípady necertifikujú MQL5 alebo pole.

  9. Python — math.isfinite

    False pri NaN a nekonečne, nula je konečná. Dostupnosť a doménová validita sú ešte ďalšie kontroly.

Výpočty používajú výslovne uvedené predpoklady. Nenahrádzajú aktuálne trhové údaje ani podmienky poskytovateľa.

O autorovi

Jarosław Wasiński je vydavateľ a trhový analytik v Poľsku. V roku 2004 založil MyBank.pl a devízový trh sleduje od roku 2007.