Sunteți pe pagina 1din 51

Forrs: http://www.doksi.

hu

SZAKDOLGOZAT

Molnr Tibor

Debrecen 2007

Forrs: http://www.doksi.hu

Debreceni Egyetem Informatika Kar

AUTOMATIZLT KERESKEDS PROGRAMOZSA A DEVIZAPIACON

Tmavezet: Dr. Kormos Jnos Egyetemi tanr

Ksztette: Molnr Tibor Programoz matematikus

Debrecen 2007

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Tartalomjegyzk

1. BEVEZETS ..................................................................................................................................................... 5 2. ALAPFOGALMAK .......................................................................................................................................... 7 2.1. A DEVIZAPIACRL ........................................................................................................................................ 7 2.1.1. Az OTC-piac felptse, szerepli.................................................................................................... 8 2.1.2. Az rfolyamjegyzs .......................................................................................................................... 8 2.1.3. Online kereskeds a devizapiacon ................................................................................................... 9 2.2. RFOLYAMOK ELEMZSE ........................................................................................................................... 10 2.2.1. A technikai elemzs........................................................................................................................ 11 2.3. A CHART ..................................................................................................................................................... 12 3. A METATRADER 4 ....................................................................................................................................... 14 3.1. A PLATFORM FELPTSE S MKDSE ..................................................................................................... 14 3.2. A CLIENT TERMINAL .................................................................................................................................. 16 3.2.1. A Terminl hasznlata................................................................................................................... 17 3.2.2. Automatizlt kereskeds ................................................................................................................ 17 3.2.3. A Stratgiai Teszter ....................................................................................................................... 21 4. AZ MQL4 NYELV BEMUTATSA ............................................................................................................. 26 4.1. ALAPELEMEK.............................................................................................................................................. 27 4.1.1. Kulcsszavak ................................................................................................................................... 27 4.1.2. Tpusok, konstansok....................................................................................................................... 28 4.1.3. Tpuskonverzi............................................................................................................................... 29 4.1.4. Opertorok, kifejezsek, utastsok ............................................................................................... 30 4.1.5. Fggvnyek.................................................................................................................................... 31 4.1.6. Vltozk, tmbk, formlis paramterek ....................................................................................... 34 4.1.7. Az elfeldolgoz rendszer .............................................................................................................. 38 4.2. A NYELV TOVBBI ELEMEINEK BEMUTATSA PROGRAMFEJLESZTSSEL .................................................... 40 4.2.1. A programfejleszts lpsei s a forrsszveg magyarzata ......................................................... 41 5. SSZEFOGLALS ........................................................................................................................................ 48 IRODALOMJEGYZK ..................................................................................................................................... 49 FGGELK ........................................................................................................................................................ 50

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Ksznetemet fejezem ki tmavezetmnek, dr. Kormos Jnosnak, a szakdolgozat rsa sorn nyjtott segtsgrt.

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

1. Bevezets

A mai vilgban sajnos vagy nem sajnos nagyon fontos a pnz fogalma. letnk sorn legtbbszr hazai pnznemnket hasznljuk, de egyre gyakrabban elfordul az is, hogy egy manapsg teljesen htkznapi pnzforgalmi mvelet kapcsn idegen pnznemekkel is kapcsolatba kerlnk. Pldul, ha klfldre utazunk, t kell vltani forintunkat az idegen orszg valutjra. Az tvlts trtnhet bankon keresztl, vagy akr valamely pnzvlt cg is jegyezhet neknk rat. Az tvltsi folyamat kapcsn mi is rszesv vlunk a devizapiacnak. A devizapiacnak mgsem a mi kltpnz-tvltsunk lesz a mozgatrugja, annl sokkal nagyobb sszeg gyleteket bonyoltanak egyms kztt bankok, brkercgek, amelyek alapveten meghatrozzk a piac mkdst, felptst. Clkitzsek Dolgozatom clja, hogy a devizapiaci alapfogalmak magyarzata utn programozott megoldsi lehetsget nyjtsak az rfolyamvltozsok prognosztizlshoz. Ezzel elsegthetem a kereskedelmi gyleteket elkszt dntshozatalt s gyakran magt a dntst is. A f clkitzsem nem a devizapiaci dntsi folyamat menetnek megadsa, hiszen ez a gazdasgi szakemberek dolga, hanem a dntsi folyamat azaz egy megadott stratgia programozsa, automatizlsa. A dolgozat felptse A dnts meghozshoz rengeteg informci (jelenlegi, azonnali, mltbeli adatok, esemnyek) ll rendelkezsre, ezek figyelse, felhasznlsa ad lehetsget az automatizlsra. A fentiek miatt dolgozatom els rszben lerom a szksges alapfogalmakat, melyek ismerete nlkl nem lehet eligazodni a devizapiacon. Ismertetem az rfolyam elemzsnek azt a mdszert (technikai elemzs), amely lehetsget ad arra, hogy a gazdasgi esemnyek kiszrse mellett is rtelmezni lehessen a devizapiaci esemnyeket. Bemutatok tovbb egy olyan eszkzt a chartot , amely elengedhetetlen a piac szemmel tartshoz. A chart minden informcit biztost neknk illetve programunknak amire szksg van a technikai elemzs lebonyoltshoz.

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A dolgozat msodik rszben bemutatok egy online kereskedsi platformot, a MetaTrader 4et, amely az otthonrl, Internet hasznlatval trtn devizapiaci kereskedst teszi lehetv. A platform szmunkra legfontosabb rsze, a Client Terminal, mert ebben tallhat a programozshoz szksges eszkzrendszer, a fejleszti- s futtatsi krnyezet. A Client Terminal kapcsn bemutatom a programok rsnak, futtatsnak mdjt valamint a most mr programozott kereskedsi stratgia tesztelsi- s optimalizlsi lehetsgeit is. Dolgozatom harmadik rsze egy programnyelvrl, az MQL4-rl szl. Ez a programnyelv a Client Terminal beptett nyelve. Az alapelemek rszletes lersa utn bemutatom a programnyelv hasznlatt egy kereskedsi stratgia megvalstsval, jelen esetben teht a programozsval. A fejezet tartalmazza a program teljes forrskdjt magyarzatokkal elltva. A program hasznlhat devizapiaci elrejelzsek generlshoz, st futtatsval a teljesen automatizlt kereskeds is megvalsul, azaz a program helyettnk kereskedik. A devizapiaci kereskeds kapcsn viszont a kvetkez megllapts rvnyes, melyet rdemes tgondolni: gy tisztessges, ha elrebocstjuk: egyetlen olyan modell, elmlet, kplet, csodamdszer sincs, amellyel a devizarfolyamok alakulst minden idben kielgten megbzhat mdon elre lehetne jelezni.1

rsek Zs. 2002. Bevezets a devizapiacokra. KJK-KERSZV Jogi s zleti Kiad Kft. 191. o.

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

2. Alapfogalmak

Ebben a fejezetben olyan fogalmak magyarzata szerepel, amelyek elengedhetetlenek a dolgozat megrtshez. A fogalmak bvebb lersa a [1, 2, 3, 6, 7] publikcikban tallhatk. Az alapfogalmak az automatizlt kereskedssel, vagy a kereskeds devizapiaci httervel kapcsolatosak. Vannak olyan devizapiaci fogalmak, amelyek konvencionlisan programnyelvi szinten is megjelennek az MQL4-ben.

2.1. A devizapiacrl
A hazai szhasznlatban nem mindig rzkelhet a deviza s valuta fogalmak kztti klnbsg. A deviza idegen pnznemre trtn szmlakvetelst, mg a valuta ltalban magt, a kzzel foghat pnzt jelenti. A devizapiac az a piac, amelyen a devizapiac szerepli egyms kztt devizt tudnak tvltani. A gyakorlatban ezt a piacot forexnek2 nevezik, s ltalban FX-szel jellik [1]. A forex huszonngy rs piac, elmletileg valamennyi jegyzett devizra trtnhet zletkts a nap brmely pillanatban. A kzpontostott tzsdken foly forex tevkenysg miatt beszlhetnk devizatzsdrl is. Valamennyi devizapiaci zlettpus tekinthet az egyik devizrl a msikra trtn egyszer konverzinak, tvltsnak. Az sszes tvlts kzel felt teszi ki a spot (azonnali, prompt) zlet. Ebben az zletfajtban a teljests az zletktst kvet msodik munkanapon trtnik. A spot piac nagysga pldul azzal magyarzhat, hogy a spekulatv jelleg rdeklds nagy rsze ide irnyul az zletek gyors lezajlsa miatt. A devizapiac a vilg egyik legnagyobb piaca, napi becslt forgalma 2001-es adatok alapjn 1210 millird amerikai dollr volt [1]. A piac mrete s gyorsasga miatt a kialakul r a piac pillanatnyi helyzete alapjn relisnak mondhat. Legjelentsebb szerepli a bankok, ezrt a devizapiac tekinthet bankkzi piacnak. ltalban a bankok rendelkeznek akkora tkeervel s hitelkpessggel, ami a hatalmas mret gyletek vgrehajtshoz szksges, ezrt tranzakciik alapveten befolysoljk a piacot. Az OTC-piacon3 trtn zletktsek minden paramtere a kt fl szabad megllapodsnak eredmnye.
Foreign exchange Over the counter a kereskeds a pulton trtnik. Tzsdn kvli piac, a bankkzi devizapiac is ennek minsl.
3 2

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

2.1.1.

Az OTC-piac felptse, szerepli

A piac felptst az 1. bra mutatja [1].

gyfl

Kzponti Bank

gyfl

Dealer (Bank) Brker

Dealer (Bank)

Dealer (Bank)

gyfl

gyfl

