portaldacalheta.pt
  • Põhiline
  • Tulud Ja Kasv
  • Protsess Ja Tööriistad
  • Investorid Ja Rahastamine
  • Puldi Tõus
Tehnoloogia

Forexi algoritmiline kauplemine: praktiline lugu inseneridele



Nagu te võib-olla teate, kasutatakse valuutapaaride vahel kauplemiseks valuutavahetusturgu (Forex või FX). Kuid te ei pruugi teada, et see on maailma kõige likviidsem turg.

selgitage, kuidas disain on sisu jaoks oluline.

Mõni aasta tagasi tegin oma uudishimust ajendatuna oma esimesed sammud Forexi algoritmilise kauplemise maailma, luues demokonto ja mängides (võltsraha abil) simulatsioone. Metakaupleja 4 kauplemisplatvorm.



Forexi kaane illustratsioon



Pärast nädala pikkust kauplemist oleksin oma raha peaaegu kahekordistanud. Omaenda eduka algoritmilise kauplemise ajendil süvenesin sügavamale ja registreerusin lõpuks mitmetele FX-foorumitele. Varsti veetsin tunde algoritmiliste kauplemissüsteemide kohta (reeglistikud, mis määravad, kas peaksite ostma või müüma), kohandatud näitajad , turumeeleolud ja palju muud.



Minu esimene klient

Umbes sel ajal, juhuslikult, kuulsin, et keegi üritas lihtsa kauplemissüsteemi automatiseerimiseks leida tarkvaraarendajat. See oli tagasi minu ülikooliajal, kui ma õppisin samaaegne programmeerimine Java-s (niidid, semaforid ja kõik see rämps). Ma arvasin, et see automatiseeritud süsteem ei saa olla minu omast palju keerulisem arenenud andmeteadus kursusetöö, nii et uurisin töö kohta ja tulin pardale.

Klient soovis ehitada algoritmilist kauplemistarkvara MQL4 , funktsionaalne programmeerimiskeel, mida Meta Trader 4 platvorm kasutab aktsiaga seotud toimingute tegemiseks.



MQL5 on sellest ajast vabastatud. Nagu arvata võib, lahendab see mõningaid MQL4 probleeme ja sisaldab rohkem sisseehitatud funktsioone, mis muudab elu lihtsamaks.

Kauplemisplatvormi (antud juhul Meta Trader 4) roll on luua ühendus Forexi maakleriga. Seejärel pakub maakler platvormi reaalajas turu kohta käiva teabega ja täidab teie ostu / müügi korraldusi. Lugejate jaoks, kes ei ole Forexi kauplemisega kursis, on andmevoo pakutav teave järgmine:

See diagramm näitab Forexi algoritmilise kauplemisega seotud andmeid.



Meta Trader 4 kaudu pääsete juurde kõigile nendele andmetele koos sisemiste funktsioonidega, mis on kättesaadavad erineva aja jooksul: iga minut (M1), iga viie minuti tagant (M5), M15, M30, iga tund (H1), H4, D1, W1, MN .

Jooksva hinna liikumist nimetatakse a linnuke . Teisisõnu, linnuke on valuutapaari pakkumise või pakkumise hinna muutus. Aktiivsete turgude ajal võib sekundis olla palju puuke. Aeglastel turgudel võib linnukesteta olla minuteid. Puuk on valuutaturu roboti südamelöök.



Sellise platvormi kaudu tellimust tehes olete osta või müüma teatud valuuta teatud maht. Samuti määrate stop-loss ja take-profit piirmäärad. The stop-loss piir on maksimaalne summa südamikud (hinna variatsioonid), mille võite endale lubada kaotada enne kauplemisest loobumist. The võta kasumi limiit on pipide kogus, mille kogute enda kasuks enne raha väljamaksmist.

Kui soovite lisateavet kauplemise põhitõdede kohta (nt pangad, tellimuste tüübid, levik, libisemine, turukorraldused ja palju muud), vaadake siin .

Kliendi algoritmilised kauplemisspetsifikatsioonid olid lihtsad: nad soovisid Forexi robotit, mis põhines kahel näitajal. Taustaks on näitajad väga abiks turupositsiooni määratlemisel ja kauplemisotsuste tegemisel, kuna need põhinevad varasematel andmetel (nt viimase hinna kõrgeim väärtus n päeva). Paljud tulevad sisseehitatud Meta Trader 4-sse. Kuid minu kliendi huvitatud näitajad tulid kohandatud kauplemissüsteemist.



Nad tahtsid kaubelda iga kord, kui kaks neist kohandatud näitajatest ristusid ja ainult teatud nurga all.

See kauplemisalgoritmi näide näitab minu kliendi vajadusi.



