Kaip optimizuoti Forex robotą istorijoje? Išsami instrukcija naujokui

kaip optimizuoti forex robota (2)

Sveiki, mielieji  Forex treideriai ir treiderės! Mūsų portalo puslapiuose mes ne kartą aptarinėjome Forex robotų testavimą, o dabar atėjo metas pakalbėti apie robotų optimizaciją istorijoje.

Treiderių nuomonės šiuo klausimu išsiskiria – vieni mano, kad optimizacija yra bereikalingas dalykas, nes robotas dirbtinai pritaikomas prekiauti pelningai pagal praėjusią istoriją, kiti gi tvirtina, kad optimizacija yra būtina esamoms rinkos sąlygoms. Labai į šias diskusijas nesigilinsime, šiame straipsnyje ir video pamokoje aš tiesiog papasakosiu, kaip optimizuoti robotus terminale Metatrader 4 ir tikiuosi, kad kažkam sutaupysiu laiko, o gal net ir depozitų.

Kas yra optimizacija?

kas yra optimizacija

Ne paslaptis, kad rankinės prekybos sistemos su laiku pasensta ir pradeda nebeduoti tokio pelno, kurį davė anksčiau. Paradoksalu, bet tuo pačiu senos nuostolingos sistemos staiga pradeda išsiskirti kaip pelningai veikiančios strategijos. Čia šuo pakastas tame, kad rinka veikia ciklais, kai su metais iš esmės pasikeičia rinkos sąlygos. Lygiai tas pats ir su Forex robotais. Rinkos sąlygos pradeda nebeatitikti tos strategijos, kuri yra įprogramuota į robotą kaip algoritmas ir robotas pradeda prekiauti į nuostolį.

Ką gi tokiu atveju daryti? Tiesiog ištrinti robotą ir jį pamiršti? Ne. Štai čia ir ateina į pagalbą robotų optimizacija. Kas tai yra? Paprastai kalbant – tai yra robote esančių parametrų pritaikymas pagal esamas rinkos sąlygas arba kitaip tariant, strategijos pritaikymas, jos adaptacija pasikeitus rinkai. Lygiai taip pat, kai treideriai koreguoja savo rankines prekybos sistemas prie esamos rinkos situacijos, taip pat ir robotų megėjai optimizuoja savo robotus. Koregavimas, adaptacija – tai yra neišvengiamas prekybos procesas ir tie, kas nepadaro reikiamų pakeitimų laiku, tiesiog lieka už borto, toks yra treiderio gyvenimas.

Nuo ko apskritai pradėti?

Taigi, mes pasiaiškinome, kad optimizacija vis tik dalykas svarbus ir net būtinas prekiaujant Forex robotais. Dabar atėjo laikas atsidaryti terminalą ir pabandyti atlikti optimizaciją. Įsijungiame Metatrader 4 terminalą ir spaudžiame „Strategy Tester“ (mygtukas viršuje, įrankių juostoje).

optimizacijos pradzia metatrader4

Terminalo apačioje atsiras langas, pavadinimu „Tester„, čia pasirenkame robotą, kurį norėsime optimizuoti. Aš pasirinkau optimizuoti robotą „Voras„. Pasirenkame valiutų porą, laiko intervalą, reikalingą optimizuojamam robotui.

optimizavimo langelis

Toliau matome langelį „Model„(modelis) – čia mums reikia nuspręsti, kokį modeliavimo tipą mes pasirinksime. Apie tai keletas žodžių žemiau.

 

Modelio pasirinkimas

kaip optimizuoti forex robotus modelio pasirinkimas

Kas jau yra testavęs kokį nors robotą, žino, kad egzistuoja trys testavimo modeliai, t.y. „pagal kainos atsidarymą (open price only)“, „pagal kontrolinius taškus (control points)“ ir „visi tikai (every ticks)“. Aš rekomenduoju robotus optimizuoti pagal modelį „visi tikai“. Tai labiausiai tikslus modelis ir tikimybė, kad Jūs padarysite kažką ne taip taps mažesnė. Žemiau, kaip pavyzdys, yra visų modelių testų grafikai, kad susidarytumėt nuomonę patys:

Modelis „pagal kainos atsidarymą“

modelis pagal kainos atsidaryma

Modelis „pagal kontrolinius taškus“modelis pagal kontrolinius taskus

Modelis „Visi tikai“

modelis visi tikai