1. bra Az OTC-devizapiac szerkezeti felptse

Az 1. bra magyarzata, az egyes szereplk tevkenysgi kre: Brker a jegyzett rakat kzvetti a piac szerepli kztt. Dealer feladatai kz tartozik az rak jegyzse valamint az gyletek realizlsa. Kzponti bank nem profitrdekelt. F feladata a piac biztonsgos mkdsnek felgyelete, s a hazai pnz stabilitsnak megrzse. gyfl a piac hasznli. Ilyenek a befektetk, spekulnsok, klnbz pnzgyi intzmnyek.

2.1.2.

Az rfolyamjegyzs

Egy adott deviza (a hivatkozsi deviza) ra egy msik devizban (a hivatkozott devizban) kifejezve adja magt az rfolyamot [2, 6]. A devizatvlts mindig egy meghatrozott rfolyamon trtnik. Az zletkt a devizapiacon mindig egy fajta devizt bocst ruba egy msik devizrt cserbe. Az rfolyam meghatrozst s a msik fllel val kzlst jelenti a

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

jegyzs. A jegyzett r teht mindig egy bizonyos devizaprra4 vonatkozik. Egy jegyzett r mindig konkrt zleti ajnlat vtelre vagy eladsra az azt jegyz banktl. Pldul: 1 GBP = 2,0028-2,0031 USD, rviden GBPUSD 2,0028/31 A kisebbik szm a vteli- (bid), a nagyobbik az eladsi (ask, offer) rfolyam a bank szempontjbl. A vteli s az eladsi r kztti klnbsg a spread (marzs), ez a bankok nyeresge az tvltsi gyleten. Egy jegyzsben az rak ltalban ngy, vagy kt tizedes jegy pontossggal szerepelnek. Egy pont (pip) az rfolyam legkisebb helyi rtkn trtn egysgnyi vltozs.

2.1.3.

Online kereskeds a devizapiacon

A pozci rfolyamkockzatnak val kitettsget jelent. A devizapiacon val kereskeds pozcik nyitsval s zrsval valsthat meg [1]. A pozci irnya lehet: Hossz (long5) rfolyam emelkedsben val rdekeltsg, vteli pozci. Rvid (short6) rfolyam essben val rdekeltsg, eladsi pozci.

Az online kereskedshez egy ilyen tevkenysget folytat brkercgnl szksges szmlt nyitni. Ezltal az gyfl llandan frissl tjkoztatst kap a jegyzett rakrl (berkez adat, tick data), s folyamatosan akr napi 24 rn keresztl ignybe veheti a brkercg tbbi szolgltatst. A brkercgnl elhelyezett pnzsszeg fedezetl (margin) szolgl az gyfl ltal adott megbzsok (ktsek) vgrehajtsra. A megbzsok ltalban pozci nyitsval s zrsval kapcsolatosak. A fedezet lehetsget nyjt a tketttes kereskedsre [7], amikor az gyfl megbzs kiadsakor nem csak a sajt elhelyezett pnzsszegt hasznlhatja, hanem annak sokszorost. Ilyen kereskedssel termszetesen nagyobb hozam rhet el, viszont a nagy tketttel miatt hamarabb elbukhat a fedezetl lerakott pnz is.

A MetaTraderben: szimblum Az angol long sz egyik jelentse: bvben lenni valaminek 6 Az angol short sz egyik jelentse: szkben lenni valaminek
5

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Egy azonnali megbzs az aktulisan jegyzett ron trtn pozci nyitsa, zrsa vagy mdostsa. Fgg megbzs (pending order) elhelyezse esetn a vtel/elads nem azonnal teljesl, hanem egy piaci esemny hatsra, pldul, ha az rfolyam elr egy kvnt szintet. Azonnali megbzsok tulajdonsgai: Szimblum az a devizapr, amelyre kereskednk. Tpus vtel vagy elads. Lot ktsmennyisg, azaz a vtel/elads egysge. Stop loss (S/L) szint belltsa egy olyan rfolyamszint megadst jelenti, ahol a vesztesges pozci a vesztesg realizlsval automatikusan zrsra kerl. Take profit (T/P) szint belltsa egy olyan rfolyamszint megadst jelenti, ahol a nyeresges pozci a profit kivtelvel automatikusan zrsra kerl.

2.2. rfolyamok elemzse


Az rfolyamok vltozsnak prognosztizlsra jelenleg nincs olyan mdszer, amely megbzhatan, minden krlmnyek kztt jl mkdik [1]. Az erre irnyul trekvseknek mgis megadhat hrom f irnyvonala: Fundamentlis elemzs gazdasgi, politikai, trsadalmi adatokat hasznl az rfolyamvltozsok elrejelzsre. Technikai elemzs a piaci folyamatok tanulmnyozsa grafikonok segtsgvel. Legfontosabb eszkz az adott devizapr chart ablaka. A technikai elemzk szerint csak a piacon vgbemen vltozsokat kell figyelni, mivel azok mr minden fundamentlis hatst is tkrznek. Hatkony piacok elmlete az elmlet szerint az rban az sszes elrhet informci benne van, teht lehetetlen az informcik alapjn brmifle jslsba bocstkozni. Minden profit, illetve vesztesg csak a kockzatvllalsnak ksznhet. A kereskedsre kialakul egyni szoksok tekinthetk a kereskedsi stratginak. A kereskedst automatizlni csak a technikai elemzs szempontjbl lehet, hiszen ezen mdszer mellett szksges az adatok folyamatos, azonnali, tmeges vizsglata, amelyre a szmtgp eszkzknt hasznlhat. A fundamentlis elemzs gyorsasgt is elsegti a szmtgpes kommunikci, hiszen az Interneten gyorsan terjednek a gazdasg, politika stb. hrei. A technikai elemzs automatizlhatsga miatt arrl kln alfejezetben rok.

10

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

2.2.1.

A technikai elemzs

Kritikkat fogalmaz meg a fundamentlis elemzssel kapcsolatban [1]: Az rfolyamra hat rengeteg tnyezt egy ember nem tudja helyesen slyozni, az rdektelen adatokat kiszrni. Az adatok begyjtse, feldolgozsa, kzzttele idignyes, gy a jelzsek nem tkrzhetik az aktulis llapotot. Az elemzs alapjt kpez adatok sokszor hibsak, megbzhatatlanok, teht az elemzs eredmnye is az lesz. Az elemzsre szolgl adatok alapjn az elemzs lehet j, de a piac mgis dnthet msknt. Az informci a piac szerepli szmra nem azonos mdon hozzfrhet. De mg azonos informci birtokban is elkpzelhet, hogy a szereplk egymssal ellenttes dntseket hoznak. Ekkor pedig valamelyik szereplnek biztosan nem lesz igaza. A fundamentlis elemzs szksgszerv teszi a piac egy-egy rszterletnek magas szint ismerett. Sok devizaprt lehetetlen egyszerre kvetni. A technikai elemzs elviekben az sszes felvetett problmra megadja a vlaszt. Alapvet klnbsg, hogy a technikai elemzs csak a piacon bekvetkez vltozsokat figyeli, azokat elemzi az r, a forgalom s a nyitott ktsllomny alapjn. Hrom alapttele: Az rban minden ms hats tkrzdik. Azaz a fundamentlis alapokon nyugv megkzelts eredmnyt is tkrzi az r, teht elg azt figyelni. A trtnelem ismtli magt. A piaci rakat vgs soron az emberek alaktjk. Az ember ugyanolyan helyzetben gyakran ugyanazt a dntst hozza meg jra, teht csak meg kell tallni a hasonl lefuts rgrbket ahhoz, hogy az elemzs sikeres legyen. Az rak trendszeren mozognak. Az rak nem vletlenszeren mozognak, hanem trendszeren. Ez azt jelenti, hogy egy megkezdett irny mozgs folytatdsra nagyobb az esly, mint a trend fordulsra. Ezt a ttelt a fundamentlis elemzs is ersti. A technikai elemzs nem ms, mint a mltbeli adatok s a jelenleg ismert rfolyamgrbk felhasznlsval a rvid- illetve hossz tv trend meghatrozsa.

11

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

F gai: Jellegzetes rfolyamgrbk vizsglata chartelemzs, hasonl alakzatok keresse. Trendkvet mdszerek hasznlata a trend meghatrozsa az elsdleges. Piaci llapot-elemzs az r helyessgt prblja meghatrozni, pldul a forgalom mrete, nyitott pozcik szma alapjn Ciklusok, hullmok vizsglata idben ltalnosan rvnyes sszefggsek meghatrozsa a cl. A devizapiacon rvnyes, hogy az sszes szksges informci, alapadat rendelkezsre ll a technikai elemzs lebonyoltshoz. Tovbbi segtsget jelentenek a szmtgpek, mert folyamatosan kpesek az rfolyamgrbn kialakult alakzatok vizsglatra, indexek elemzsre, st, a technikai elemzs alapjn programozott stratgia megvalstsra, eladsi-, vteli jel generlsra, ads-vtelre.

2.3. A chart
A chart lehetv teszi az rfolyam vltozsnak vizulis szlelst [3]. A chart ablaknak nagy szerepe van a trendek, alakzatok, formcik felismersben, ezrt a technikai elemzs elengedhetetlen kellke. Az rfolyamdiagram rajzolsra tbbfle mdszer alakult ki, gy ltezik vonal-, japn gyertya-, oszlop diagram. A 2. bra egy olyan chart ablak, amely japn gyertykkal szemllteti az rfolyam vltozsait.

2. bra Japn gyertya diagram