Käed peal

Käte määrdumisel sain teada, et MQL4 programmidel on järgmine struktuur:

  • [Eeltöötleja direktiivid]
  • [Välised parameetrid]
  • [Globaalsed muutujad]
  • [Algfunktsioon]
  • [Deiniti funktsioon]
  • [Käivita funktsioon]
  • [Kohandatud funktsioonid]

Start-funktsioon on iga MQL4-programmi süda, kuna see käivitatakse iga kord, kui turg liigub (ergo, see funktsioon täidetakse üks kord linnukese kohta). See juhtub olenemata teie kasutatavast ajakavast. Näiteks võite töötada H1 (üks tund) ajakavas, kuid käivitamisfunktsioon täidaks mitu tuhat korda ajakava kohta.

Selle vältimiseks sundisin funktsiooni käivitama üks kord perioodiühikus:

int start() { if(currentTimeStamp == Time[0]) return (0); currentTimeStamp = Time[0]; ...

Näitajate väärtuste saamine:

// Loading the custom indicator extern string indName = 'SonicR Solid Dragon-Trend (White)'; double dragon_min; double dragon_max; double dragon; double trend; int start() { … // Updating the variables that hold indicator values actInfoIndicadores(); …. string actInfoIndicadores() { dragon_max=iCustom(NULL, 0, indName, 0, 1); dragon_min=iCustom(NULL, 0, indName, 1, 1); dragon=iCustom(NULL, 0, indName, 4, 1); trend=iCustom(NULL, 0, indName, 5, 1); }

Otsustusloogika, sealhulgas näitajate ja nende nurkade ristumiskoht:

int start() { … if(ticket==0) { if (dragon_min > trend && (ordAbierta== 'OP_SELL' || primeraOP == true) && anguloCorrecto('BUY') == true && DiffPrecioActual('BUY')== true ) { primeraOP = false; abrirOrden('OP_BUY', false); } if (dragon_max 0) { ticket=0; return(0); } } else Print('OrderSelect failed error code is',GetLastError()); if (ordAbierta == 'OP_BUY' && dragon_min = trend ) cerrarOrden(false); } }

Tellimuste saatmine:

void abrirOrden(string tipoOrden, bool log) { RefreshRates(); double volumen = AccountBalance() * point; double pip = point * pipAPer; double ticket = 0; while( ticket <= 0) { if (tipoOrden == 'OP_BUY') ticket=OrderSend(simbolo, OP_BUY, volumen, Ask, 3, 0/*Bid - (point * 100)*/, Ask + (point * 50), 'Orden Buy' , 16384, 0, Green); if (tipoOrden == 'OP_SELL') ticket=OrderSend(simbolo, OP_SELL, volumen, Bid, 3, 0/*Ask + (point * 100)*/, Bid - (point * 50), 'Orden Sell', 16385, 0, Red); if (ticket<=0) Print('Error abriendo orden de ', tipoOrden , ' : ', ErrorDescription( GetLastError() ) ); } ordAbierta = tipoOrden; if (log==true) mostrarOrden(); }

Kui olete huvitatud, leiate täieliku käivitatava koodi saidilt GitHub .

Taganttestimine

Kui ma oma algoritmilise kauplemissüsteemi ehitasin, tahtsin teada: 1) kas see käitus asjakohaselt ja 2) kas Forexi kasutatav kauplemisstrateegia oli hea.

Taganttestimine (mõnikord kirjutatud 'taganttestimine') on konkreetse (automatiseeritud või mitte) süsteemi testimine minevikusündmuste all. Teisisõnu, testite oma süsteemi, kasutades minevikku praeguse puhverserverina.

MT4-l on Forexi kauplemisstrateegia tagasitestimiseks vastuvõetav tööriist (tänapäeval on professionaalsemaid tööriistu, mis pakuvad suuremat funktsionaalsust). Alustuseks seadistate oma ajaraamid ja käivitate oma programmi simulatsiooni all; tööriist simuleerib igat linnukest, teades, et iga üksuse puhul peaks see avanema kindla hinnaga, sulguma kindla hinnaga ning jõudma kindlaksmääratud kõrgemate ja madalamate tasemeteni.

Pärast programmi toimingute võrdlemist ajalooliste hindadega saate aru, kas see toimib õigesti või mitte.

Tema valitud näitajad koos otsustusloogikaga ei olnud kasumlikud.

Taganttestimisest alates kontrollisin ma FX-roboti tagasipöördumissuhet mõne juhusliku ajaintervalli järel; Ütlematagi selge, et teadsin, et mu klient ei saa sellega rikkaks - tema valitud näitajad koos otsustusloogikaga ei olnud kasumlikud . Näitena on siin programmi M4 akna 164 operatsiooni käivitamise tulemused:

