Lemmik Postitused

Toimetaja Valik - 2019

Mis viga on MT4 ja MT5 strateegiatestil

Tere, kolleegid Forexi kauplejad!

Täna jätkame sellise laia teema nagu algoritmikaubandus arutamist ja räägime sellisest vajalikust tööriistast nagu robotite kauplemine. Osaliselt on paljudes selles artiklis tõstatatud probleemidest käsitletud ka ajaveebilehtedel, kuid minu arvates pole need endiselt piisavalt üksikasjalikult käsitletud. Niisiis, täna saame teada, mis on backtesting ja millised raskused ja lüngad tekivad ekspertnõustajate testimisel, samuti selgitame välja MetaTrader terminali piirangud ekspertnõustajate testimisel ja optimeerimisel ning leiame võimalusi nende piirangute võimalikult suureks ühtlustamiseks.

Mis on backtest

Meie ajaveebi artikkel on juba kirjutatud, kuidas testida nõustajat MT4 terminalis, aga ka MT5 terminalis. Seetõttu annan lihtsalt tagasitestimise määratluse. Tagasi test on kauplemissüsteemi reeglite rakendamine ajalooliste turuandmete komplekti suhtes - see on kõik. See tähendab, et me määrasime kindlaks reeglid turule sisenemiseks, väljumiseks, positsiooni jälgimiseks ja selle mahu arvutamiseks ning rakendasime neid reegleid varasemate andmete suhtes, justkui kaupleksime sellel hetkel nende reeglite järgi. Seega saame hinnata selle süsteemi tõhusust, mille võiks varem saavutada.

Võib-olla on testija kõige olulisem funktsioon simulatsioon. Algoritmi autor teeb tagasivaateid, mille põhjal saab otsustada, kas tasub Forexi nõustajat veelgi täiustada või kas kauplemissüsteem, mille ta uuringuteks võttis, pole aega väärt.

Tagasi test aitab meil ka hinnata, kas seda strateegiat tasub kasutada reaalseks kauplemiseks, lähtudes selle varasemast tõhususest. Tegelikult aitab tagasiulatuv test meil enne tõelise rahaga riskimist kõrvaldada halvad nõustajad.

Lisaks strateegiate esialgsele valimisele edasiseks tööks nendega ja sobimatute strateegiate filtreerimisega aitab testija kontrollida ka loodud süsteemide jõudlust, tuvastada vigu ja parandada algoritmi toimimist.

Peamised vead ekspertnõustajate testimisel

Nõustajat on väga lihtne testida, kuid paraku pole testi tulemused sugugi reaalse kauplemise tulemused. Saame simulatsiooni tulemused. Vaatamata mudeli keerukusele sisaldab see siiski teatud eeldusi ja lihtsustusi, mis muidugi viib ebatäpsete tulemusteni. Sellepärast on testimisega seotud palju lõkse. Allpool annan peamised vead testimisel.

Testimine ainult valimisiseste katsetega.

See on algajate kõige levinum viga ja halvim. Sisuliselt on see süsteemi sobitamine kõveraga, mis tekib siis, kui kasutate strateegia optimeerimiseks ja testimiseks samu andmeid. Selline testimine hindab alati süsteemi tulemusi, mida reaalkaubanduses näha saab. Selle põhjuseks on asjaolu, et süsteemi ei testitud muude andmetega, mis ilmselt erinevad testis kasutatud andmetest.

Turutsükli muutus

Turud on ebakindlad ja muutuvad pidevalt. Seetõttu pole nii lihtne valida sobivaid parameetreid, et süsteem pikka aega töötaks. Pealegi, mida pikem on see periood, seda universaalsemad on süsteemi parameetrid. Nõustaja ideaalseid parameetreid, mille abil robot igal turul suurepäraselt kaupleks, kahjuks pole. See on üks põhjusi, miks reaalturul töötavad nõustajad halvemini kui testides.

Tehingukulud

Paljud Forex-kauplejad, eriti algajad, ei võta arvesse positsioonide avamise ja sulgemisega seotud kulusid. Sageli näen ma teste, mis on tehtud ebareaalselt väikese vahega, näiteks selle asemel, et kasutada testi jaoks EURUSD-l 2-3 punkti levikut, võtavad inimesed leviku 0,5-1 punkti. Tulemuseks on granuleeritud pilt, millel pole tegelikkusega absoluutselt mingit pistmist, sest see, et teie maakler teatas selle paari jaoks kuskil 0,5-protsendise hinnavahe, ei tähenda veel, et see nii oleks. Lisaks unustavad paljud inimesed sellise asja nagu tehingutasud. See ei kehti igat tüüpi kontodel ja mitte kõigil maakleritel, kuid reeglina on madala ja keskmise suurusega kontode erinevus üsna suur. Ärge unustage ka selliseid asju nagu vahetuslepingud - need moonutavad ka testi tulemusi ja mõjutavad lõpptulemust. Noh, ja muidugi libisemine - kõigi pipzerite nuhtlus. Kui liita kõik need tegurid kokku, selgub, et kauplemine on üsna kallis ülesanne ning reaalsel turul maksad tehingu avamise eest 0,5 leviku punkti + 0,7 vahendustasu + 0,3 punkti, tehing libiseb avamisel ja sulgemisel ning sellest tulenevalt moodustavad tegelikud tehingukulud 1,8 punkti.