12

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Egy egyszer vonaldiagramnl a japn gyertya diagram tbb informcit hordoz, ezrt a tovbbiakban azt hasznljuk. A chart tulajdonsgai A chart mindig egy adott termk rnak (a chart Y tengelye) vltozst mutatja egy adott idszakra (a chart X tengelye). A devizapiacon ennek a termknek egy devizapr felel meg. Az a devizapr, amelyet a chart hasznl a chart szimbluma. Az adatok (jegyzett rak) a piac termszetnl fogva folyamatosan rkeznek. Arra, hogy minden adat a chartba kerljn, a technikai elemzs szempontjbl ltalban nincs szksg, ezrt a chart nem minden adatot jelent meg, hanem azokat egysgekbe rendezi. Egy egysg az adott idintervallumon bell berkezett sszes adatot reprezentlja. Ez az idegysg, peridus lehet egy perc vagy akr egy egsz hnap is. A 2. brn a GBPUSD szimblum tperces adategysgei lthatk 2007. 04. 23. t ra tz perctl nyolc ra tz percig. Az brn az egysgek megjelentsre japn gyertyk lthatk. Egy gyertya felptse ktfle lehet aszerint, hogy az ltala brzolt idszakban milyen volt az rfolyamvltozsok irnya: res gyertya a gyertyatest alja jelzi a nyit rat az adott peridusra vonatkozan, a teteje a zr rat. Teli gyertya az res gyertya ellentte.

A gyertya fels kanca, fels rnyka jelzi a peridus legmagasabb rt, az als kanca, als rnyka a legalacsonyabb rt.

13

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

3. A MetaTrader 4

A MetaTrader 4 egy olyan komplex kereskedsi platform, amelyet hasznlinak teljes kr kiszolglsra hoztak ltre. A platform hasznlata mellett ugyanis nincs szksg ms eszkzre devizapiaci gyletek vgrehajtshoz. A platform klnbz tpus devizapiacokon hasznlhat, ilyen piac pldul a forex. A fejezet megrshoz a [11] nyjtott segtsget.

3.1. A platform felptse s mkdse


Felptse Client Terminal

Client Terminal

Data Center

Mobile Terminal Server Data Feeds

Administrator

Manager

3. bra A MetaTrader 4 platform szerkezeti felptse [11]

Mkdse A MetaTrader 4 rszei amelyeket a 3. bra szemlltet a kvetkez feladatokat ltjk el: Server a rendszer magja. Minden felhasznli krs kzvetve vagy kzvetlenl ide rkezik be. Feldolgozza a berkez rajnlatokat, s a kereskedssel kapcsolatos hreket, mveleteket. Megbzsokat fogad, s vgrehajtja ket. Data Centereken

14

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

keresztl dolgozik, ami hatkonyan nveli a DDoS7 tmadsok elleni vdettsget a Server terheltsgt cskkentve. Data Feeds a platformon elrhet hrek, ajnlatok kzvettje a szerver fel. Mobile Terminal PDA vagy mobiltelefon kzremkdsvel valstja meg egy felhasznli fik vezrlst. A kapcsolds WAP8-on vagy GPRS9-en keresztl trtnik. Client Terminal a MetaTrader 4 legfontosabb rsze a kereskeds megvalstsnak szempontjbl. A Client Terminal teszi lehetv az MQL4 nyelv hasznlatt, s ezltal az automatizlt kereskedst. A platform ezen rsze fontossga miatt kln fejezetben kerl bvebb bemutatsra. Data Center olyan proxy szerver, amely a Server s a Client Terminalok kztti kapcsolat ltrehozsrt felels. Kpes bizonyos berkez krsek kiszolglsra anlkl, hogy a valdi szerverhez tovbbtan ket. Ezltal kikszblhetv vlik a Client Terminalok kzvetlen kapcsoldsa a f szerverhez, s cskken a szerver hlzati forgalma. Pldul a Data Centerek gyjtik a mltbli adatokat, gy ha ezen adatokra vonatkoz krs rkezik be hozzjuk, arra nllan vlaszolnak. A DDoS tmadsok ellen is hatkonyan lpnek fel azltal, hogy a valdi szerver IP cmt elrejtik. Ha a tmadsok eredmnyeknt egy Data Center kiesik, a szerver akkor is tovbb tudja folytatni a mkdst. A kies helyt egy erre a clra tartalkolt Data Center veszi t, ehhez lesznek tirnytva a megfelel Client Terminalok krsei. Administrator a szerverek tvoli felgyeletnek megvalstsa a feladata. Tvoli elrssel lehetsget biztost a felhasznli csoportok kezelsre, Data Centerek irnytsra, a rendszer biztonsgi s integritsi kontrolljra, mltbli adatok szinkronizcijra. Az Administrator s a Server kztti kommunikci 128 bites kulccsal titkostott. Manager a MetaTrader azon rsze, amelynek feladata a kereskedsi mveletek vgrehajtsnak irnytsa, s a kereskedk felhasznli fikjainak ellenrzse.

A DDoS (Distributed Denial of Service) tmadsok clja egy informatikai szolgltats teljes, vagy rszleges megbntsa, a helyes mkdstl val eltrtse. 8 A WAP ( Wireless Access Protocol ) a vezetk nlkli adattvitel egy nylt nemzetkzi szabvnya. 9 A GPRS (General Packet Radio Service) adattviteli technolgia, amelyet mobiltelefonok hasznlnak.

15

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

3.2. A Client Terminal


A Client Terminal (tovbbiakban: Terminl) az online kereskedsi platform rsze [12]. Hasznlathoz internet hozzfrs s Microsoft Windows 98SE/ME/2000/XP/2003 opercis rendszerek valamelyikvel konfigurlt szmtgp szksges. A Terminl tbbnyelv, hasznlhat magyarul is, grafikus felhasznli fellett a 4. bra mutatja.

4. bra A Client Terminal

Ebben a programban minden eszkz megtallhat az akr manulis, akr automatizlt online kereskedshez a devizapiacon. A kvetkez funkcikat ltja el: Berkez adatok (hrek, rfolyamok stb.) fogadsa Kereskedelmi gyletek vgrehajtsa Nyitott pozcik s fgg megbzsok kezelse Technikai elemzs tmogatsa

16

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Programok, modulok rsnak lehetsge MQL4 nyelven Kereskedsi stratgik tesztelse, optimalizlsa

3.2.1.

A Terminl hasznlata

A futtathat llomny a MetaTrader 4 honlapjrl [11] ingyenesen letlthet. A Terminl installlsnak menete s futtatsa a szoksos Windows opercis rendszer alatti procedra. Account nyitsa Ahhoz, hogy valaki jogot kapjon a szerver funkciinak elrsre, regisztrlnia kell magt. Ez egy account10 ltrehozst jelenti. Ktfle account nyitsra van lehetsg, melyek: Real Account csak brkercgen keresztl lehet nyitni, olyan pnzsszeg tutalsval, amelynek minimlis sszege a brkercg ltal szablyozott. Szerzdskts utn gy lehetsg nylik a valdi online kereskedsre. Demo Account virtulis pnzsszeg hasznlatval lehet kiprblni a platformot, valdi befektets nlkl. Minden funkci elrhet, ami Real Account hasznlatval. A program els indtsakor felajnlja Demo Account nyitst. Lehetsg van tbb szmla nyitsra, hasznlatra is. Az azonost adatok megadsa utn a Terminl csatlakozni tud a szerverhez.

3.2.2.

Automatizlt kereskeds

Az automatizlt kereskeds megvalstsra programozsi szinten az MQL4 nyelv hasznlhat, amirl bvebben msik fejezetben rok. Ebben a nyelvben a fentebb mr emltett Expert Advisorok rsa teszi lehetv a kereskeds teljes vagy rszleges automatizlst. A programfejlesztsre a platformon bell a MetaEditor programozsi krnyezet ll rendelkezsre.

Felhasznli fik. Felhasznli nvbl s a hozz tartoz jelszbl ll. A felhasznl azonostsra hasznlhat.

10

17

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A MetaEditor A MetaEditor a Terminl egyik alkotrsze, abbl kzvetlenl az F4 billenty lenyomsval vagy az Eszkzk/MetaQuotes Language Editor almenvel indthat. Az editor grafikus fellete az 5. brn lthat. A programok rsn, szerkesztsn kvl a MetaEditorban nylik lehetsg a forrsszveg lefordtsra is. Klnbz varzslk segtsgvel lehet knnyen j program ltrehozsba fogni. Az j fjl a MetaTrader megfelel alknyvtrba kerl elmentsre. Az MQL4 nyelv szerkezetrl s elemeirl a MetaEditor tartalmaz egy lexikont (5. bra jobb oldal), ez a nyelv teljes lersa pldkkal illusztrlva.

5. bra A MetaEditor

A program megrsa s sikeres lefordtsa utn a futtathat llomnyt a Terminl Stratgiai Teszter rszben lehet tesztelni, vagy chart ablakhoz rendelve vals idben futtatni.

18

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Expert Advisorok Az Expert Advisorok (expertek) olyan programok, amik a Terminlban futtathatk, s az automatizlt kereskedst hivatottak megvalstani. Azonnali s folyamatos technikai elemzsre kpesek a berkez adatok alapjn, s az elemzs eredmnytl fggen feladatuk lehet a kereskeds realizlsa is. Minden a kereskedssel kapcsolatos feladat rbzhat az expertekre. Brmelyik szimblum s megadott peridus adatait hasznlhatjk. Belltsok Az expertekre vonatkoz globlis tulajdonsgokat a Terminlban az Eszkzk/Belltsok almenben lehet megadni. A belltsok opciit a 6. bra szemllteti.

6. bra Expert Advisorok ltalnos belltsai