Taigi, kaip matome, rezultatai skiriasi, ypač atkreipkite dėmesį, kaip skiriasi pirmasis modelis nuo antrojo ir trečiojo. Testavimas su modeliu pagal „kontrolinius taškus“ kardinaliai nesiskiria nuo modelio „visi tikai“, todėl optimizacija su šiuo modeliu gali būti naudojama taupant laiką. Iš esmės, geriausia yra patestuoti robotą su visais modeliais ir palyginus rezultatus, priimti sprendimą.

Modeliavimo tipas pasirinktas ir toliau spaudžiame mygtuką, pavadinimu „Expert properties“ (roboto nustatymai), čia atsidarys langas su trimis polangiais: Testing (testavimas), Inputs (įvestys) ir Optimization (optimizacija) – apie kiekvieną jų kalbėsime atskirai.

optimizacija expert properties

1.Testavimo parametrai

Taigi, pirmas langas – Testing ir čia mus domina raudonai apibrėžti nustatymai.

roboto optimizacija langelis testavimas

Pozicija „Optimized parameter“ (optimizuojamas parametras) leidžia mums pasirinkti pagrindinį išeities parametrą, pagal kurį bus vertinamas kiekvienas testas, o būtent:

  • «Balance»— atranka daroma pagal galutinį depozito balanso dydį;
  • «Profit Factor»— atranka daroma pagal galutinį santykį tarp bendro pelno ir bendro nuostolio. Profit Factor apskaičiuojamas taip: tarkime, bendras pelnas 6000$, o bendras nuostolis 3000$. 6000/3000 = 2.0 (t.y. minimalus pelningumas turi būti didesnis nei 1);
  • «Expected Payoff»— atranka daroma pagal galutinę matematinę tikimybę, t.y. vidutinis pelno rodiklis viename sandoryje. (minimali matematinė tikimybė neturi būti lygi arba mažesnė už spredo dydį);
  • «Maximal Drawdown»— atranka vykdoma pagal minimaliausiai pasiektą maksimalų nuosmūkį. Kitaip tariant,  Maximal Drawdown — tai didžiausia suma, kurios dydžiu buvo sumažėjęs depozitas, kai rinka robotui buvo labiausiai nepalanki. Iš esmės, šis parametras sako, kokia yra reali rizika. Pavyzdžiui, jeigu maksimalus nuosmūkis viršija 70-80 %, verta peržiūrėti depozito dydį.
  • «Drawdown Percent»— atranka vykdoma pagal santykinį nuosmūkį, t.y. maksimalaus nuosmūkio procentinė išraiška, sutinkamai su depozito dydžiu. Optimizacija pagal šį rodiklį naudinga tuomet, kai robotas prekiauja nefiksuoto loto dydžiais arba įjungta progresinio loto funkcija.

Taip pat matome, kad pirmajame lange uždėta varnelė ant „genetinio algoritmo“ (Genetic algoritm). Įdomu tai, kad jei varnelę nuimsime, tai testeris ištestuos absoliučiai visas robotų nustatymų variantų kombinacijas. Tačiau tam prireiktų maždaug 100500 metų. Laimei, terminale yra optimalių parametrų paieškos galimybė būtent su genetinio algoritmo pagalba, kuris leidžia atlikti optimizaciją viso labo per keletą valandų ar dienų.

2. Optimizacijos parametrai

optimizacijos parametru langelis

Šis langelis yra skirtas optimizacijos laiko taupymui. Čia galime išstatyti savo taisykles, kaip turėtų būti ribojami rezultatai. Pavyzdžiui, apriboti maksimalią nuostolingų sandorių seriją iki 4, o maksimalų nuosmūkį 10-čia procentų. Tada optimizacijos rezultatuose atsispindės tik tie rezultatai, kurie atitiks užduotus parametrus. Čia nieko nekeičiame.

3. Įvesties parametrai

Optimizuoti robotus, kaip ir testuoti juos, yra įprasta su išjungtu MM (rizikos ir kapitalo valdymu), dažniausiai su 0,01 lotu. Tam tikslui, roboto nustatymuose reikia surasti atitinkamą bloką ir išstatyti fiksuotą 0,01 dydžio lotą.

Toliau matome, kad įvesties parametrų lentelė yra sudaryta iš penkių stulpelių – pačio parametro pavadinimas (Variable), jo einamoji reikšmė (Value), pradinė reikšmė optimizacijai (Start), žingsnis (Step) ir galutinė reikšmė optimizacijai (Stop). Ką visa tai reiškia ir kaip teisingai nustatyti?

roboto optimizuojami nustatymai tp ir sl

Pavyzdžiui, mes norime tam tikroje laiko atkarpoje (nuo 2015-06-01 iki 2015-10-01)  parinkti robotui Voras optimalų Stop-Loss ir Take-Profit. Mes matome, kad pagal nutylėjimą roboto Voras SL yra 40 punktų, o TP – 60 punktų, tačiau šiandienės rinkos sąlygoms mes abejojame, ar tai geriausi parametrai, todėl kompiuteris parinks optimalesnius variantus.