Peipsi tulevikku

Tuleviku andmeid saab testimisel kasutada, enamasti algoritmi kirjutamise vigade tõttu, kuid mõnikord pahatahtlikkuse tõttu. Eelmisel aastal oli väga moes müüa turgude osas mql5.com veebisaidile tulevikku vaatavaid nõustajaid. On palju mugavam kaubelda ja fenomenaalseid kauplemistulemusi näidata, kui teate tulevikku. Kuid sellistel tulemustel pole kahjuks midagi pistmist reaalse kauplemisega.

Instrumendi likviidsus

Ajaloo testimisel saate hõlpsalt peanahka tuhat partiid ja head tulemused. Reaalses kauplemises mõjutavad sellised mahud aga paratamatult turgu, isegi 100-partii positsioon õhtul või öösel võib isegi populaarsete kauplemispaaride hinda liigutada, on see kinnitatud. Testeris ei arvestata seda efekti mingil viisil.

Ajaloolised andmed

Paljud maaklerid pakuvad kasutada oma ajalooliste andmete andmebaasi. Reeglina ei ole seal olevad hinnapakkumised parima kvaliteediga. Võite leida suuri puuduvaid ajaloolisi andmeid, eriti madalama ajakava korral. Internetist leiate ka palju tasuta pakkumiste allikaid, mis on tavaliselt vähemalt kahtlase kvaliteediga. Hinnapakkumiste kvaliteet mõjutab suuresti tagantjärele testi tulemusi, nii et peaksite seda probleemi võtma nii tõsiselt kui võimalik.

Madal vastupidavus

Mõned kauplejad, eriti algajad, lubavad väikese töökindlusega süsteemidel pärisrahaga kaubelda. Töökindlus on süsteemi vastupidavus sisendandmete muutustele. Näiteks oma süsteemi testimine alates selle kuu 3. kuupäevast kuni tänapäevani annab teile hea tulemuse, kuid kui te käivitate testi alates kuu 4. kuupäevast, läheb süsteem väljavõtmiseks. See tähendab, et süsteem on madala töökindlusega. Veel üks näide, kui muutsite turule sisenemist mõjutava indikaatori perioodi 9-lt 10-le ja süsteem hakkas ühinema. Suur viga oleks selliste süsteemide tegelik kauplemine.

Psühholoogia

Nagu ma eelmises artiklis ütlesin, mängib psühholoogia algoritmilises kauplemises palju väiksemat rolli kui käsikaupluses. Erinevad kauplemissüsteemide müüjad propageerivad ideed, et robotiga kaubeldes võib psühholoogia ununeda. Psühholoogia täielik eiramine on aga algajate kauplejate veel üks viga. Sellegipoolest on mitmeid kauplemissüsteeme, mis võivad testimise ajal tunduda üsna head ja reaalses kauplemises lihtsalt väljakannatamatud. Lisaks, kuna paljud käsitsi algajad kauplejad muudavad oma kauplemise reegleid liikvel olles, tõmbavad vähem kogenud algoritmikauplejad sageli oma pastakad olemasolevatesse süsteemidesse, proovides neid liikvel olles väänata. See kõik toob muidugi kaasa rahalisi kaotusi.

Testijate tüübid tööpõhimõtte järgi

Praegu on finantsturgudel kauplemiseks turul palju erinevaid terminale. Paljud terminalid pakuvad võimalust automatiseeritud kauplemiseks ekspertide kirjutamiseks ning enamikul neist terminalidest on reeglina sisseehitatud testijad ja optimeerijad. Kõik need erinevad suuresti funktsionaalsuse ja võimaluste poolest, kuid vastavalt tööpõhimõttele võib testijad jagada kahte tüüpi: "tsükliline" ja "sündmusele orienteeritud". Igal neist tüüpidest on oma plussid ja miinused.

Loop backtest

Seda tüüpi testerid on kõige lihtsamini rakendatavad ja töös läbipaistvad. Selline testija läheb lihtsalt igast ribast ükshaaval läbi. Uue hinna saabumisel teostavad nad mõned arvutused hindade kohta, arvutavad indikaatorid ja võimaldavad teil tellimusi esitada ja muuta. Seejärel toimub järgmine iteratsioon, kuni test on peatatud. Samal ajal salvestab testija nõustaja töö kohta mõned statistilised andmed - kasumi, tehingute arvu, väljavõtmise jms. Ning pärast selle valmimist annab ta välja nõustaja testimise aruande. Nagu teate, on selline kujundus väga lihtne - peate lihtsalt alla laadima ajaloolised andmed ja sorteerima hindu ridade kaupa, tehes iga kord arvutusi. Kindlasti leiate selle mõiste tuttavaks. Täpselt nii, MetaTrader töötab selle skeemi järgi. See tähendab, et see pole täiesti tõsi, kuna Mql-keeles on ikka veel etteantud sündmusi. Nii et see platvorm, nagu paljud teisedki, on üsna segatüüpi esindaja.