Ahhoz, hogy az expertek mkdjenek a chartokon, az Expert Advisorok Engedlyezse s az l kereskeds engedlyezse eltti jellngyzeteket ki kell piplni. Ha a teljes automatizls a cl, akkor a Kzi megersts krsre nincs szksg, de ha valamilyen felgyeletet szeretnnk az expert mkdse felett, akkor ezt is ki kell piplni. Ekkor, ha a program kereskedelmi gyletet szeretne vgrehajtani, azt felugr ablak formjban kzli a felhasznlval. Ez a funkci a felgyeleti szerep mellett az expertek l kereskedsben val tesztelsre is alkalmas. A tbbi bellts a kls importtal kapcsolatos, ezek fleg olyan expertek futtatsakor hasznlandk, amelyek nem megbzhat forrsbl szrmaznak.

19

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Futtats A futtatshoz elszr a Terminl Navigtor ablakbl az ott megjelen Expert Advisorok kzl ki kell vlasztani a megfelelt. Az expertet az ppen aktv chart ablakhoz csatolhatjuk azzal, ha dupln kattintunk a nevre. Lehetsg van arra is, hogy a kivlasztott expertet a megfelel chart ablakra helyezzk gynevezett drag & drop mvelettel. Csatolskor megjelenik a megfelel expert ltalnos belltsaira vonatkoz ablak, ahol megadhatk a futshoz szksges adatok. Ez az ablak hasonl a 6. brhoz. A program bemen paramtereit a 7. brn lthat Bemen adatok fln lehet megadni, abban az esetben, ha a csatolt programban van extern vltoz11 deklarlva. Ha nincs extern vltoz, akkor a Bemen adatok fl nem jelenik meg az ablakban.

7. bra Programok bemen paramtereinek belltsa

Az ablakon belltott adatok elmenthetk, illetve betlthetk. Az aktv chart ablakhoz csatolt expert tulajdonsgai az F8 billenty lenyomsval vagy jobb klikk utn az Expert Advisors/Tulajdonsgok menpontban rhetk el. Ha egy charthoz expert van csatolva, akkor az a chart ablaknak jobb fels sarkban jelenik meg a nevvel s mellette egy ikonnal. A megjelen ikon hromfle lehet, jelentsk:
11

- a Terminl globlis belltsainl nincs engedlyezve az expertek futtatsa - az expert ltalnos tulajdonsgainl nincs engedlyezve az l kereskeds - az expert fut

Extern vltoz kls vltoz: olyan vltoz, amelynek rtk adhat a Terminl megfelel ablakban is, nem csak a program forrsszvegben

20

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Az expert lelltsra valamelyik engedlyezs letiltsval, eltvoltsra a chart ablakon jobb klikket nyomva az Expert Advisors/Eltvolts menponttal van lehetsg. Egy chart ablakhoz egyszerre csak egyetlen expertet lehet csatolni. Ha egy olyan charthoz akarunk expertet csatolni, amelyikhez mr van, akkor a mr bent lv befejezi mkdst, s a helyre kerl az j. Az expertek futsval kapcsolatos tovbbi fontos informcik: A Terminl bezrsakor az sszes expert futsa is befejezdik A chart bezrsakor a hozz csatolt expert futsa is befejezdik A Terminl Navigtor ablakbl val trlskor a charthoz csatolt expert futsa nem ll meg

3.2.3.

A Stratgiai Teszter

A Terminl a - specilisan erre a clra beptett - Stratgiai Teszter (tovbbiakban: Teszter) segtsgvel lehetv teszi az expertek tesztelst les hasznlat eltt. Ezzel a funkcival vizsglhat a programozott stratgia hasznossga mltbli adatokon. A tesztels lehetsget biztost a szlesebb krben trtn, ms szimblumokon s ms idegysgeken alapul vizsglatra is. A Teszter az expertek paramtereinek optimalizlsra is biztost megoldst. A Stratgiai Teszter hasznlata A Terminl kpernyjn jelenik meg a Stratgiai Teszter ablaka is (8. bra). Ennek a lthatsgt a Nzet/Stratgiai Teszter menpont alatt, vagy a Ctrl+R billentykombinci lenyomsval lehet be-, illetve kikapcsolni.

8. bra A Stratgiai Teszter belltsai

21

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A 8. bra magyarzata (a Teszter Belltsok flnek mezi): Expert Advisor ebben a legrdl menben jelennek meg a Terminl megfelel knyvtrban lefordtott expertek. Itt kell kivlasztani azt az expertet, amelyik tesztelsre vagy optimalizlsra kerl. Szimblum ebben a menben azt a szimblumot (devizaprt) kell megadni, amelyre az expert tesztelse sorn szksg lesz. Pldul: GBPUSD (angol font / USA dollr) Model a modellezsi mdszert lehet itt kivlasztani. Legmegbzhatbb, legpontosabb tesztelsi eredmnyt ltalban a Minden tick vlaszts eredmnyez. Idszak annak az idegysgnek a tpust kell itt megadni, amelybl az expert a tesztels sorn az adatokat nyeri (egyperces adat napi adat). ltalban a Szimblum s az Idszak belltsai azonosak az expert ksbbi felhasznlsi belltsaival, azaz a chart tulajdonsgaival, amelyhez csatolsra kerl. Hasznlat dtuma az az idintervallum adhat meg napokra lebontva, amelyre a tesztelst el szeretnnk vgezni. Bizonyos tesztelsi intervallumokon elfordulhat, hogy nem ll rendelkezsre a megfelel mltbli adat, azaz nem vgezhet el a tesztels, vagy csak nem a megadott intervallum kezd idpontjtl. Visual mode ha ki van jellve, akkor a Teszter egy j chart ablakot nyit a tesztels vizualizlsra, amiben a kezd idponttl indulva folyamatosan mutatja a piac akkori tnyleges (vagy modellezett) vltozsait. Az expert ltal ltrehozott piaci ktsek, s azok lezrsai is bekerlnek a chartba. A Skip to gomb megnyomsakor a megadott idpontig ugrik a vizualizls. jraszmlls ha ki van piplva, akkor a tesztels lefutsa eltt a Teszter jrakalkullja a megadott szimblumra vonatkoz adatokat az adott intervallumon. Optimalizci ha kipiljuk, akkor nem tesztels, hanem optimalizls fog lezajlani a Start gomb megnyomsakor. Expert tulajdonsgok az expert futs idej paramtereit lehet itt megadni. Pldul: kezd lett, extern vltozk adatai (optimalizlsra is), optimalizlsi tulajdonsgok Szimblumok tulajdonsgai a kivlasztott szimblum piaci tulajdonsgait jelenti meg egy felugr ablakban. Nyitott chart a tesztels eredmnyt jelenti meg egy kln chartban Expert mdostsa a kivlasztott expertet megnyitja szerkesztsre a MetaEditorban

22

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Start megnyomsval indthat a tesztels vagy az optimalizls.

A 8. bra a gu_daily_poz_NO6_optimalizalando nev expert tesztelse utni llapotot mutatja. Napi (daily) adatokon dolgozva a Minden tick modellezst vlasztva a 2006. 06. 27-tl 2007. 04. 07-ig terjed idszakra tesztelt. Tesztelsi eredmnyek A tesztelsi folyamat lezajlsa utn a Teszterben elrhetv vlnak a tesztelsi eredmnyek, nhny tovbbi fl megjelensvel (8. bra alja). A flek magyarzata: Eredmnyek a tesztels sorn ltrejtt kereskedelmi gyleteket tartalmazza tblzatos formban. A tblzat oszlopai rendre: sorszm, idpont, tpus, megbzs, ktsegysgek, r, S/L, T/P, profit, egyenleg. Grafikon a ktsek okozta vltozsokat mutatja az egyenlegre vonatkozan. X tengelye a ktsek sorszmt, Y tengelye az egyenleget jelenti. Kk vonallal jelzi a grafikonon az aktulis egyenleget, zld vonallal a felhasznlhat egyenleget12, s ha a ktsegysgek a tesztels sorn vltoznak, akkor a grafikon aljn fggleges zld oszlopok mutatjk a megfelel mennyisgeket. Jelents a stratgia eredmnyessgnek sszegzse. Napl az expert standard kimenete. A kereskedsi mveletek vgrehajtsval kapcsolatos informcik itt jelennek meg. A tesztels utn a napl automatikusan mentsre kerl a tester/logs knyvtrban. Lehetsg van a tesztelsi eredmnyek mentsre jelentsknt HTML formtumban, illetve a grafikon mentsre kpknt, gif formtumban. Expertek optimalizlsa Az optimalizls ugyanazon expert sokszori tesztelst jelenti automatizltan a bemen paramterek azaz a program extern vltozinak vltoztatsval. Eredmnyeknt kivlaszthat az expert leghatkonyabb belltsa. Az optimalizls lehetsge rengeteg munktl szabadtja meg a felhasznlt.

12

Az a pnzsszeg, ami nincs lektve a nyitott pozcik fedezetl.

23

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Az optimalizlst is a Teszterben lehet elvgezni, ha az Optimalizci-t bekapcsoljuk, s a Start gombot megnyomjuk. Mivel az optimalizls is a tesztelsi folyamatokra pl, az alapbelltsait ugyangy kell megadni, mint tesztels esetn (8. bra s magyarzata). Az Expert tulajdonsgok nyomgombra kattintva bellthatk a tesztelsi adatok, a bemen paramterek intervalluma s lpskze, valamint egyb optimalizlsi lehetsgek. Bemen paramterek megadsa A Bemen adatok fln az expert extern vltozi jelennek meg azzal a kezdrtkkel, ami a forrskdban tallhat. Az optimalizlsi folyamat sorn az expert az sszes itt kijellt vltoz intervallumnak (Start, Stop) s lpskznek megfelelen minden lehetsges belltsra lefut. Az esetleges nagy szmolsi igny miatt az optimalizls rendkvl idignyes mvelet lehet.