Tam tikslui, mes užduodame pirminę stopo reikšmę (Start stulpelyje) , tarkime, 20 punktų (mažiau rašyti nelogiška, nes SL bus per mažas). Taip pat užduodame ir galutinę reikšmę, tarkime 200 punktų (jei nusprendėm, kad didesnis nei 200 punktų stopas jau yra nelogiškas). Žinoma, galima užduoti ir 1000 punktų, bet optimizuoti reikia protingai, nes tai labai padidina optimizavimo laiką. Ir paskutinis įvesties parametras – žingsnis. Jeigu mes nurodysime žingsnį, pavyzdžiui, 10, tai gausime tokius optimizavimo žingsnius: 10, 20, 30, 40, 50, 60. Čia irgi reikia mąstyti racionaliai – kokį žingsnį geriausiai išstatyti? 1, 10 ar 5? Gal visai pakaktų žingsnis 2, kas būtų gan tikslu ir sutaupytų optimizacijos resursų.

Taip pat, nepamištame uždėti varnelių ant MaxTP ir MaxSL, kad optimizacija vyktų pagal šiuos parametrus.

Viską nustatę, spaudžiame Start.

Optimizacijos metu mes nieko ypatingo nematysime, išskyrus žalią liniją apačioje bei keletą skaičių – t.y. kiek kombinacijų yra numatyta ir kiek jų jau yra atlikta. Dešinėje yra rodomas labai preliminarus laikas.

optimizavimo procesas

Kaip žiūrėti optimizacijos rezultatus?

Taigi, jei viską atlikome teisingai, gauname optimizacijos rezultatus – jie optimizuojant palaipsniui randasi langelyje Optimization Results.

optimizacijos rezultatai

Langelio viršuje, rezultatus galime išsirūšiuoti pagal: gautą pelną, sandorius, pelningumo faktorių (profit factor), matematinę tikimybę, ir nuosmūkius (pinigais ir procentais). Dešinėje matome, su kokiais parametrais yra optimizuotas variantas.

Kaip rinktis rezultatus, koks yra geriausias? Tai priklauso tik nuo pačio treiderio, t.y. būtent, kas jam yra svarbu, nes vieniems svarbu pelnas, kitiems, kad būtų mažesnis nuosmūkis, tretiems – pelningumo faktorius ir pan.

Išsirinkau geriausią variantą. Ką su juo daryti?

Jį reikia išsaugoti, kaip nustatymų failą. Su pele užeiname ant pasirinkto varianto, spaudžiame dešinį pelės mygtuką ir pasirenkame Set Input Parameters.

optimizacija varianto pasirinkimas

Po to, automatiškai roboto nustatymuose pasikeis optimizuoti parametrai. Dabar juos reikia išsaugoti. Vėl spaudžiame Expert Properties.

optimizuotu parametru issaugojimas

Matome, kad vietoj standartinių parametrų, stulpelyje Value atsirado nauji, kurios parinko optimizacija. Spaudžiame Save, kad juos išsaugoti.

set failo issaugojimas po optimizacijos

Čia failą galime pavadinti taip, kaip norime, kad žinotume, kad tai yra būtent to ar kito roboto optimizuotų nustatymų failas. Pats failas yra .set tipo, jis ir saugos optimizuotus nustatymus ir bus panaudojamas visada, kai norėsite paleisti robotą prekiauti – visada galėsite greitai įkelti naujus, optimizuotus nustatymus.

O ką daryti, jei robotas turi labai daug nustatymų?

roboto optimizacija daug nustatymu

Kuo daugiau parametrų Jūs testuojate iškart, tuo optimizacijos procesas bus ilgesnis. Bet būna situacijų (robotų), kur parametrų būna tiek daug, kad terminalas tiesiog atsisako atlikti optimizaciją ir praneša apie tai į MT4 žurnalą. Tokiu atveju būtina visus parametrus išskirti į 4 grupes: parametrus, stipriai įtakojančius rezultatą, vidutinius, silpnai įtakojančius, ir neįtakojančius visai. Įtakos stiprumą galima nustatyti pabandant optimizuoti atskirai paimtą parametrą. Be abejo, pirmiausiai reikia optimizuoti tuos parametrus, kurie itin įtakoja rezultatus, vėliau pereinant prie mažiau svarbių. M

Daugiausia rekomenduojama užsakyti 4-5 parametrus vienu metu (kitaip optimizacija gali užtrukti labai ilgai).