Nagu te arvatavasti juba arvasite, on selliseid backtesteid peaaegu igas programmeerimiskeeles väga lihtne rakendada. Samal ajal töötavad nad väga kiiresti - saate kiiresti testida ja optimeerida ekspertide nõustajate parameetrite paljusid kombinatsioone.

Kahjuks on sellise testija peamiseks puuduseks vastuvõetud tagastestide ebareaalsus. Üsna sageli ei võta sellised backtestid arvesse isegi levikut, vahendustasusid ja tellimusi täidetakse alati turuhindades ilma libisemiseta ja kohe. Seetõttu kasutavad spetsialistid selliseid testijaid ainult algoritmi tõhususe esmaseks hindamiseks, et otsustada, kas töötada nõustajaga edasi.

Üritusele orienteeritud testijad

Sellise testija tööpõhimõtte selgemaks mõistmiseks soovitan teil tutvustada arvutimängu. Mängija suhtleb mänguruumis pidevalt, see ruum ise ei ole staatiline - pidevalt juhtub midagi, pidevalt ründavad kurjad olendid ja sõbralikud tegelased muretsevad koduse tüli tõttu üksteise kolju telgedega. Selleks, et teie arvuti ei põgeneks toimuva rohkuse eest, on nutikad inimesed tulnud välja kõigi toimuva kalkulatsioonidega, et panna teatud lõputu ringi, mida nimetatakse sündmuse või mängu ahelaks, mille sisse ehitatakse sündmuste järjekord. Neid toimuvaid sündmusi töödeldakse pidevalt ahelas sees omakorda kiirusega, mis vastab teie arvuti võimsusele. Testeri osas võivad sellised sündmused hõlmata uute kauplemissignaalide ilmumist, valmisolekut maaklerile teadet saata, uue linnukese saabumist ja maaklerilt teabe saamist. Konkreetse sündmuse ilmumisel töötleb seda vastav testrimoodul ja võimaluse korral genereeritakse uusi sündmusi, mis jällegi satuvad sündmuste järjekorda.

Seda tüüpi testerite positiivsetest külgedest võime märkida tegelikkusele kõige lähemal asuvat testimismudelit ja selle tulemusel väga täpseid teste, mis võtavad arvesse paljusid reaalses kauplemises tekkivaid tegureid. Selle testija arhitektuuril on potentsiaal kasutada süsteemide ja tööriistade portfelle ning sellised testijad sisaldavad reeglina võimalust testida ja optimeerida suurt hulka süsteeme erinevatel tööriistadel.

Selle disaini puuduste hulgast võib välja tuua koodi keerukuse ja vastavalt ka suure veaväli. Kirjutamissüsteemid nõuavad teadmisi objektorienteeritud programmeerimisest ja häid kogemusi süsteemi kujundamisel. Teine märkimisväärne puudus, mis on seotud erinevate testrimoodulite interaktsioonidega, on aeglane kiirus. Testimine ja eriti optimeerimine võib võtta üsna palju aega.

MetaTrader terminalid

Blogi lehtedelt leiate ülevaate MetaTrader4 terminalist ja isegi MetaTrader5-st. Kuid kahjuks ei kirjutata nendes artiklites kõige tähtsamat: kas on võimalik neid terminale kasutada oma nõustajate testimiseks ja optimeerimiseks ning kui palju võite tulemusi usaldada. Proovime selle välja mõelda.

Nagu ma juba ütlesin, ei kasuta professionaalsed algoritmikauplejad MetaTraderi terminali peamiselt kolmel põhjusel: ebapiisav keele paindlikkus kirjutamisnõustajate jaoks, testimise madal täpsus ja ebarahuldav testimiskiirus. MetaQuotes on loonud suurepärase terminali - lihtne, mugav. See on suurepärane käivitusalus algoritmikaubanduse maailma uurimiseks. Viimasel ajal on platvormile lisatud palju õigeid ideid, eriti terminali viiendas versioonis, kuid kahjuks on nende elluviimine meid lasknud. Näiteks kuidas saavad inimesed hinnata paremat testijat, kui nende hinnapakkumisi pole võimalik importida? Või miks peaksid inimesed iseseisvalt oma nõustajate ja näitajate koodi ümber kirjutama, kui oli võimalik kirjutada lihtne programm, mis teeks seda kõike automaatselt? Kuid kõigepealt asjad.