9. bra Optimalizlsi belltsok

Az optimalizland vltozt ki kell piplni. Kipiplskor alaprtelmezetten belltsra kerlnek a start, lps s stop rtkek, amiket rdemes fellvizsglni. A 9. brn a TP s a MaximumRisk paramtereket jelltem ki optimalizlsra. Ez alapjn a tesztelsi folyamatok darabszma mr kiszmolhat: az intervallumban a TP vltoz kilenc, a MaximumRisk vltoz pedig tz lehetsges rtket vehet fel, a lpskznek megfelelen. A darabszm ezen rtkek szorzata lesz, azaz 9 10 = 90. A start, stop s lpskz tulajdonsgokat gy clszer megadni, hogy ne legyen tl nagy a tesztelsi folyamatok szma, de ez ne csorbtsa az optimalizls eredmnyessgt.

24

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Az Optimalizci fln olyan tovbbi belltsok adhatk meg, amelyek az optimalizlsi folyamat sorn szrknt mkdnek. Ha valamelyik bellts teljesl, akkor a paramterek azon belltsai az optimalizls szempontjbl rtktelenek. Az Optimalizci fl lehetsges belltsai:

1. tblzat Optimalizlsi szrfelttelek

Korltozs rtk Minimum egyenleg 200 Profit maximum 10000 Minimlis margin szint % 30 Maximlis lehvs 70 Folyamatos, egymst kvet vesztesg 5000 Folyamatos, egymst kvet vesztesges ktsek 10 Folyamatos, egymst kvet nyeresg 10000 Folyamatos, egymst kvet nyeresges ktsek 30 Az 1. tblzatban szerepl mezket gy kell belltani, ahogyan a kereskedsi stratgia megkvnja. Optimalizlsi eredmnyek Az optimalizls hatsra tovbbi kt fl jelenik meg a Teszterben: Optimalizcis eredmnyek a profittal lezrult tesztelsi folyamatok tulajdonsgait rja le tblzatban. A tblzat oszlopai rendre: folyamat sorszma (pass), profit, sszes kereskeds, profit faktor, vrt eredmny, visszaess, bemen adatok Optimalizcis grafikon az optimalizlsi eredmnyek kztt felsorolt tesztek eredmnyessgt mutatja

25

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

4. Az MQL4 nyelv bemutatsa

Az MQL4 (MetaQuotes Language 4) a MetaTrader 4 platform beptett nyelve [4, 5, 9, 10]. Azzal a cllal kerlt a platformba, hogy felhasznlsval le lehessen programozni a devizapiaci kereskedsi stratgikat. Imperatv, eljrsorientlt nyelv. Ez a nyelv lehetsget ad arra, hogy Expert Advisor ltrehozsval megvalsthat legyen a teljesen automatizlt kereskeds, sajt kereskedsi stratgia alapjn. A fejleszti krnyezet a MetaEditor 4. A MetaEditor tartalmaz egy egyszer szvegszerkesztt amelyben sznek emelik ki a klnbz funkcij kdrszleteket , valamint a compilert. A MetaEditor 4 mq4 kiterjesztseket hasznl a forrsfjloknl, amiket ex4 kiterjesztsre fordt. Az MQL4-ben rt forrsfjlok mkdsk szerint a kvetkez tpusak lehetnek: Expert Advisor (EA, expert) automatizlt keresked program, amely egy adott charthoz kapcsolva mkdik, annak belltsait hasznlva alaprtelmezsknt. Minden, a charton berkez rfolyam adatra elkezdi futst, kivve, ha az elz adattal kapcsolatos mveletsort mg nem vgezte el. Egy expert kpes informlni hasznljt, ha paramterei, s a tzsdei mozgsok alapjn gy tli meg, hogy pozci nyitsa esedkes, illetve informls mellett vagy helyett pozciba is llhat, azaz a megfelel utastst is elkldheti a krseket vr szervernek. A MetaTrader 4, mint ltalban a kereskedelmi platformok, lehetsget biztost az expertek tesztelsre mltbli adatokon. Custom Indicator a beptett indiktoroktl fggetlenl ksztett technikai indiktorok gyjtneve. nll, automatizlt kereskedsre nem kpesek. A technikai elemzs implementlsra szolglnak. Script olyan program, amely az expertekkel ellenttben nem fut le minden egyes berkez tick adatra, hanem csak meghatrozott krsekre. Library a klnbz programok ltal legtbbet hasznlt fggvnyek gyjtemnye, futtatni nem lehet.

26

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Included File a legtbbszr hasznlt programozsi eszkzk forrsszvegnek gyjtemnye. Ilyen tpus fjlokat lehet inkludlni a fordtsi szakasz folyamn az expertekbe, scriptekbe, indicatorokba s librarykba. Az included file-ok hasznlata clszerbb a libraryk hasznlatnl, mert az utbbiak fggvnyeinek meghvsa tovbbi nehzsget jelent.