Optimizacijos laikotarpio pasirinkimas

robotu optimizacija laikotarpio pasirinkimas

Čia yra daug nuomonių ir būdų. Aš manau, mažiausias laikotarpis turi būti bent keli metai laiko. Nėra tikslo optimizuoti trumpiau, nes kuo mažesnis laikotarpis, tuo labiau dirbtinai nustatymai yra pritaikomi prie esamų rinkos sąlygų ir tokie nustatymai vėl greitai pasensta. Svarbiausias dalykas, kai optimizacija yra baigta – pratestuoti robotą su naujais nustatytais parametrais tuo laikotarpiu, kurio optimizacija dar „nematė“ (pridedant 20-30 % daugiau istorijos). Tarkime, jei mes optimizavome laikotarpį nuo 2015-06-01 iki 2015-10-01), tai būtina pratestuoti nuo 2015-01-01 iki šių dienų.

Internete yra nemažai būdų, kaip strategiškai atlikti optimizaciją. Pavyzdžiui, yra rekomenduotina optimizuoti ne mažiau kaip paskutinius 6 metus, o testuoti pridedant dar 2 iš anksčiau.

Yra ir dar profesionalesnis optimizavimas. Profesionalai (arba robotų autoriai), pavyzdžiui, optimizuoja tokiu būdu: imama istorija, tarkime 15 metų (ne mažiau 10 m.), nuo 2000 iki 2015. Šis laikotarpis suskaldomas į tokius periodus: 2000-2003 m. – šiame periode padaromas paprastas roboto testavimas, tada 2003 iki 2012 metų vykdoma optimizacija, o nuo 2012 iki 2015 metų vėl roboto testavimas. Po optimizacijos yra atrenkama 10-20 labiausiai sėkmingų variantų. Po to, su visais pasirinktais optimizuotais nustatymais robotas yra testuojamas per 2000-2003 m. ir 2012-2015 m. atkarpas ir lyginama su testais pagal nutylėjimą. Na, ir tie nustatymai, kurie atlaikė testavimą, paliekami kaip kandidatai tolimesniam palyginimui. Toliau yra testuojami likę variantai ir pabaigoje išrenkama vienintelė geriausia kombinacija.

Toks būdas jau yra labai išsamus ir profesionalus, be abejo, tai užims laiko, bet, kaip sakoma, greitai niekas nesidaro.

 

O jeigu reali prekyba skiriasi nuo testerio?

robotu optimizacija skirtumas tarp realios prekybos ir testeryje

Taigi, mes gavome optimizacijos rezultatus, kuriuos išsaugojome .set faile. Tačiau įkėlinėti failą ant realios sąskaitos dar anksti. Iš pradžių reikia patikrinti robotą su naujais setais demo sąskaitoje. Iš esmės, 20-30 sandorių su viena valiutų pora pilnai užteks, kad suprasti, ar optimizacija pavyko. Be to, yra racionalu patikrinti, ar sutampa sandoriai demo sąskaitoje su sandoriais, kurie gauti testuojant tą patį laiko periodą testeryje. Tam tikslui yra daromas testas ir lyginama. Nebūtina, kad kiekvienas sandoris būtų punktas į punktą, jei sandoriai maždaug sutampa, tai yra normalu. Taip pat nebaisu, jei nėra vieno kito sandorio. Čia svarbu yra bendras vaizdas, bendras sutapimas.

Realioje prekyboje robotas visada šiek tiek skirsis nuo testerio – tai gali būti dėl praslydimų (reqoute), dėl paaukštinto spredo, ar dar ko nors. Be abejo, rezultatai negali skirtis kardinaliai. Jeigu testeryje Jūs matote visai kitą vaizdą nei realioje sąskaitoje, tai tokį robotą optimizuoti yra beprasmiška – kaip gerai bebūtų parinktas setas, robotas vistiek prekiaus kitaip.

Pabaigai

robotu optimizacija pabaigai

Šiandien sužinojome, kas yra forex robotų optimizacija ir kaip ją atlikti. Nežiūrint to, dar yra daugybė įvairių niuansų, apie kuriuos čia nėra galimybės pakalbėti viename straipsnyje. Tačiau pradžioje šios informacijos pilnai pakaks tam, kad optimizuoti Forex robotą, kad jis ilgalaikėje perspektyvoje neštų pelną. Optimizuokite robotus teisingai, ir tada, tikėtina, kad algoritminė prekyba taps daug patrauklesnis užsiėmimas.

Pagarbiai, Mykolas

ForexPrekiautojoPortalas.lt

Print Friendly, PDF & Email