Niisiis, tulin välja lihtsa kauplemissüsteemiga, mille algoritm oli kirjutatud kujul mql4 ekspertnõustaja, mql5 ekspertnõustaja ja testrina koos optimeerijaga, millel oli sisse ehitatud sama R strateegia. Tegin seda testide ja optimeerimise läbiviimiseks ning kiiruse võrdlemiseks.

Viimase viieteistkümne aasta jooksul kulus nõustaja testimiseks tunni ajaraamis terminali neljandas versioonis 20 minutit, viiendas - umbes 5 minutit, testeris R-keeles - 13 sekundit. Sama nõustaja viiekümne tuhande parameetri kombinatsiooni optimeerimine neljas versioonis samadel tingimustel võttis aega 10 päeva, viiendal - ainult kolm päeva, R - 16 minutit. Ma ei saaks MT4-s sama testi teha 15 paari kohta korraga - seda lihtsalt ei pakuta. Viies versioon õnnestus 2 tunni 27 minutiga, R 6 minutiga. R-keel pole kaugeltki kiireim, kui kirjutaksin testija näiteks C # kujul, olen kindel, et tulemused oleksid paremad iga 10 korra järel.

Analüüsime MetaTrader 4

Mis põhjustab testija aeglust? Üks on kindel - terminal kasutab tööks ainult ühte protsessori südamikku. See tähendab, et isegi kui teie autos on neli või enam, ei aita see asjaolu. Saate probleemi osaliselt lahendada, käivitades mõne muu terminali ja katsetades või optimeerides samal ajal mõne teise instrumendi ekspertnõustajat. See kiirendab protsessi pisut, kuid ei lahenda probleemi täielikult - üks katse läbib sama valusalt kaua.

Neljanda terminali teine ​​tõsine probleem on suutmatus puukide andmeid kasutada. Kui me kaupleme reaalajas, jõuavad hinnad terminali muutumisel erinevatel ajahetkedel. Hinna saabumine pole seotud kindla perioodiga, näiteks üks kord minutis või tunnis. Ajaloolised andmed salvestatakse terminali noteeringubaasi erinevate ajakavade, näiteks H1, D1, M15, OHLC hindade kujul. Testimise ajal modelleeritakse uute puukide saabumine M1 ajakava alusel. Me kõik teame, et maakleri edastatud mahud ei ole tegelikult samad tegelikud mahud. See on lihtsalt teatud aja jooksul ilmnenud puukide arv. See tähendab, et testija teab M1 küünlaaluse avamis- ja sulgemishindu, 1-minutise perioodi maksimaalseid ja minimaalseid hindu ning sellel minutil edastatud puukide arvu. Mis hinnad need puugid olid, millal täpselt tuli puukile vastav hind - see kõik pole teada. Mõne algoritmi põhjal leiutab testija ise, kuidas hind küünla sees läks. See tähendab, et siin on see väga lihtsustatud mudel, millest me eespool rääkisime. Sellegipoolest hoidsid kauplejad sellest probleemist mööda. On mitmeid eriprogramme, mis võimaldavad testimisel ja optimeerimisel kasutada tõelisi puukide andmeid. See on tasuta programm TickstoryLite või tasuline Tick Data Suite programm. Kõigi nende programmide funktsioonide kohta saate lugeda ülaltoodud artiklites, kuid ma soovitaksin mitte olla ahned ja osta teine.Tick ​​Data Suite ei võimalda mitte ainult kontrollida nõustajaid puukide andmete osas, see programm lisab terminali paar imelist funktsiooni, mis on lihtsalt vajalikud: ujuv hajutus (see tähendab tegelikult kaks linnukese voogu, nagu tegelikult - eraldi Ask and Bid) ja suurepärane, stressianalüüs, mis on nõutav peanaha nõustajate jaoks, on libeduse jäljendamine.

Nüüd pean ütlema paar sõna modelleerimise kvaliteedi kohta, mis tavaterminalis ei tõuse üle 90% ja ülaltoodud programmidega saab 99%. Paljud teist satuvad pidevalt võrku väitega, et 90% testidest on täielik prügikast ja ainult 99% testidest tuleb läbi viia - need on väga täpsed. Noh, muidugi, see pole päris tõsi (üldiselt, ausalt öeldes, on MT4 või MT5 platvormil tehtud kõik testid, ehkki mitte prügi, reaalsusest üsna kaugel). Mis on modelleerimise kvaliteet? Ja see on lihtsalt arv, mis on arvutatud MetaQuotes leiutatud lihtsa valemi järgi:

Simulatsiooni kvaliteet = ((0,25x (StartGen-StartBar) + 0,5x (StartGenM1- StartGen) + 0,9x (HistoryTotal- StartGenM1)) / (HistoryTotal- StartBar)) x100%, kus:

HistoryTotal - riba ribade arv ajaloos;

StartBar - riba riba, millest simulatsioon algas;

StartGen - riba arv, millest alates testimine algas, lähima ajakava ajalooliste andmete põhjal;