4.1. Alapelemek
Az MQL4 nyelv ltalban a C programozsi nyelv felptst kveti a kvetkez kivtelekkel: NINCS mutataritmetika, do-while ciklus, goto utasts, hromoperandus feltteles utasts, struktra A logikai kifejezsek kirtkelse mindig teljes Van egysoros (//...), s tbbsoros (/*...*/) megjegyzs is. Az azonostk hasznlata a nyelvben a szoksos mdon trtnik.

4.1.1.

Kulcsszavak

A 2. tblzat tartalmazza a nyelv foglalt szavait. Ezekhez az azonostkhoz a nyelv rendel jelentst, amely nem vltoztathat meg a programoz ltal.
2. tblzat Az MQL4 kulcsszavai

Tpusok
bool color datetime double int string void

Memriatrolsi osztlyok Opertorok Egyb


extern static break case continue default else for if return switch while false true

27

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

4.1.2.

Tpusok, konstansok
Logikai tpus

Alapszava: bool Konstansai: true, TRUE, false, FALSE Numerikus jelentsk 1 illetve 0.
bool igaz = TRUE;

Egsz tpus Alapszava: int rtktartomnya -2147483648 s 2147483647 kz esik. Lehet decimlis, s hexadecimlis. Pldk konstansokra:
1234 0xab, 0Xab, 0XAB

A nyelv a karaktereket is egszknt reprezentlja, nincs kln tpusuk vagy tartomnyuk. A karakterkonstans aposztrfok kztt helyezkedik el. Pldul: c
int a = 5; int b = b;

Vals tpus Alapszava: double rtktartomnya -1.7 * e-308 s 1.7 * e308 kz esik. Felptse: egszrsz, tizedespont, trtrsz.
double a = 12.123;

Szveges tpus Alapszava: string A szveges konstans idzjelek kztt elhelyezked ASCII karakterek sorozata. A megadott karaktersorozat minimlis hossza 0, maximlis hossza 255 karakter lehet. Plda szveges konstansra:
Ez egy szoveges konstans

28

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Szn tpus Alapszava: color Konstansait hromfle mdon lehet megadni: specilis literllal, egsz szmmal vagy nvvel. Specilis literlja C betvel kezddik, utna aposztrfok kztt kell megadni a hrom alapszn (red, green, blue) mennyisgt vesszvel elvlasztva.
C128,128,128

Egsz szmmal hexadecimlisan 0xRRGGBB formban, decimlisan pedig a hexadecimlis rtkre visszavezetve lehet megadni. A nvvel megadott sznkonstans ltalban megegyezik a szn angol nevvel. Pldul:
Black, DarkGreen, SandyBrown, LightSkyBlue

Dtum s id tpus Alapszava: datetime Konstansa D betvel kezddik, utna aposztrfok kztt egy hattag szmsorozat szerepelhet egsz szmmal megadva, megfelel karakterrel elvlasztva. A sorozat elemei rendre: v, hnap, nap, ra, perc, msodperc. A dtum rszt fordtott sorrendben is meg lehet adni. A dtum elvlaszt karaktere a pont, az id elvlaszt karaktere a kettspont. A literl dtumot vagy idt kifejez rsze is elhagyhat, esetleg mindkett. rtkt a 1970. 01. 01. - 2037. 12. 31. intervallumon veheti fel. Reprezentlsra eljel nlkli egszeket hasznl a nyelv. Egy ilyen tpus vltoz az 1970. 01. 01. 0:00 ta eltelt msodpercek szmt jelenti. Pldk dtum konstansokra:
D2011.12.13 14:15:16 D

4.1.3.

Tpuskonverzi

Csak implicit tpuskonverzit ismer a nyelv, ami kifejezsek kapcsn addhat. A konverzi akkor jhet ltre, ha kt, nem egyforma tpus operandus tallkozik egy mveletben. A tpusok konverzi szerinti prioritsa a kvetkez mdon cskken:
string double int (datetime, color, bool)

29

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Pldk:
/* nincs tipuskonverzio, az eredmeny 0 */ int i = 12 / 34;

/* a masodik operandus miatt a kifejezes double, ez tipuskonverzioval a cel tipusra valtozik, tehat az eredmeny 0 */ int j = 1 / 2.0;

/* a kifejezes double tipusu, az eredmeny 0.5 */ double d = 1 / 2.0;

/* a kifejezes int tipusu, ez tipuskonverzioval a cel tipusara (double) vltozik, az eredmny 0.0 */ double e = 12 / 34;

/* a kifejezes double tipusu, ami atalakul a cel tipusava (string), az eredmeny tiz karakteren taroldik: "0.50000000" */ string s = 1.0 / 2;

/*konverzio utan az eredmeny: "Ticket #12345"*/ string t = "Ticket #" + 12345;

4.1.4.

Opertorok, kifejezsek, utastsok

A C-ben szoksos aritmetikai, relcis, logikai, bitenknti logikai s rtkad opertorok tallhatk meg az MQL4-ben is. Hasznlatuk is C-szer. Az inkrementl s dekrementl opertorok postfixek. A vessz opertorral ( , ) elvlasztott kifejezsek kirtkelse balrl jobbra trtnik. Az olyan kifejezs rtke, amelyben hasonlt (relcis) opertor van, 0 vagy 1, aszerint, hogy a kifejezs hamis, illetve igaz. A nyelv precedenciatblzata a Fggelkben tallhat. Egy olyan kifejezs, mint az x = 0 vagy i++ utastss vlik, ha egy pontosvesszt runk utna:
x = 0; i++;

Az utastslezr jel teht a pontosvessz.

30

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A kapcsos zrjelek hasznlatval deklarcik s utastsok egy csoportjt lehet egytt kezelni sszetett utastsba (blokkba) szervezve, ami szintaktikailag egyetlen utastssal egyenrtk. Az MQL4-ben megtallhat utastsok: sszetett- (blokk), kifejezs- (rtkad, fggvnyhv, res), break-, continue-, return-, feltteles- (ktirny elgaztat), switch- (tbbirny elgaztat), ciklusszervez- (while, for), res utasts. Az utastsok hasznlta ltalban C-szer. Ha a return utasts utn kifejezs ll, azt zrjelbe kell tenni. Ekkor a kifejezs rtke kerl tadsra a hv alprogramnak. Ha az alprogram visszatrsi tpusa void, akkor a return utasts utn kifejezs nem llhat, vagy az egsz utasts elhagyand. Az ilyen alprogramok esetn a trzset lezr kapcsos zrjel egy kifejezs nlkli return utasts implicit futtatst is jelenti.

4.1.5.

Fggvnyek

A fggvny egy olyan nvvel elltott programozsi eszkz, amely arra hivatott, hogy a program szvegben egyszer mr megrt kdrszletet jrafelhasznlhatv tegyen. Fggvny deklarcijakor meg kell adni annak visszatrsi tpust, nevt, formlis paramtereit zrjelek kz tve, valamint az jrafelhasznland kdrszletet egy blokkba zrva. Az MQL4 nyelvben egy fggvnynek maximlisan 64 paramtere lehet.
int pelda_fgv(int a, int b) { return (a * b); } // a fuggveny feje // a fuggveny torzsenek kezdete // a fuggveny visszateresi erteke // a fuggveny torzsenek vege

A return utasts az utna megadott kifejezs rtkt adja vissza a hv alprogramnak. Ha szksges, a kifejezs rtke a fggvny visszatrsi tpusra konvertldik, ha a tpusok megengedik. Az olyan fggvnynek, melyben nincs return utasts, vagy a return nmagban ll azaz nem ad vissza rtket a hv alprogramnak , ktelezen void visszatrsi tpusnak kell lennie.

31

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A fggvny paramtereinek megadhat alaprtelmezett rtk, amelyet megfelel tpus konstanssal lehet belltani a fggvny deklarcijakor.
int pelda_fgv2(int a, int b, int c = 0, int d = 1, int e = 2) { return (e); }

Ha a fggvny egyik paramtere rendelkezik alaprtelmezett rtkkel, akkor a paramter listn utna kvetkez sszes paramternek ktelez alaprtelmezett rtket adni. Fggvnyhvs Ha egy kifejezsben olyan azonost szerepel, amely a kifejezst tartalmaz alprogramban nincs deklarlva, s az azonost utn nyit zrjel helyezkedik el, akkor azt az azonostt a fordt egy fggvny neveknt rtelmezi. A fgv_nev nev fggvny hvsa:
fgv_nev(kif_1, kif_2,, kif_n)

A nyelvben rtk szerinti paramtertads van, azaz elszr minden a paramterlistn lv kifejezs kirtkeldik, majd az rtke taddik a fggvnynek. A program fordtsa sorn a rendszer ellenrzi a fggvnyhvskor megadott paramterek szmt s tpust, s egyezteti a formlis paramter listn tallhatval. A fggvnyhvs egy kifejezs, rtke a fggvny visszatrsi rtkvel egyezik meg. Fggvnydeklarci a programban brhol elhelyezhet, msik fggvny trzst kivve. Fggvnyhvskor azoknak a paramtereknek, amelyeknek van alaprtelmezett rtkk, nem ktelez rtket adni, de csak abban az esetben, ha utna a tbbi paramtert is elhagyjuk az aktulis paramterlistrl. Szemlletesen: nem lehetnek lyukak az aktulis paramterlistn.
/* a hivas hibas a harmadik parameter elhagyasa miatt! */ pelda_fgv2(5,5, ,3,4);

32

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Specilis fggvnyek A nyelvben ltezik hrom a programok futsnak szempontjbl specilis jelentsggel br alapfggvny: init() A modul13 kezdrtkeinek belltsra hasznlhat. A programok mkdsket mindig az
init()

fggvny futtatsval kezdik, ha az ltezik bennk. Ha nem ltezik, akkor

inicializlskor nem hvdik fggvny. Charthoz csatolt expert esetn annak init() fggvnye a Terminl indtsakor s a chart lnyeges tulajdonsgainak szimblum s/vagy intervallum megvltoztatsakor jra lefut. start() Ez a modulokban a legfontosabb fggvny. Charthoz csatolt Expert Advisorok esetn minden adat berkezsekor meghvdik. Viszont az jonnan berkez adatokat nem veszi figyelembe a program, amg a start() fggvny be nem fejezi az elz adatra a mkdst. Custom indicatorok esetn a start() az indiktor charthoz csatolsakor, a Terminl megnyitsakor (ha az indiktor valamelyik chart-hoz csatolt) s minden berkez adat esetn lefut. Scriptek esetn a script charthoz csatolsa s inicializlsa utn a start() fggvny rgtn lefut. Amelyik modulban nincs start() fggvny, az nem indthat, nem hasznlhat. deinit() A modul deinicializl fggvnye. Ha nem ltezik, akkor deinicializlskor nem hvdik fggvny. A programok befejezdsekor fut le: a Terminl vagy a chart ablak bezrsakor, s a chart lnyeges tulajdonsgainak szimblum s/vagy intervallum megvltoztatsakor. A hrom specilis fggvnyt is lehet parametrizlni. A Terminl csak paramter megadsa nlkl hvhatja ket, ekkor az alaprtelmezett rtkeket hasznlja a fggvny. Brmelyik meghvhat viszont a modul tetszleges rszrl, ahogyan a tbbi fggvny is.

13

Expert Advisor, Custom Indicator vagy Script

33

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Nem ajnlott az init() fggvnybl a start() fggvny meghvsa vagy kereskedelmi mvelet vgrehajtsa, mert a chart adatok, a piaci rak mg lehet, hogy nem, vagy csak hinyosan llnak rendelkezsre az inicializci egy adott pillanatban. Az init() s deinit() fggvnyeknek olyan gyorsan be kell fejeznik mkdsket, amilyen gyorsan csak lehet.

4.1.6.

Vltozk, tmbk, formlis paramterek


Vltozk deklarlsa

A vltozkat hasznlat eltt deklarlni kell. Elnevezskre azonostk hasznlhatk. A deklarcikor hasznlhatk az alaptpusok (bool, int, double, string), s a kiegszt tpusok (datetime, color). A tpuslers utn a vltoz nevt kell megadni. Pldul:
bool igaz; int egy_szam; double egy_lebegopontos_szam; string egy_sztring; datetime egy_datum = D2000.01.01 00:00; color egy_szin = C128,128,128;

Tmbk hasznlata Egy tmb minden elemnek tpusa azonos.


int egy_dim_tomb[10]; int ket_dim_tomb[10][20]; // egeszeket tartalmazo egy dimenzios tomb // egeszeket tartalmazo ket dimenzios tomb

A tmb index csak egsz tpus lehet. Az MQL4 nyelvben a tmb dimenziinak szma maximlisan ngy lehet. A tmb elemeinek sorszmozsa 0-val kezddik, s n elem tmb esetn (n-1)-ig tart. Ez azt jelenti, hogy a fent deklarlt egy_dim_tomb utols elemre val hivatkozs gy valsthat meg:
egy_dim_tomb[9]

Az indexels tbb dimenzis tmbkre is gy mkdik.

34

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Ha olyan indexre trtnik hivatkozs, amely kvl esik a tmb indextaromnyn, akkor a futtat alrendszer hibt generl (ERR_ARRAY_INDEX_OUT_OF_RANGE). Az utoljra generlt hiba minden esetben lekrdezhet a GetLastError() fggvnnyel. Loklis vltozk Egy fggvny trzsben deklarlt vltoz mindig loklis vltozja a fggvnynek. Lthatsga csak a deklarl fggvnyre terjed ki. Brmilyen kifejezssel inicializlhat. Ez az inicializci a fggvny minden lefutsakor vgbemegy. A loklis vltoz a megfelel fggvny memria terletn kerl eltrolsra. Formlis paramterek Egy fggvnynek tadott paramterek is loklisak. Hatskrk a fggvny trzse. Egy paramter neve nem egyezhet meg sem a globlis vltozkval, sem a fggvnyben deklarlt loklis vltozkval. A fggvny trzsben egy formlis paramter loklis vltozknt hasznlhat, neki rtk adhat. A formlis paramter listn tallhat paramterek konstansokkal inicializlhatk, ebben az esetben a konstans rtke a paramter kezd rtke. Inicializlt paramter utn kvetkez paramtereket is inicializlni kell.
void teszt_fgv(int a, double b = 1.0, double c = 2.0) { . . . }

Ilyen fggvnyek hvsa esetn a kezdrtkkel elltott paramterek elhagyhatk. A fenti


teszt_fgv

helyesen meghvhat a kvetkez mdon:

teszt_fgv(1,0.5)

Az rtk szerinti paramtertads miatt a paramtereken a hvott fggvny trzsben trtnt vltoztatsokat a hv fggvny nem fogja rzkelni. Paramterknt tmb is tadhat, de elemeinek rtke nem vltoztathat.

35

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A nyelvben lehetsg van paramterek referencia szerinti tadsra. Az ilyen mdon tadott paramteren trtn vltoztatsok a hv oldalon is megjelennek a megfelel vltozban. Tmbelem nem adhat t referenciaknt, tmb igen. Csak ugyanazon modulon bell lv paramterek adhatk t referenciaknt. Annak jellsre, hogy referencia paramtert hasznl a fggvny, a paramter tpusa utn & jelet kell rakni.
void teszt_fgv2(int& elso, int& masodik, int& tomb[]) { elso = 0; for(int i = 0; i < ArraySize(tomb) i++) elso += tomb[i]; }

Referenciaknt tadott tmb esetn az elemein vgzett vltozsok lthatk a hv oldalon is. A fenti fggvny lefutsnak eredmnyeknt az els paramter s a hv oldalon neki megfelel vltoz rtke a tmb elemeinek sszege lesz. Ellenttben az egyszer paramterekkel, tmb tadhat referenciaknt libraryben lv fggvnynek is. Referencia paramternek nem adhat kezdrtk. Statikus vltozk Statikus memriaosztlybeli vltoz deklarlsakor a tpus el a static mdostt kell rni. A statikus vltozk nem vesztik el rtkket, amikor a deklarl fggvnyk befejezi mkdst, hanem a memriban maradnak.
static int statikus_valtozo = 1;

A formlis paramterek kivtelvel minden vltoz deklarlhat statikusknt. Inicializcija egy megfelel tpus konstanssal trtnhet. Ha nincs explicit inicializci, a statikus vltoz rtke nullzdik

36

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Globlis vltozk Olyan vltoz, amely nem valamelyik fggvnyen bell kerlt deklarlsra. Hatskre az egsz program. Egy globlis vltoz elrhet az sszes, a programban definilt fggvny ltal. Ha nincs megadva neki explicit kezdrtk, a vltoz nullzdik. Kezdrtk csak megfelel tpus konstanssal adhat neki. Egy globlis vltoz a program futsa sorn csak egyszer, az init() fggvny meghvsa eltt inicializldik. A globlis hatskrrel deklarlt vltozk nem keverendk ssze a Terminl ltal hasznlt globlis vltozkkal, amelyek elrsre a GlobalVariable...() fggvnyekkel van lehetsg. Extern vltozk Deklarlsuk a statikus vltozkval azonos.
extern input_valtozo = 0;

Ezek a vltozk a program input paramterei, annak Tulajdonsgok ablakbl elrhetk a Terminlon keresztl. Tmb nem lehet extern vltoz. Kezdrtkads Minden vltoznak explicit mdon adhat kezdrtk a definilsakor. Ennek hinyban a vltoz nullzdik, azaz rtke belltdik nullra. Globlis s statikus vltoznak csak a megfelel tpus konstanssal adhat kezdrtk, ezek a program futsa sorn egyszer inicializldnak. Loklis vltoznak brmilyen kifejezssel adhat kezdrtk. Minden alkalommal inicializldnak, amikor az ket tartalmaz fggvny meghvsra kerl. Tmb kezdllapotnak belltsra kapcsos zrjelek kztti elemsorozat alkalmazhat. rtkek megadsnak hinyban a tmb elemei nullzdnak. Ha az inicializland tmb mrete nincs megadva, akkor a fordt a megadott elemsorozat hosszt veszi annak. Tbbdimenzis tmbt ugyangy kell inicializlni, ahogy egydimenzist. Tmb elemeinek csak konstansokkal adhat kezdrtk. Pldul:
int tomb[3][3] = {1,2,3, 1,2,3, 1,2,3};

37

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Ennek a ktdimenzis, kilencelem tmbnek a reprezentcija tblzatban: 1 2 3 1 2 3 1 2 3

4.1.7.

Az elfeldolgoz rendszer

Az elfeldolgoz (preprocessor) az MQL4 fordtjnak egy specilis rsze. Kzvetlenl a forrsszveg lefordtsa eltt dolgozik. Az elfeldolgoz lehetsget biztost a forrsszveg olvashatsgnak nvelsre, pldul mnemonikok14 elhelyezst teszi lehetv a kdban konstansok hasznlata helyett. Ha a # jel szerepel egy program egy sornak els (nem whitespace) karaktereknt, akkor az a sor az elfordtnak szl direktva. A direktva sornak lezrsa: soremelssel. Nevestett konstans deklarlsa Nevestett konstansokat a #define szerkezet hasznlatval lehet ltrehozni. A program szvegben a nevestett konstans mindig a nevvel jelenik meg. A fordts eltt az elfeldolgoz ennek a nvnek a program szvegben elhelyezett az sszes elfordulst helyettesti az rtkvel. Az rtk brmilyen tpus lehet. A nv azonost jelleg, ltalban nagybetkkel rva. Hasznlata:
#define azonost rtk

Pldul:
#define PI 3.141592 // a PI konstans erteke 3.141592 lesz #define IRO_NEVE Hugo // a NEV konstans erteke a Hugo sztring

Propertyk Minden MQL4 programban lehetsg nylik tovbbi specilis jellemzk megadsra a forrsszvegben. Ezek a #property paramterek segtenek a Terminlnak a programok jobb kiszolglsban. A fordt a #property paramtereket a futtatand modul tulajdonsgai kz illeszti. Elssorban indiktorok kls belltsainak megadsnl alkalmazandk.
#property azonost rtk

Pldul:
#property copyright Kiss Istvan

A Fggelk tartalmaz egy tblzatot a propertyk lehetsges rtkeirl.


14

Emlkeztet, beszdes nv

38

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Fjlok inkludlsa Az #include direktva brhol elhelyezhet a program szvegben, de ltalban a

forrsszveg elejn tallhat. Alkalmazsa:


#include <allomany_nev> #include allomany_nev;

Az elfordt ezt a sort helyettesti az allomany_nev-vel megadott fjl tartalmval. Az idzjelek kztt lev llomnyt az alaprtelmezett knyvtrban keresi, az aktulis knyvtrban nem. A msik megadsi formnl a keress fordtva megy vgbe. Fggvnyek importlsa Lefordtott MQL4 modulokbl (.ex4) vagy .dll modulokbl lehet fggvnyeket importlni. A modul nevt #import direktvban kell megadni. Ahhoz, hogy a fordt helyesen tudja megvalstani az importlt fggvny hvst s a paramtereinek tadst, a fggvny teljes meghatrozsra szksg van importlskor. Az importlt fggvny lerst kzvetlenl az import direktva utn kell megadni.
#import allomany_nev fgv1_def; fgv2_def; . . . fgvn_def; #import

Az importlt fggvnyeknek egyedi nvvel kell rendelkeznik, azonos nev fggvnyek nem importlhatk egyszerre klnbz modulokbl, s nevk nem egyezhet meg beptett fggvnyekvel sem Ahogy egy fggvny kikerl abbl a krnyezetbl, ahol lefordtsra kerlt (azaz importlja egy msik modul), a fordt nem tudja ellenrizni az tadott paramterek helyessgt. Ezrt a futsi hibk elkerlse miatt szksg van a paramterek tpusnak s sorrendjnek helyes

39

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

megadsra importlskor. Az importlt fggvnyeknek nem lehet kezdrtkkel elltott paramtereik. Egy program futsa sorn, az importlt fggvnyek esetben a nyelv ksi ktst alkalmaz, ami azt jelenti, hogy a meghvott modul addig nem tltdik be, amg az importlt fggvny meghvsra nem kerl. Nem ajnlott a betltend modul teljes elrsi tjt megadni. Az MQL4 libraryk alaprtelmezetten a terminal_eleresi_utja\experts\libraries knyvtrbl kerlnek betltsre. Ha a modul ott nem elrhet, akkor a rendszer egy szinttel fentebb prblkozik a knyvtr-hierarchiban.

4.2. A nyelv tovbbi elemeinek bemutatsa programfejlesztssel


Ez a fejezet a nyelv tovbbi, fontos elemeinek valamint egy program fejlesztsi menetnek bemutatsra kerlt a dolgozatba. A bemutats nem lesz teljes kr, csak azokat a nyelvi elemeket rinti, amelyek vizsglhatk egy meghatrozott expert segtsgvel. Ez az expert (MACD Sample.mq4) pldaprogramknt megtallhat a MetaEditorban. A dolgozatban lv bemutats alapjt egy az expertrl kszlt cikk kpezi [8]. Az expert mkdsnek alapjt az MACD indiktor adja. Az indiktor vezrl jeleket generl pozci nyitsra a kvetkez mdon: Vteli jel (long pozci) ha az indiktor rtke negatv, emelkedik s keresztezi a jelvonalat, ahogy a 10. bra szemllteti.

10. bra Vteli jel

Eladsi jel (short pozci) ha az indiktor rtke pozitv, cskken s keresztezi a jelvonalat, ahogy a 11. bra szemllteti.

11. bra Eladsi jel

40

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

A pozcikbl val kiszlls a kvetkez mdon zajlik: Kiszlls long pozcibl a take profit vagy a trailing stop15 szint elrsekor vagy eladsi jel esetn Kiszlls short pozcibl a take profit vagy a trailing stop szint elrsekor vagy vteli jel esetn Fontos, hogy az indiktor jelentktelen vltozsait ne vegye figyelembe a program. Ezrt az indiktor hasznlata kiegsztsre kerl gy, hogy az ltala generlt jelet csak akkor hasznlja a program, ha az indiktor mrete nagyobb egy bizonyos rtknl. Az MACD indiktor jelzseit egy adott idszakra a 12. bra mutatja.

12. bra MACD indiktor jelzsei egy adott rfolyamgrbre (EURUSD, H1)

4.2.1.

A programfejleszts lpsei s a forrsszveg magyarzata

Ebbe az alfejezetbe a fentebb mr emltett MACD Sample.mq4 expert teljes forrsszvege bekerl. A kdon kvl csak a szervesen hozz tartoz magyarzatok szerepelnek a szvegben. A magyarzatok elhagysval megkapjuk a teljes, helyes forrskdot.

Kvet stop, egy olyan kereskedsi stratgia, amelynl a kiszllsi rfolyam meghatrozott mdon (valahny pont tvolsggal) kveti az rfolyamot.

15

41

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Vltozk inicializlsa A program elejn clszer megadni a kls vltozkat. Ezeket ksbb a programszveg trsa nlkl is meg lehet vltoztatni a Terminlon keresztl.
extern double TakeProfit = 120; extern double Lots = 4; extern double TrailingStop = 30; extern double MACDOpenLevel=3; extern double MACDCloseLevel=2; extern double MATrendPeriod=26;

int start() { double MacdCurrent, MacdPrevious, SignalCurrent; double SignalPrevious, MaCurrent, MaPrevious; int cnt, ticket, total;

Kiindul adatok ellenrzse Ez a programrsz ltalban kis mdostsokkal az sszes expertben elfordul. Ellenrzi, hogy az aktulis chart ablakban mennyi a rendelkezsre ll gyertyk szma (Bars), valamint azt, hogy az extern vltozk (jelen esetben a TakeProfit vltoz) belltsa megfelel-e a kezdeti elvrsokhoz.
if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); }