Need on minu väljatöötatud kauplemisalgoritmi tarkvara käivitamise tulemused.

Pange tähele, et meie saldo (sinine joon) lõpeb alguspunktist madalamal.

Üks hoiatus: öelda, et süsteem on kasumlik või kahjumlik, ei ole alati ehe. Sageli on süsteemid (eba) kasumlikud teatud ajaperioodidel, lähtudes turu 'meeleolust', mis võib järgida mitmeid diagrammide mustreid:

Mõned suundumused meie algoritmilise kauplemise näites.

Parameetrite optimeerimine ja selle valed

Kuigi tagasitestimine oli mind selle FX-roboti kasulikkuse suhtes ettevaatlikuks teinud, Mind huvitas, kui hakkasin selle väliste parameetritega ringi mängima ja märkasin suuri erinevusi üldises tagasipöördumissuhtes. See konkreetne teadus on tuntud kui Parameetrite optimeerimine .

Ma tegin mõned ligikaudsed testid, et proovida järeldada tagasipöördumissuhte väliste parameetrite olulisust, ja mõtlesin välja midagi sellist:

Forexi algoritmi üks aspekt on tagastussuhe.

Või koristatud:

Algoritmiline kauplemise tootluse suhe võib puhastamisel selline välja näha.

Võite mõelda (nagu mina tegin), et peaksite kasutama parameetrit A. Kuid otsus pole nii otsene, kui see võib tunduda. Täpsemalt, pange tähele ettearvamatus parameetri A väärtus: väikeste veaväärtuste korral muutub selle tagastamine dramaatiliselt. Teisisõnu, parameeter A prognoosib tulevasi tulemusi väga tõenäoliselt, kuna ebakindlus, igasugune nihe põhjustab halvemaid tulemusi.

Kuid tõepoolest, tulevik on ebakindel! Ja seega pole ka parameetri A tagastamine kindel. Parim valik on tegelikult tugineda ettearvamatusele. Sageli eelistatakse madalama maksimaalse tootlusega, kuid parema prognoositavusega (vähem kõikumisi) parameetrit parema, kuid halva prognoositavusega parameetrile.

Ainus asi, milles võite kindel olla, on see, et te ei tea turu tulevikku ja arvate, et teate, kuidas turg minevikuandmete põhjal toimima hakkab, on viga. Omakorda peate oma Forexi ennustustes seda ettearvamatust tunnistama.

Kui arvate, et teate, kuidas turg minevikuandmete põhjal läheb, on viga.

See ei tähenda tingimata, et peaksime kasutama parameetrit B, sest isegi parameetri A madalamad tagastused toimivad paremini kui parameeter B; see on lihtsalt selleks, et näidata teile, et parameetrite optimeerimine võib põhjustada teste, mis ületavad tõenäolisi tulevasi tulemusi, ja selline mõtlemine pole ilmne.

Forexi algoritmilise kauplemise üldised kaalutlused

Sellest esimesest Forexi algoritmilise kauplemise kogemusest alates olen klientidele loonud mitu automatiseeritud kauplemissüsteemi ja võin teile öelda, et alati on ruumi uurimiseks ja Forexi edasiseks analüüsiks. Näiteks ehitasin hiljuti süsteemi, mis põhines nn suurte kalade liikumiste leidmisel; see tähendab tohutuid variatsioone pisikestes, pisikestes ajaühikutes. See on teema, mis mind köidab.

Oma FX-i simulatsioonisüsteemi loomine on suurepärane võimalus Forexi turul kauplemise kohta lisateabe saamiseks ja võimalused on lõputud. Näiteks võite proovida dešifreerida hinna variatsioonide tõenäosuse jaotuse ühe turu volatiilsuse funktsioonina (näiteks EUR / USD) ja võib-olla teha Monte Carlo simulatsioonimudel, kasutades jaotust volatiilsuse oleku kohta, kasutades ükskõik millist astet soovitud täpsus. Jätan selle õppusele innukas lugeja.

Forexi maailm võib olla kohati valdav, kuid ma loodan, et see üleskirjutus on andnud teile mõned punktid selle kohta, kuidas oma Forexi kauplemisstrateegiaga alustada.

Lisalugemist

Tänapäeval on kauplemissüsteemi automatiseerimise loomiseks, testimiseks ja täiustamiseks palju tööriistu: Bloxiga kauplemine testimiseks, NinjaTrader kauplemiseks, OCaml programmeerimiseks, kui nimetada vaid mõnda.