StartGenM1 - riba riba, millest minutipõhine modelleerimine algas.

Nagu näete, näitab simulatsiooni kvaliteet meile lihtsalt seda, milliseid ajaraami testis kasutati. Kui nõustaja testimisel M15 perioodil kasutati ainult M1 andmeid, siis on modelleerimise kvaliteet 90%. Kui kasutati ainult perioodi M15 ise, on kvaliteet valemi järgi null või, nagu MT4 kirjutab, n / a. Ja puukidega testimisel mõtlesime lihtsalt kirjutada 99%, nii et oli selge, et kõik töötab hästi ja testimine läks tõesti puukidega. Kas see tähendab, et n / a kvaliteediga testimine annab täiesti ebatäpseid andmeid ja 99% kvaliteediga on see väga täpne? Ei, see tähendab lihtsalt seda, et esimesel juhul kasutati mudelit sulgemishindades ja teisel kasutati puuke. Samal ajal võib esimene test olla palju täpsem kui teine ​​ja seda tuleb mõista: modelleerimise kvaliteet ja hinnapakkumiste kvaliteet on täiesti erinevad asjad.

Veel on oluline mõista, et testi tulemuste kvaliteet sõltub ka kasutatavast strateegiast. Näiteks kui strateegia töötab D1-l sulgemishindadeta peatusteta, võtab kasumit ja traalib ning siseneb ainult turule ilma ootel tellimuste abita, saate „kontrollpunktide” mudeli abil saada väga täpse tagasivaate. Strateegiatestide jaoks, mis kasutavad peatusi ja võtavad, on vaja vähemalt 90% -list kvaliteeti, et saada tulemus, mis on vähemalt veidi lähemal tegelikkusele. Sel juhul, mida madalam on nõustaja tööperiood, seda suurem on mõju leviku tulemustele. Kui hinnavahe fikseeritud väärtus on, on selliste nõustajate testid tegelikkusest äärmiselt kaugel, isegi kui see on kasulik, kui kasumlik ekspertnõustaja liidab testimise ajal deposiidi reaalsele kontole. Nagu näete, sõltub testi tegelik kvaliteet paljudest teguritest, näiteks hinnapakkumiste kvaliteedist, süsteemi enda omadustest, samuti süsteemi võimest MT4-testri piirangutest mööda hiilida või neid tasandada. See asjaolu tõestab veel kord minu ideed, et nõustaja abil kasumlikult kauplemiseks peaksite hästi teadma ja sügavalt mõistma, kuidas see täpselt töötab, mis on selle algoritm, et kõik terminali piirangud nullini viia.

Teine puukide kasutamisega seotud tõsine probleem on maaklerisõltuvus. Katsetulemused, mis kasutavad ühe maakleri linnukese andmeid, erinevad teise maakleri andmete põhjal saadud tulemustest, kuna erinevused isegi erinevate maaklerite sulgemishindade andmete vahel võivad küündida 10-15% -ni küünla suurusest. Pikemas perspektiivis võib selline erinevus põhjustada erinevate maaklerite kontodel töötava sama nõustaja väga erinevaid tasuvuse graafikuid.

Räägime nüüd veel ühest terminali piiramisest, see aeg oli juba otsustatud. Esialgu ei olnud MT4 terminalis testimiseks võimalik vahetada. Selle tulemusel olid testid iga kord erinevad. Pealegi, kui kaupleja sai testi teha nädalapäeval, sai ta oma nõustaja tööga hea tulemuse, kui ta oli nädalavahetusel või öösel testi uuesti teinud, siis võiks hästi avastada, et nõustaja tühjeneb. Selle kohta, kuidas see võis juhtuda, oli palju arusaamatusi - see ju töötas! Ja isegi sellest olukorrast teadmine polnud piisavalt mugav - öise skalpellitesti tegemiseks pidi kaupleja vastavalt aknale kuut valvama. Üldiselt oli ikka lõbus. Õnneks parandati see häbi hiljem, võimaldades kauplejatel määrata ise testimiseks vajalik hinnavahe.

Uus MetaTrader 5 terminal

Niisiis, mql5 keeles on üsna palju funktsioone. See on kahtlemata suur pluss. Negatiivne külg on see, et MT5 terminalis mql4 kirjutatud eksperdid ei tööta. Seetõttu on sunnitud rahaülekandeid tellima kauplejad, kes soovivad uude terminali üle minna, kes programmeerimist ei tunne, kuid kes soovivad kaubelda nõustajate abiga, kes kauplesid terminali eelmises versioonis edukalt. Arvake ära, kus inimesed tõenäolisemalt selliseid programmeerijaid otsivad? Täpselt nii, sellesama MetaQuotes ettevõtte veebisaidi jaotises "Vabakutseline", kes saab komisjonitasu igalt tellimuselt, igalt müüdud nõustajalt ja indikaatorilt ning palju muud selle jaoks. See on äri, mitte midagi isiklikku.

