Šis turinys rodomas tik prenumeratoriams
Sveiki, mielieji skaitytojai. Kaip žinoma, norint stabiliai uždirbti Forex rinkoje, yra būtina prekybos sistema – su aiškiomis taisyklėmis, filtrais, apribojimais ir pan. Tačiau dažniausiai, gana pelningos strategijos turi viso labo keletą pagrindinių taisyklių, kurias galima suprogramuoti algoritmo pavidalu. Tokios sistemos yra dažnai vadinamos mechaninėmis ir yra labai mėgiamos treiderių, kurie dažnai mėgsta paversti jas į programinį kodą ir jas automatizuoti.
Šiame straipsnyje mes aptarsime pagrindinius žingsnius, kaip iš savo individualios strategijos sukurti robotą.
Kodėl automatizuojamos individualios strategijos?
Pirmoji priežastis – strategijos patikrinimas istorijoje. Čia viskas logiška – turime prekybos sistemą, kuri einamuoju momentu prekiauja pelningai, bet Jūs norėtumėt sužinoti, kaip ji veikė praeityje ir ar veiks ateityje. Net ir tuo atveju, jei Jūs nesiruošiate kurti roboto, kuris prekiaus už Jus, šis žinojimas suteiks Jums daugiau papildomo pasitikėjimo, ypač, ilgalaikio nuosmūkio perioduose.
Antroji priežastis – optimalaus rizikos ir kapitalo valdymo parinkimas ir sistemos efektyvumo įvertinimas. Netgi, jei Jūsų sistema yra šiuo metu pelninga, be testavimo sunku pasakyti, koks rizikos ir kapitalo valdymas būtų labiausiai optimalus. Būtent testavimas istorinėse kotiruotėse mums suteikia šią informaciją: koks maksimalus nuosmūkis gali būti, kokio galima tikėtis minimalaus ir maksimalaus pelno viename ar kitame laikotarpyje. Taip pat testavimas leidžia palyginti keletą prekybos sistemų tarpusavyje.
Trečioji priežastis – objektyvumas. Prekiaujant realiose sąskaitose, treideriai patiria didelius emocinius krūvius ir jiems tenka kovoti su jais. Neretai atsitinka taip, kad turėdamas pelningą strategiją, treideris negali uždirbti pinigų, todėl, kad nesusitvarko su emocijomis. Prekybos automatizacija tokius klausimus išsprendžia gana lengvai.
Ketvirtoji priežastis – nuoseklumas. Prekybos sistemos testavimas suteikia informacijos apie visus niuansus ir faktorius, įtakojančius sistemą, parodo jos stipriąsias ir silpnąsias puses. Kai kiekvienam sandoriui yra nustatyta rizika, yra aiškios įėjimo ir išėjimo taisyklės, prekiauti kur kas paprasčiau. Taip pat treideris geriau žino, kaip veikti vienoje ar kitoje situacijoje, tampa lanksčiau pritaikyti savo prekybos sistemą ir rizikas prie esamos rinkos situacijos. Sistemos automatizacijos pliusas yra tas, kad robotas prekiaus be pertraukų, nuosekliai ir išnaudos kiekvieną progą rinkoje. Tuo tarpu, žmogus – ne mašina ir prekiaujant rankomis sudėtinga tai daryti nuolat, o kai daroma pertrauka, yra rizika, kad bus praleistos geros progos rinkoje.
Penktoji priežastis – laisvė. Dauguma žmonių ateina į Forex būtent dėl to. Jie nori gauti pakankamai pinigų ir nedirbti po aštuonias valandas kasdien, penkias dienas per savaitę. Taip pat ne visi nori sėdėti prie ekranų, stebėdami, kaip juda kaina. Tokią galimybę kaip tik ir suteikia automatizuotos prekybos sistemos. Roboto autorius dirbs ties jo kodu tik vieną kartą, o pelnas nuo to eis ne vienerius metus. Be abejo, roboto kodo sukūrimas užims šiek tiek laiko (savaitę ar mėnesį), taip pat laikas nuo laiko, gali tekti pakoreguoti roboto darbą, nustatant jo parametrus pagal einamąją rinkos situaciją ar įtraukus nežymius niuansus į kodą. Tačiau tai jau toli gražu ne tas darbas, kuris suprantamas įprastine prasme – mes nesame pririšti prie grafikų nei laiko, nei vietos atžvilgiu.
Prekybos sistemos algoritmas
Bet kokio Forex roboto kūrimas prasideda nuo kokios nors idėjos. Tai gali būti paruošta prekybos sistema, surasta kokiame nors portale arba Forex forume, arba tiesiog abstrakti idėja, šovusi Jums į galvą poilsiaujant prie jūros. Nesvarbu, kokiu būdu idėja atėjo, svarbu tai, ką Jūs su ja darysite toliau.
O toliau, sekantys žingsniai būtų maždaug tokie:
1. Kuo tiksliau suformuluokite savo idėją. Kaip jau sakėme, įkvėpimo šaltiniai gali būti įvairūs, tačiau yra du minimalūs reikalavimai, kurie turi būti apsvarstyti Jūsų idėjoje – įėjimo į rinką momentas (taisyklė arba keletas jų) ir išėjimo iš rinkos momentas. Strategija gali būti sudaryta net iš keleto skirtingų įėjimo ar išėjimo variantų. Vienintelė taisyklė – turi būti numatyti ir įėjimai, ir išėjimai. Taip pat strategijoje turi būti numatytas rizikos ir kapitalo valdymas – tiek pelno, tiek nuostolio.
2. Pagalvokite ir parinkite strategijai geriausius realizacijos instrumentus. Nuspręskite, kokie instrumentai turėtų būti panaudojami – indikatoriai, skriptai, valiutų poros, kainos modeliai, ar kiti kažkokie duomenys. Taisyklės turi būti aiškios ir nedviprasmiškos.
Tikslios taisyklės pavyzdys – “išstatyti Sell Stop orderį ant naujai atsidariusios žvakės, žemiau +5 punktais apatinio jos šešėlio, jeigu prieš tai buvusi žvakė pramušė slankųjį vidurkį EMA55, bet užsidarė žemiau jo, be to, kaina neužsidarė aukščiau EMA55 per paskutines 10 žvakių, ir kaina neužsidarė žemiau EMA55 per paskutines 20 žvakių”.
Netikslios taisyklės pavyzdys – “įeiname į pardavimus, jeigu Stochastikas yra perpirkime, o EMA55 krenta”.
3. Turėdami idėją ir bendras formalizuotas strategijos taisykles, galime bandyti rašyti roboto kodą. Jeigu mokate programavimo kalbą MQL – sveikinu, toliau galite ir neskaityti 🙂 Jeigu ne, mums padės puikus servisas mql5.com/en/job, kur daugybė talentingų programuotojų laukia užsakymų.
Vidutinės užsakymų kainos, priklausomai nuo sudėtingumo ir darbo apimties, varijuoja nuo 10 iki 50 USD. Iš patirties galiu pasakyti, kad nebrangiai ir kokybiškai programuoja ukrainiečiai, rusai. Visi puikiai bendrauja anglų kalba.
Pačio skelbimo įdėjimas nemokamas ir nesudėtingas. Tereikia apsispręsti kokį biudžetą skirsite tam reikalui ir užpildyti formą. Detalesnę procedūrą rasite puslapyje.
Galima pačiam išsirinkti norimą programuotoją (jų nemažai), paskaičius atsiliepimus, reitingus ir pasiūlyti jam suprogramuoti robotą, arba įdėti bendrą skelbimą visiems – tokiu atveju, pretendentų atlikti Jūsų darbą gali būti ir 10.
Aš rekomenduoju rinktis programuotoją pagal gerus įvertinimo reitingus, bet nebūtina rinktis “pačio pačio geriausio”, nes tokie specialistai dažnai būna per daug apkrauti darbu ir gali plačiau neįsiginti į Jūsų užsakymą.
Kai atsiranda programuotojas ir apsiima atlikti Jūsų užsakymą, prasideda vykdymo procesas – bendraujate raštu, servise esančių pranešimų pagalba, o darbo seka yra tokia:
Kas gerai, kad apmokėjimas yra įvykdomas per servisą, t.y. tada, kai gaunamas galutinis produktas. Pradedant užsakymą, iš užsakovo servisas rezervuoja apmokėjimo sumą, o vykdytojas pinigus gauna tik atlikęs darbą. Tai yra, apgauti nieks nieko negali.
4. Kai gauname pirmąją savo sukurto roboto versiją, pats laikas jį testuoti ir optimizuoti. Pirmiausia, žiūrime į terminalo žurnalą – ten neturi būti jokių klaidų. Jei yra kažkokios klaidos, programuotojas turi jas ištaisyti nemokamai. Parinkite optimalų laiko intervalą roboto darbui ir optimizuokite jį su maksimaliu valiutų porų kiekiu.
5. Statome robotą ant demo sąskaitos. Kasdien stebime terminalo žurnalą dėl galimų klaidų. Kai kurios jų gali nesimatyti testavimo metu ir atsirasti vėliau. Taip pat pamatysite realų roboto darbą ir galėsite preliminariai įvertinti jo efektyvumą be pinigų praradimo.
6. Jei viskas gerai, statome robotą ant nedidelės realios sąskaitos. Palyginkite, ar gauti rezultatai yra maždaug tokie patys, kaip ir demo sąskaitoje. Atkreiptinas dėmesys į tokius dalykus, kaip sandorių dažnumas, bendras sandorių kiekis, maksimalus nuosmūkis vienam sandoriui, nuostolingų sandorių santykis su pelningais ir pan.
7. Periodiškai stebėkite ir koordinuokite roboto darbą, užsirašykite, Jūsų pastebėtus roboto trūkumus ar patobulinimus, kuriuos programuotojas vėliau galės patobulinti.
Atidžiai ir kantriai stebėkite, roboto darbą. Jeigu, tarkime, testuojant realiu laiku gavote seriją nuostolių, nereikia skubėti laidoti roboto. Šiuo atveju, gali būti keletas priežasčių: strategija silpna ir idėja klaidinga; strategija gera, bet blogai atlikta optimizacija; atsirado nepalankios sąlygos rinkoje, kurių nebuvo istorijoje.
Kaip matome, dvi priežastys iš trijų rodo, kad robotą trinti per anksti. Jeigu optimizacija atlikta netinkamai, tiesiog bandykite optimizuoti dar kartą. Jeigu dėl nuostolių kalta rinka, tą nesunku patikrinti – tiesiog reikia pralaukti nepalankų periodą ir tęsti testus vėliau.
Periodo ir testavimo lango pasirinkimas
Istorinių duomenų laiko atkarpa, kurioje testuojamas robotas, vadinama “testavimo langu”. Nustatant šio lango dydį, būtina pasiekti statistinio testo rezultato reprezentatyvumo, t.y. apimti periodus, tinkančius testuojamai prekybos strategijai ir netinkančius. Mums reikalingi objektyvūs statistiniai rezultatai, tai yra, sandorių kiekis turi būti pakankamai didelis.
Nepriklausomai, kokia yra strategija, bendras statistinis reikšmingumas yra mažiausiai šimtas sandorių. Jei norite labiau mokslinio metodo – štai Jums paprasta formulė, standartinės klaidos nustatymui: 1/sqrt(N+1), kur N – sandorių kiekis. Sprendžiant iš formulės, kuo didesnis sandorių kiekis, tuo mažesnė standartinė klaida. Ši klaida parodo gautų rezultatų po testo tikslumą. Šiuo atveju, jei sandorių yra ne mažiau 100, standartinė klaida sudarys maždaug 10%.
Kam reikalingi šie skaičiai? Labai paprastai – įsivaizduokime, kad po testavimo, vidutinis laimėjimas sudaro 1000 USD. Reiškia, kad realioje prekyboje, po 100 sandorių, verta tikėtis pelno +- 10% ribose, t.y. nuo 900 iki 1100 USD. O tuo atveju, jeigu mes testuotume ne 100, o tik 10 sandorių, tai realioje prekyboje galėtume tikėtis vidutinio pelno +- 30% ribose, tai yra nuo 700 iki 1300 USD. Kaip matote, priimtinesnis tikslumas pasiekiamas kaip tik po 100 sandorių.
Sistemos stabilumas
Sistemos stabilumas – ne kas kita, kaip patikimumas prekiaujant su ja. Kuo sistema labiau patvaresnė, tuo labiau ja galima pasitikėti. Testuojant automatizuotą strategiją, reikia stebėti santykį tarp pelningų ir nuostolingų sandorių, ir svarbiausia – nuokrypį nuo standartinių reikšmių. Kuo mažesnis nuokrypis yra nuo standartinių nustatymų reikšmių, tuo sistema laikoma patvaresnė, tuo tolygesnis pelningumo grafikas testuojant. O kuo nuokrypis didesnis, tuo labiau grafikas yra nestabilus ir “šokinėjantis”.
Patvari sistema turi demonstruoti pelną plačiame savo nustatymų (kintamųjų) diapazone, nes pati rinka yra plataus diapazono ir rinkos sąlygos keičiasi dažnai. Kitais žodžiais kalbant, jeigu sistema veikia tik su viena valiutų pora, tokia sistema nėra labai patvari, vadinasi, ir patikima.
Sistemos galiojimas
Ne paslaptis, kad komerciniai skalpingo tipo robotai, po kurio laiko nustoja pelningai prekiauti ir autoriai pradeda publikuoti naujus preset-failus su nustatymais. Čia aš kalbu apie atsakingus pardavėjus, ne šarlatanus, pardavinėjančius įvairų šlamštą. Tai vyksta todėl, kad rinkos su laiku keičiasi ir senieji robotų nustatymai praranda savo efektyvumą.
Be to, kuo trumpesnis roboto testavimo langas, tuo trumpesnis ir jo “galiojimo periodas”. Geriausia yra stengtis kurti robotus maksimaliai atsparius rinkoms ir su neribotu galiojimo laikotarpiu, tačiau tokių sistemų, kurio gali dirbti be optimizavimo, yra labai mažai.
Iš čia, dar vienas kriterijus – galiojimo terminas. Sistema, reikalaujanti optimizacijos kas kiekvienus tris mėnesius, be abejo, ne pati patogiausia naudoti, tačiau yra prekiaujančių su tokiomis. Empirinė taisyklė tokia – sistema turi būti stabili laikotarpiu nuo 1/8 iki 1/4 lyginant su testavimo laikotarpiu – tai minimumas. Tai yra, jeigu Jūs optimizacijai paėmėt 24 mėnesius, tai sistema turi būti efektyvi mažiausiai sekančius 3-6 mėnesius.
Sistemos galiojimo terminą būtina prisiminti ir atlikti optimizaciją jai baigiantis (dar geriau, šiek tiek anksčiau). Kuo ilgesnė testavimo atkarpa, tuo ilgesnis sistemos galiojimo terminas, atitinkamai, tuo rečiau reikės atlikti optimizaciją jai baigiantis. Iš kitos pusės, kuo optimizavimo atkarpa trumpesnė, tuo galima pasiekti didesnio efektyvumo, ir atitinkamai, pelno, tačiau sistema bus jautresnė rinkos pokyčiams. Kalbant paprasčiau, sistema, pavyzdžiui, atneš gero pelno, kol tęsis globalus trendas, bet kai jis baigsis, sistema praras pelningumą (jeigu laiku nesuspėsite jos optimizuoti).
Išvados
Perskaitę šį straipsnį, tikiuosi, geriau suprasite, kodėl dauguma treiderių bando automatizuoti savo prekybos strategijas. Taip pat sužinojote, kokius žingsnius reikia atlikti, kad sukurti ir paleisti robotą, prekiaujantį pagal Jūsų strategiją, ir supratote, su kokiomis rizikomis galite susidurti prekybos procese.
Algotreidingas – iš tikrųjų labai įdomus procesas, ir kuo daugiau išmanysite šį reikalą, tuo ateityje jis bus tik sėkmingesnis, vadinasi, bus daugiau motyvacijos kurti naujas sistemas, testuoti jas ir paleisti ant realių sąskaitų. Apskritai, aš į kiekvieną naują robotą žiūriu kaip į dar vieną, atskirą treiderį, prekiaujantį man. Linkiu ir Jums turėti dešimtis ir šimtus tokių treiderių, kurie palaipsniui didins Jūsų kapitalą.
Pagarbiai, Mykolas Kuzminskis