42

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Vltozk belltsa a gyors adathozzfrshez Az indiktorok (iMA, iMACD) ltal kalkullt rtkeket clszer vltozkban trolni, mert gy knnyebben, gyorsabban hozzfrhetv vlnak. Az indiktorok hvsban nevestett konstansok szerepelnek (PRICE_CLOSE, MODE_MAIN stb.).
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

A terminl vizsglata A terminlban nyitott pozcik szmt egyszeren meg lehet hatrozni az OrdersTotal() fggvnnyel:
total=OrdersTotal(); if(total<1) {

Ha nincs nyitott pozci, akkor a piaci helyzet elemzse eltt clszer megvizsglni az account tulajdonsgait, pldul anyagi httert az AccountFreeMargin() fggvnnyel. A fggvny visszatrsi rtke az account szabad fedezete.
if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); }

Az anyagi felttelek ellenrzse utn meg lehet vizsglni, van-e lehetsg pozci nyitsra. Vteli pozci nyitsnak felttele (vteli jel):
if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&

43

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) {

Vteli jel esetn pozci nyits kvetkezik az OrderSend() fggvnnyel. A fggvny visszatrsi rtke a pozci sorszma lesz, amelyet rtkl adunk a ticket vltoznak:
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point,"macd sample",16384,0,Green);