Terminali suur pluss võrreldes eelmise versiooniga on mitme südamiku kasutamine. Seda tehakse testimisagendi halduri abiga. Sel juhul võite kasutada suvalist arvu südamikke. Samuti saate luua terve arvutite võrgu, et kasutada nende koguvõimsust ekspertide testimiseks ja optimeerimiseks "põhimasinas" või isegi kasutada pilvevõrku, milles teised kauplejad pakuvad oma võimsusi mõõduka tasu eest. Põnev idee, tegelikult osutus selle võrgu kasutamisel jõudluse suurenemine umbes kolm korda suuremaks. Samal ajal sõltub kõik Interneti-ühenduse kiirusest ja muudest teguritest. Proovisin ka oma võrku luua, kuid arvutid olid pidevalt lahti ja see oli tüütum kui abistamine.

Ja veel üks tähelepanek MT5 kohta. Testid viiendal platvormil on väga sarnased neljanda testiga, kuid need osutuvad alati korralikumalt paremaks kui MT4. Tõenäoliselt on siin punkt pisut erinevates jutumärkides.

Üldised probleemid

Vana mql4 oli väga lihtne keel, mille meisterdamiseks võisite kulutada nädala. Viimasel aastal lisati mql4-sse palju muudatusi, mis viisid selle viiendale versioonile võimalikult lähedale, eriti objektorienteeritud programmeerimise paljude elementide, näiteks klasside, kapseldumise, pärimise, polümorfismi, ülekoormamise, abstraktsete klasside toe. Sellegipoolest on nii mql4 kui ka mql5 võimetest halvem kui sõltumatul programmeerimiskeelel.

Mis toimub testeris endas testimise ja optimeerimise ajal, mis kogu protsessi nii palju aeglustab? Ma ei tea. Keegi ei tea, välja arvatud programmeerijad, kes terminali kirjutasid, kuna kood on suletud ja pole võimalik vaadata, kuidas seal kõike tegelikult arvutatakse. Samal ajal tean diktofoni testri puhul täpselt, mis juhtub, kust see tuleb ja kuidas seda arvutatakse. Ja mis kõige tähtsam, kui usaldusväärne on mu backtest.

Veel üks eelmisest tulenev puudus on suletud optimeerimise algoritm. Nõustaja parameetrite optimeerimiseks on palju erinevaid viise. Optimeerimiseks on palju erinevaid parameetreid. Saate teha kohandatud parameetri, mis kuvatakse tabelis "optimeerimise tulemused", lisades eksperdile paar koodirida. Kuid selle optimeerimine ei toimi.

MT4 ja MT5 terminali kõige kurvem puudus on see, et te ei saa testida mitut instrumenti, et saada kokkuvõtlikku aruannet nõustajate portfelliga kauplemise kohta. Seetõttu peate kasutama kolmanda osapoole tarkvara, näiteks Report Manager või SQ EA Analyzer. Hoolimata asjaolust, et esimene programm on tasuta, soovitan teise võimaluse osta palju laiemate ja väga vajalike funktsioonide tõttu.

Mõlemad terminalid kasutavad Bidi sõnul ainult ühte pakkumise voogu. Sel juhul arvutatakse Ask-hinnapakkumised antud vahemiku (Bid + Spread) alusel. Ja selgub, et Ask-hindade graafik langeb täielikult kokku Bid-i hinnagraafikuga, mis tegelikkuses pole muidugi kaugeltki selline. Levik on pidevas muutumises ja kui vaadata terminali ristmike graafikut, näete, et graafikud Pakkumine ja Küsi ei näe alati üks-ühele. See on veel üks lihtsustus. Milleni see viib? Noh, näiteks nõustajatele, kes kauplevad perioodil alates H1 ja kõrgem, annab paar punkti aastas tehtud viga 15 punktiga ebatäpsust kogu kogukasumis pluss miinus 3-10% - see on lubatav. Kuid scalperite jaoks võib selline ebatäpsus põhjustada viga kuni 50%. See olukord on ohtlik ka hilinemistega tegelevatele nõustajatele. Fikseeritud hinnavahe põhjustab asjaolu, et selliste nõustajate testitulemused on tegelikkusest väga kaugel, sest näiteks testi korral võib kaotatava kauba vahele jätta ja reaalses elus see ka olemas on, kuna tegelik erinevus oli sel hetkel 3 punkti ja mitte 2 vastavalt testile. Või vastupidi, paljud kasumlikud tehingud testeris ei saanud tegelikkuses aset leida.