Olen palju lugenud salapärasest maailmast, mis on valuutaturg. Siin on mõned kirjutised, mida soovitan programmeerijatele ja entusiastlikele lugejatele:

  • BabyPips : See on lähtepunkt, kui te ei tea Forexi kauplemise kohta kükitamist.
  • Kilpkonna tee , autor Curtis Faith: Minu arvates on see üks Forexi piibel . Lugege seda, kui teil on kauplemise kogemus ja mõni Forexi strateegia.
  • Kauplemisprofessionaalse tehniline analüüs - tänapäevaste turbulentsete globaalsete finantsturgude strateegiad ja tehnikad , autor Constance M. Brown
  • Ekspertnõustaja programmeerimine - automatiseeritud kauplemissüsteemide loomine MQL-is Meta Trader 4 jaoks , autor Andrew R. Young
  • Kauplemissüsteemid - uus lähenemisviis süsteemi arendamisele ja portfelli optimeerimisele , autorid Urban Jeckle ja Emilio Tomasini: väga tehniline, keskendunud väga FX-testimisele.
  • Mitme esindaja valuuta kauplemissüsteemi järkjärguline juurutamine , autorid Rui Pedro Barbosa ja Orlando Belo: See on väga professionaalne, kirjeldades, kuidas võiksite luua kauplemissüsteemi ja testimisplatvormi.

Põhitõdesid mõistes

Mis on Forexi kauplemine?

Forex (või FX) kauplemine on ostmine ja müümine valuutapaaride (nt USD vs EUR) kaudu valuutaturul.

Kuidas Forex raha teenib?

Forexi maaklerid teenivad raha vahendustasude kaudu. Forexi kauplejad teenivad (või kaotavad) raha oma aja järgi: kui nad suudavad müüa piisavalt palju kui ostes, võivad nad teenida kasumit.

Mis on kauplemisstrateegia tagasitestimine?

Tagatestimine on konkreetse strateegia või süsteemi testimine, kasutades minevikusündmusi.

asutada erakapitalifond

Mis on algoritmiline kauplemine?

Algoritmiline kauplemine on siis, kui robot / programm kasutab reeglite kogumit, mis ütleb talle, millal osta või müüa.

Arenevad emotikonid: sõnumside uue näo kujundamine

Ui Disain

Arenevad emotikonid: sõnumside uue näo kujundamine
Ülemaailmsete humanitaarmeetmete tuleviku optimeerimine

Ülemaailmsete humanitaarmeetmete tuleviku optimeerimine

Innovatsioon

Lemmik Postitused
GraphQL-serveri loomine Laraveli abil
GraphQL-serveri loomine Laraveli abil
Lõplik juhend WordPressi pistikprogrammi loomiseks
Lõplik juhend WordPressi pistikprogrammi loomiseks
Kujundusprotsess: kas see on objektiivne või subjektiivne?
Kujundusprotsess: kas see on objektiivne või subjektiivne?
ICO-d, eksootika ja platvormid - siseringi vaatenurk riskikapitali tulevikule
ICO-d, eksootika ja platvormid - siseringi vaatenurk riskikapitali tulevikule
SaaS-i hinnamudelid - hinnastrateegia näited ja parimad tavad
SaaS-i hinnamudelid - hinnastrateegia näited ja parimad tavad
 
Näpunäited ja kaalutlused kirjatüübi valimisel (koos infograafikaga)
Näpunäited ja kaalutlused kirjatüübi valimisel (koos infograafikaga)
Võimaluste ring: sisemine pilk sellele, kuidas tipptalente meelitada ja hoida
Võimaluste ring: sisemine pilk sellele, kuidas tipptalente meelitada ja hoida
Täiustage oma UX-i disainiprotsessi - juhend prototüübi kujundamiseks
Täiustage oma UX-i disainiprotsessi - juhend prototüübi kujundamiseks
Projektisõitja: eraldiseisev ReSharper IDE
Projektisõitja: eraldiseisev ReSharper IDE
Sloveenia arendaja Ana Sustic võidab teise ApeeScape'i stipendiumi
Sloveenia arendaja Ana Sustic võidab teise ApeeScape'i stipendiumi
Lemmik Postitused
  • javascripti vigade käsitlemise parimad tavad
  • kuidas kujundada poodide veebisaiti
  • mis on ettevõtte llc
  • millega infoarhitekt tegeleb
  • suhtlemine muutub lihtsamaks, kui suurendate meeskonnaliikmete arvu
  • kohanduvate veebidisaini piltide parimad tavad
Kategooriad
  • Tulud Ja Kasv
  • Protsess Ja Tööriistad
  • Investorid Ja Rahastamine
  • Puldi Tõus
  • © 2022 | Kõik Õigused Kaitstud

    portaldacalheta.pt