Ha sikeres volt az OrderSend() fggvny, akkor a ticket rtke nem 0. Tovbbi hasznlatra kivlasztjuk a ticket sorszm megbzst az OrderSelect() fggvnnyel
if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); }

Ha nem volt sikeres az OrderSend() fggvny, akkor a ticket rtke 0, ekkor a hiba kiratsra kerl a GetLastError() fggvny segtsgvel.
else Print("Error opening BUY order : ",GetLastError()); return(0); }

Az eladsi pozci nyitsa analg mdon trtnik a vteli pozci nyitsval:


if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-

44

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

TakeProfit*Point,"macd sample",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); }

Pozci nyitsa utn az expert befejezi mkdst, a kvetkez berkez adatra pedig jra kezdi.
return(0); }

Nyitott pozcik kezelse A cnt a ciklusvltoz, amit a ciklusba lps eltt deklarlni kell. A ciklus vgiglpked a nyitott pozcikon.
for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) {

Vteli pozci esetn megvizsglja, hogy szksg van-e a pozci zrsra. Ha igen, akkor az
OrderClose()

fggvnnyel megteszi azt az aktulis ron (Bid).

if(OrderType()==OP_BUY) { if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

45

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

return(0); }

Ha a pozci nem kerlt lezrsra, akkor az expert megvizsglja annak trailing stop szintjt, ami csak akkor lltdik t, ha a pozci mr rt el profitot. Az OrderModify() fggvny hvsval lehet megvalstani a kvet stopot, hiszen meghvsakor a stop loss rtket mindig az aktulis rfolyamhoz igaztja (Bid-Point*TrailingStop).
if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),BidPoint*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } }

Nyitott eladsi pozcik vizsglata s a kezels analg a vteli pozcikhoz:


else { if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); return(0); } if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) {

46

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } }

Mr csak a nyitott zrjelek bezrsa s az expert befejeztetse maradt htra:


} } } return(0); }

Az ily mdon elksztett expert futtathat a Terminlban. Termszetesen a nyelv adta lehetsgek sokkal bvebbek az eddig lertaknl. Nevestett konstansok, beptett fggvnyek s elre elksztett indiktorok sora segti az automatizlt kereskeds programozst s a devizapiaci dntshozatalt.

47

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

5. sszefoglals

A dolgozatban lert eszkzrendszer megfelel az automatizlt kereskeds programozsra a devizapiacon. Megmutattam, hogy a stratgiai programozs s a programok tesztelsi, optimalizlsi lehetsge hogyan ltethet t a gyakorlatba az MQL4 programozsi nyelv s a MetaTrader 4 platform segtsgvel. A dolgozatot nem a nyelv vagy a platform teljes lersnak szntam, azoknak csak azt a rszt mutattam be, amely lehetv teszi az online kereskedst automatizlt mdon. A dolgozat utols rszben bemutatott program nem tl bonyolult, a kereskedsi stratginak teljesen megfelel, a gyakorlatban is jl hasznlhat.

48

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Irodalomjegyzk

1. rsek Zs. 2002. Bevezets a devizapiacokra. KJK-KERSZV Jogi s zleti Kiad Kft. 2. Gyulaffy Bln Dr. 2005. Devizagazdlkods devizagyletek. Dunajvrosi Fiskola Kiadi Hivatal. 3. Gyulaffyn Dr. Bernyi M., Kaszs M. 1994. Tzsdeelemzs. SALDO Pnzgyi Tancsad s Informatikai RT. 4. Juhsz I. 2003. Programozs 1. Egyetemi jegyzet, elektronikus kzls. mobiDIK knyvtr, Debrecen. 5. Kernighan, B. W., Ritchie, D. M. 2000. A C programozsi nyelv. Mszaki Knyvkiad. 6. Devizapiaci alapismeretek: http://devizapont.hu/tananyag.php 7. Devizapiaci alapismeretek: http://www.infinad.hu/download/ALAPISMERETEK.pdf 8. Expert Advisor Sample: http://articles.mql4.com/84 9. MetaQuotes Language 4 Expert Advisors: http://www.metaquotes.net/experts/mql4/ 10. MetaQuotes Language 4 Documentation: http://docs.mql4.com/ 11. MetaTrader 4 Trading Platform: http://metatrader4.com 12. MetaTrader 4 Users Guide: http://www.metaquotes.net/files/metatrader4_en.chm

49

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

Fggelk

1. Tblzat Az MQL4 Precedenciatblzata () [] ! ++ -~ & | ^ << >> * / % + < <= > >= == != || && = += -= *= /= %= >>= <<= &= |= ^= , Fggvnyhvs Tmbelem hivatkozs Logikai negls Eljelvlts Inkrementls Dekrementls Bitenknti negls Bitenknti S Bitenknti VAGY Bitenknti kizr VAGY Balra shiftels Jobbra shiftels Szorzs Oszts Maradkos oszts sszeads Kivons Kisebb Kisebb egyenl Nagyobb Nagyobb egyenl Egyenl Nem egyenl Logikai VAGY Logikai S rtkads rtkads rtkads rtkads rtkads rtkads rtkads rtkads rtkads rtkads rtkads Vessz Balrl jobbra Jobbrl balra

Balrl jobbra

Balrl jobbra

Balrl jobbra Balrl jobbra

Balrl jobbra Balrl jobbra Jobbrl balra

Balrl jobbra

50

Forrs: http://www.doksi.hu

Automatizlt kereskeds programozsa a devizapiacon

2. Tblzat Propertyk s lehetsges rtkeik

Constant link copyright stacksize library indicator_chart_window indicator_buffers indicator_minimum indicator_maximum indicator_colorN indicator_widthN indicator_styleN indicator_levelN indicator_levelcolor indicator_levelwidth indicator_levelstyle show_confirm show_inputs

Type string string int the company name stack size

Description a link to the company website

a library; no start function is assigned, nonreferenced functions are not removed void int double show the indicator in the chart window show the indicator in a separate window the number of buffers for calculation, up to 8 the bottom scaling limit for a separate indicator window the color for displaying line N, where N lies between 1 and 8 width of the line N, where N lies between 1 and 8 style of the line N, where N lies between 1 and 8 predefined level N for separate window custom indicator, where N lies between 1 and 8 level line color level line width level line style before script run message box with confirmation appears before script run its property sheet appears; disables show_confirm property

indicator_separate_window void

double the top scaling limit for a separate indicator window color int int double color int int void void

51

S-ar putea să vă placă și