Veel üks, mitte liiga tõsine puudus, kuid mõjutab siiski testi täpsust, on ristväärtuste punktiväärtuse arvutamine, mis arvutatakse järgmise valemi abil: Punktihind = positsiooni maht * punkti suurus * praegune baasvaluuta pakkumine USA dollari suhtes / praegune valuutapaari kurss (ristkurss). Baasvaluuta noteeringud ja paaride vahetuskurss võetakse testija poolt täna ja seda kulu kasutatakse kogu testi vältel. Kuid lõppude lõpuks olid 20 või isegi 5 aastat tagasi mõlemad hinnad erinevad ja vastavalt sellele olid ka toote maksumus erinevad. See pole nii kohutav viga - kui robot liitub, liitub see mis tahes punktväärtusega. Sel juhul on ainult see, et lõplikud testi tulemused on ebatäpsed.

Umbes sama juhtub siis, kui teie konto avatakse mitte USA dollarites, vaid näiteks eurodes. Oletame, et katsetate nõustajat usdchf-paari osas ja testija võtab punkti maksumuse arvutamiseks praeguse eurusd- ja eurchf-i määra. Loomulikult on sellisel testil ka viga, kuna ka need tsitaadid muutuvad aja jooksul.

Mainisin EA Analyzerit veidi kõrgemal. See pakub mitmeid erinevaid stressiteste, mis on loodud selleks, et aidata paremini hinnata teie nõustajate päriskontol kasutamise tagajärgi. Näiteks võimaldab Monte Carlo simulatsioon teil teatud tõenäosusega hinnata nõustaja halvimat stsenaariumi ja kui see teile sobib, siis tööle saada. Professionaalsetes terminalides on see stressitesti sisseehitatud, nagu ka paljud teised, näiteks eksperdinõustajate seadete vastupidavuse, maakleri sõltuvuse või hajusõltuvuse testid. Viimases artiklis ütlesin, et robotid ei ennusta tulevikku, saame ainult testide põhjal saada teatud tõenäosuse, et nõustaja toob meile kasumit. Stressitestid on tööks väga olulised tööriistad, sest mida põhjalikumalt robotit testitakse, seda tõenäolisem, et see töötab samamoodi nagu ajalooliste andmete põhjal.

Teine testi täpsust mõjutav tegur on vahetustehingu suurus. MT4 ja MT5 testerites võetakse kogu testi praegune vahetusväärtus, kuigi vahetus ise muutub kahtlemata. Ja peaaegu mitu korda aastas. See on naljakas, kuid erinevate maaklerite jaoks võivad sama instrumendi vahetustehingute väärtused kardinaalselt erineda. Näiteks vahetab maakler RoboForex praegu usdchfi paari lühikeste pükste vastu -2,5 punkti ja ostude korral -1,4 punkti. Samal ajal on Forex4u juures need arvud -5,5 ja +2,4 punkti. Kui katsetate öist scalperit, võib vahetus mängida otsustavat rolli nii backtest'i kasumlikkuses kui ka kauplemises endas. Samal ajal ei saa te tõepoolest hinnata vahetustehingu väärtuse mõju kaubavahetusele - te ei saa seda väärtust testimise ajal seada ega isegi muuta - see võetakse otse maakleri andmetest, kelle konto on praegu terminalis aktiivne.

Nagu näete, jääb tohutu arv väikeseid asju, mis on lahendatud sõna otseses mõttes paarirealise koodiga (noh, isegi kui mitte paar, aga siiski), realiseerimata. Ja kokku võttes muudavad need pisiasjad terminali abil töötamise väga keeruliseks ja MT5 puhul muudavad need võimatuks. Fakt on see, et terminali lõppkasutajad, st teie ja mina, ei ole MetaQuotes'i kliendid. Nende kliendid on peamiselt maaklerid, kes põhimõtteliselt paralleelselt tavakaubitsejate vajadustega.

Ja lõpuks arutame aja kasutamist MT4 platvormis. Mql-keelel on palju funktsioone, mis kasutavad aega konkreetse küünla hinna suhtes, näiteks Open1 või High7. Enamasti kasutame kauplemisalgoritmide kirjutamisel neid andmeid kuidagi. Pealegi pole need andmed seotud maakleri konkreetse ajaga, need on seotud uute puukidega. Oletame, et kasutame perioodi H1. Uue tunni saabumisel ilmub, kui sel hetkel puuduvad puugid, ilmub uus küünal kriipsuna, kuni uued puugid kohale jõuavad. Samal ajal on tund juba muutunud, kuid kuigi uusi puuke pole, saab sama Close1 tegelikult Close2-ks. See tähendab, et tegelikkuses selgub, et kui EA kasutab aega tunni () kujul ja võtab vastu küünlahindu, kasutades Close1, Open1, High1 ja Low1, saab see signaali õigel ajal, kuid OHLC hindu sel ajal ei uuendata, kuna uusi puuke pole veel saabunud, st baari nr 1 hinnad on tegelikult teise lati hinnad. Seetõttu on sel juhul vaja, et algoritm ootaks uue küünla esimeste puukide ilmumist. Pange tähele, et see kehtib ainult nõustajate kohta, kes kasutavad konkreetseid sisenemisaegu ja hinnaarvutusi. Kui sisenemisel ei kasutata küünlaid, siis sellist viga ei ilmne.

Mida siis valida - sõltuv või sõltumatu platvorm?

Neile kauplejatele, kes on huvitatud peanahaga kauplemissüsteemide arendamisest, mis töötaksid perioodidel kuni M5, MetaTrader kindlasti ei sobi. Isegi kui kasutada 99% simulatsiooni kvaliteedist, on tulemused siiski väga erinevad tegelikest (ehkki enam-vähem mõningase sarnasuse võib saavutada). Tegelikult on MT4 terminalis graali valmistamine üsna lihtne, kuid tegelikult see tõenäoliselt ei toimi. Mis tahes testitavas turuolukorras võib testitulemused olla radikaalselt vastupidised.

Ma ei taha öelda, et MT4-s pikas perspektiivis kasumliku scalperi loomine on ebareaalne. Lihtsalt selle tegemine on palju raskem kui, näiteks, kasumlik pikaajaline tegevus. Seetõttu, kui te pole algoritmikaubandusega endiselt väga kursis, soovitan alustada nõustajate loomist töötamiseks perioodidel, mis pole madalamad kui H1, ja alles siis proovida luua kasumlike scalperite portfell.

Oluline on mõista, et sellised kommertsplatvormid nagu MetaTrader, MetaStock, TradeStation, NinjaTrader ja teised pole kaugeltki professionaalsed platvormid. Kõik need platvormid sisaldavad oma piiranguid ja suletud lähtekood tähendab, et kõiki neid piiranguid pole lihtsalt ja üldiselt võimalik tuvastada. Üldiselt on esimene idee, mis kauplejale, kes soovib kauplemiseks kasutada nõustajaid, meelde, kasutada näiteks ühte ülaltoodud kommertsplatvormist. Kõik on selles juba ette nähtud - testimine, optimeerimine ja kauplemine ise. Kõik on mugav ja lihtne, ühes pakis. Kuid selline otsus muudab kaupleja sõltuvaks valitud platvormist ja selle arendajatest, sellest, millist funktsionaalsust autorid soovivad lisada ja mida mitte, samuti vigadest ja ebatäpsustest, mida nad arenduse käigus tegid, millest paljusid pole võimalik teha. Samal ajal annavad kommertsplatvormid kauplejale mõned põhifunktsioonid.Kuid kui soovite tegeleda näiteks kõrgsagedusliku kauplemisega, siis sellised platvormid teile enam ei sobi.

Sõltumatu lahendus on see, mille olete ise välja töötanud. Kogu vajalik funktsionaalsus, testimise täpsus, optimeerimisvõimaluste arv, erinevad stressitestid, täitmise kiirus ja muud hüved sõltuvad teist isiklikult. Võite ise valida, millise API likviidsuse pakkuja valida, sõltumata maaklerist ja tema manipulatsioonidest hinnavooluga. Sellel lahendusel on piiramatud võimalused ja seda piiravad ainult teie kujutlusvõime ja teadmised. See on iseseisev lahendus, mille valivad professionaalsed algoritmikauplejad.

Tõepoolest, kui ühendate otse likviidsuse pakkujaga, vabanete kohe sidumisest aeglase, ebaefektiivse ja ebatäiusliku platvormiga, maakleritega, kes manipuleerivad hindadega ja täidavad teie korraldusi, ning piiravad mitmesuguseid strateegiaid, mida on kommertsterminalide abil lihtsalt võimatu rakendada. See lähenemisviis ei sobi aga kõigile, sest selleks, et hea tööplatvorm kirjutada, peavad sul olema tohutul hulgal teadmisi, tõsine programmeerimiskogemus ja ajaauto. Seda tüüpi platvormide väljatöötamiseks palgatakse reeglina terve meeskond programmeerijaid ja nad viivad oma plaanid ellu üsna lühikese aja jooksul. Kõik see nõuab kas palju aega ja teadmisi või palju raha.

Järeldus

Vahepeal pole teie kontol vähemalt kümneid miljoneid dollareid (alates sellest lävest ei leia te ühtegi kauplejat, kes kasutab kauplemiseks kommertstoodet), pole midagi halba, kui kasutate sellist valmisplatvormi nagu MetaTrader 4. Lihtsalt on oluline alati meeles pidada selle piiranguid, arvestada neid oma töös ning olla testeris saadud tulemuste suhtes ettevaatlik ja kriitiline. Kauplege oma terminali abil ja proovige luua nõustajaid, mis on selle puuduste suhtes immuunsed, kasutage terminali puuduste minimeerimiseks kolmandate osapoolte programme, näiteks TickDataSuite ja SQ EA Analyzer, ning kasutage siis isegi sellist ebatäiuslikku toodet nagu MT4, saate ikkagi oma kasumi turult.

Vaata videot: 3 POWERFUL Doji Candlestick Patterns for Profitable Trading (November 2019).

Jäta Oma Kommentaar