Populære Innlegg

Redaksjonens - 2020

Hva er galt med strategitestereren i MT4 og MT5

Hei, kolleger forex handelsmenn!

I dag vil vi fortsette å diskutere et så bredt tema som algoritmisk handel og snakke om et så nødvendig verktøy som en tester av handelsroboter. Til dels har mange av problemstillingene som tas opp i denne artikkelen også blitt adressert på bloggsidene, men etter min mening er de fremdeles ikke dekket tilstrekkelig detaljert. Så i dag vil vi finne ut hva backtesting er, og hvilke vanskeligheter og fallgruver som oppstår når du tester ekspertrådgivere, samt bestemmer begrensningene for MetaTrader-terminalen når du tester og optimaliserer ekspertrådgivere og finner måter å utjevne disse begrensningene mest mulig.

Hva er en backtest

En artikkel på bloggen vår er allerede skrevet om hvordan du tester rådgiveren i MT4-terminalen, så vel som i MT5-terminalen. Derfor vil jeg ganske enkelt gi en definisjon av backtesting. Backtest er anvendelsen av regler for handelssystemet på et sett av historiske markedsdata, det er alt. Det vil si at vi bestemte et sett med regler for å komme inn i markedet, for exit, for å spore en posisjon og beregne volumet, og deretter anvendte disse reglene på historiske data, som om vi handlet i henhold til disse reglene i det øyeblikket. Dermed kan vi evaluere effektiviteten til dette systemet, som kan oppnås i fortiden.

Kanskje den viktigste funksjonen til testeren er simulering. Forfatteren av algoritmen gjør backtests, på bakgrunn av hvilken han kan bedømme om det er verdt å forbedre Forex-rådgiveren eller om handelssystemet han tok for forskning ikke er verdt tiden.

Baktesten hjelper oss også med å evaluere om det er verdt å bruke denne strategien for virkelig handel basert på dens effektivitet i det siste. Faktisk hjelper en backtest oss med å luke ut dårlige rådgivere før vi risikerer ekte penger.

I tillegg til det første valget av strategier for videre arbeid med dem og filtrering av upassende strategier, hjelper testeren også til å sjekke ytelsen til de opprettede systemene, identifisere feil og forbedre driften av algoritmen.

De viktigste feilene når du tester ekspertrådgivere

Det er veldig enkelt å teste en rådgiver, men testresultatene er dessverre ikke i det hele tatt resultatene av virkelig handel. Vi får simuleringsresultatene. Uansett hvor sammensatt modellen, vil den fortsatt inneholde visse antagelser og forenklinger, som selvfølgelig fører til unøyaktige resultater. Det er derfor det er mange fallgruver forbundet med testing. Nedenfor vil jeg gi hovedfeilene når du bruker testing.

Testing bare i prøve.

Dette er den vanligste feilen hos nybegynnere og den verste. I hovedsak passer dette systemet til en kurve som oppstår når du bruker de samme dataene for å optimalisere og teste en strategi. Slik testing overvurderer alltid resultatene av systemet, som vil sees i ekte handel. Dette er fordi systemet ikke ble testet på andre data, som tydeligvis vil være annerledes enn de som ble brukt i testen.

Endring av markedssyklus

Markedene er ustabile og endrer seg hele tiden. Derfor er det ikke så lett å velge passende parametere for at systemet skal fungere over lengre tid. Dessuten, jo lenger denne perioden, jo mer universelle systemparametere. Imidlertid eksisterer dessverre ikke de ideelle parametrene til rådgiveren, som bruker roboten perfekt i ethvert marked. Dette er en av grunnene til at rådgivere i det virkelige markedet jobber dårligere enn i tester.

Transaksjonskostnader

Mange valutahandlere, spesielt nybegynnere, tar ikke hensyn til kostnadene forbundet med åpnings- og lukkestillinger. Ofte ser jeg tester gjort med en urealistisk lav spredning, for eksempel, i stedet for å bruke en spredning på 2-3 poeng på EURUSD for testen, tar folk en spredning på 0,5-1 poeng. Resultatet er et kornete bilde som absolutt ikke har noe med virkeligheten å gjøre, fordi det faktum at megleren din indikerte en spredning på 0,5 poeng for dette paret et sted, betyr ikke at det er det. I tillegg glemmer mange mennesker noe som transaksjonsgebyr. Det er ikke på alle typer kontoer og ikke på alle meglere, men som regel hvor det er lav spredning, er det og ganske stort. Ikke glem alt som bytter - de forvrenger også testresultatene og påvirker det endelige resultatet. Vel, og, selvfølgelig, glidning - svøpe av alle piper. Hvis du legger alle disse faktorene sammen, viser det seg at handel er en ganske kostbar oppgave, og i det virkelige markedet vil du betale 0,5 poeng spredning + 0,7 poeng provisjon + 0,3 poeng for å åpne en transaksjon, vil transaksjonen gli ved åpning og lukking og som et resultat vil reelle transaksjonskostnader utgjøre 1,8 poeng.

Kikker fremtiden

Fremtidige data kan brukes i testing, oftest på grunn av feil i å skrive algoritmen, men noen ganger av ondskap. I fjor var det veldig fasjonabelt å selge rådgivere som ser fremover på mql5.com nettstedet i markedsdelen. Det er mye mer praktisk å handle og vise fenomenale handelsresultater hvis du vet fremtiden. Men slike resultater har dessverre ingenting med virkelig handel å gjøre.

Instrumentets likviditet

Når du tester på historie, kan du enkelt ta hodebunnen med tusen partier og ha gode resultater. Imidlertid vil i virkelig handel slike volumer uunngåelig påvirke markedet, selv en posisjon på 100 lodd om kvelden eller om natten kan flytte prisen på til og med populære handelspar, har det blitt bekreftet. I testeren er det ikke tatt hensyn til denne effekten på noen måte.

Historiske data

Mange meglere tilbyr å bruke sin database med historiske data. Som regel er sitater der ikke av beste kvalitet. Du kan finne store manglende historiske data, spesielt på lavere tidsrammer. Du kan også finne mange kilder til gratis tilbud på internett, vanligvis av ikke mindre tvilsom kvalitet. Kvaliteten på sitater påvirker resultatene av backtest i stor grad, så du bør ta dette problemet så alvorlig som mulig.

Lav robusthet

Noen handelsmenn, spesielt nybegynnere, tillater systemer med lav robusthet å handle med ekte penger. Robusthet er systemets motstand mot endringer i inputdata. Hvis du for eksempel tester systemet ditt fra den 3. i denne måneden til i dag, vil du gi et godt resultat, men hvis du kjører testen fra fjerde i måneden, vil systemet gå i nedtrekk. Dette betyr at systemet har lav robusthet. Et annet eksempel, da du endret perioden på indikatoren som påvirker inngangen til markedet, fra 9 til 10 og systemet begynte å slå seg sammen. En stor feil ville være å la slike systemer virkelig handel.

psykologi

Som jeg sa i en tidligere artikkel, spiller psykologi en mye mindre rolle i algoritmisk handel enn i håndthandel. Ulike selgere av handelssystemer promoterer ideen om at når du handler en robot, kan du glemme psykologien helt. Imidlertid er fullstendig ignorering av psykologi nok en feil av nybegynnere. Likevel er det en rekke handelssystemer som kan virke ganske bra under testing og rett og slett uutholdelige i ekte handel. I tillegg, som mange manuelle nybegynnere som forhandler, endrer reglene for deres handel mens du er på farten, trekker ofte mindre erfarne algoritmiske handelsmenn pennene sine til eksisterende systemer, og prøver å vri dem på farten. Alt dette fører selvfølgelig til økonomiske tap.

Typer testere etter prinsippet om arbeid

For øyeblikket er det mange forskjellige terminaler på markedet for handel i finansmarkeder. Mange terminaler gir muligheten til å skrive eksperter for automatisert handel, og de fleste av disse terminalene har som regel innebygde testere og optimalisatorer. Alle av dem varierer veldig i funksjonalitet og evner, men i henhold til driftsprinsippet kan testere deles inn i to typer: "syklisk" og "hendelsesorientert." Hver av disse typene har sine fordeler og ulemper.

Loop Backtest

Denne typen testere er den enkleste å implementere og gjennomsiktig i drift. En slik tester går ganske enkelt gjennom hver stolpe en etter en. Når en ny pris ankommer, utfører de noen beregninger på priser, beregner indikatorer og lar deg legge inn og endre ordrer. Deretter finner den neste iterasjonen til testen er stoppet. Samtidig lagrer testeren noen statistiske data om rådgiverens arbeid - fortjeneste, antall transaksjoner, nedtrekning og så videre, og når den er ferdig utgir den en rapport om testing av rådgiveren. Som du vet, er en slik design veldig enkel - du trenger bare å laste ned historiske data og sortere prisene linje for linje, og gjøre beregninger hver gang. Sikkert du vil finne dette konseptet kjent. Det er riktig, MetaTrader fungerer i henhold til denne ordningen. Vel, det vil si at dette ikke er helt sant, siden det fremdeles er noen forhåndsdefinerte hendelser på Mql-språket. Så denne plattformen, som mange andre, er en representant for en ganske blandet type.

Som du sikkert allerede har gjettet, er slike backtests veldig enkle å implementere på nesten ethvert programmeringsspråk. Samtidig fungerer de veldig raskt - du kan raskt teste og optimalisere mange kombinasjoner av ekspertrådgiverparametere.

Dessverre er den største ulempen med en slik tester uvirkeligheten av de mottatte motprøvene. Ofte tar slike backtests ikke engang hensyn til spredning, provisjon og ordrer blir alltid utført til markedspriser uten glid og øyeblikkelig. Derfor bruker fagpersoner slike testere bare for en innledende vurdering av effektiviteten til algoritmen for å bestemme om de skal jobbe videre med rådgiveren.

Begivenhetsorienterte testere

For å tydelig forstå prinsippet om drift av en slik tester, foreslår jeg at du introduserer et dataspill. Spilleren samhandler hele tiden i spillrommet, dette rommet er ikke statisk - noe skjer konstant, onde skapninger angriper spilleren, og vennlige karakterer smuldrer hverandres hodeskaller med økser på grunn av en hjemlig krangel. For å hindre datamaskinen din i å slippe unna overflod av det som skjer, har smarte mennesker kommet med alle beregningene av hva som skjer for å legge i en viss uendelig mens loop, kalt en hendelse eller spillsløyfe, der en kø av hendelser er bygget. Disse hendelsene blir kontinuerlig behandlet inne i løkken, med en hastighet som tilsvarer datamaskinens strøm. Når det gjelder testeren, kan slike hendelser omfatte utseendet til nye handelssignaler, viljen til å sende en melding til megleren, ankomsten av en ny hake og mottak av informasjon fra megleren. Når en spesifikk hendelse vises, behandles den av den tilhørende testermodulen og muligens genereres nye hendelser, som igjen faller inn i hendelseskøen.

Av de positive aspektene ved denne typen testere kan vi merke oss testmodellen som er nærmest virkeligheten, og som et resultat svært nøyaktige tester som tar hensyn til mange faktorer som oppstår i reell handel. Denne arkitekturen til testeren har potensial til å bruke porteføljer av systemer og verktøy, og slike testere inneholder som regel muligheten til å teste og optimalisere et stort antall systemer på forskjellige verktøy.

Blant manglene ved denne designen kan man skille ut kompleksiteten i koden og følgelig et stort felt for feil. Skrivesystemer vil kreve kunnskap om objektorientert programmering og god erfaring med systemdesign. En annen betydelig ulempe forbundet med samspillet mellom forskjellige testmoduler er den langsomme hastigheten. Testing, og spesielt optimalisering, kan ta ganske lang tid.

MetaTrader-terminaler

På bloggsidene kan du finne en oversikt over MetaTrader4-terminalen og til og med MetaTrader5. Men dessverre er ikke det viktigste skrevet i disse artiklene: er det mulig å bruke disse terminalene til å teste og optimalisere rådgiverne dine og hvor mye du kan stole på resultatene. La oss prøve å finne ut av dette.

Som jeg allerede sa, bruker profesjonelle algoritmiske handelsmenn ikke MetaTrader-terminalen hovedsakelig av tre grunner: utilstrekkelig fleksibilitet i språket for å skrive rådgivere, lav testnøyaktighet og utilfredsstillende testhastighet. MetaQuotes har laget en utmerket terminal - enkel, praktisk. Dette er en flott lanseringsplate for å utforske verdenen med algoritmisk handel. Nylig har mange riktige ideer blitt lagt til plattformen, spesielt i den femte versjonen av terminalen, men dessverre har implementeringen dem sviktet oss. Hvordan kan for eksempel folk sette pris på en forbedret tester hvis det ikke er mulig å importere sitatene sine? Eller hvorfor skulle folk uavhengig omskrive koden til deres rådgivere og indikatorer når det var mulig å skrive et enkelt program som ville gjøre alt dette automatisk? Men først ting først.

Så jeg kom opp med et enkelt handelssystem, hvis algoritme ble skrevet i form av en mql4 ekspertrådgiver, mql5 ekspertrådgiver og som tester med en optimizer med samme R-strategi innebygd. Jeg gjorde dette for å kjøre tester og optimalisering og sammenligne hastigheten.

I løpet av de siste femten årene tok det 20 minutter å teste rådgiveren på en tidsramme i den fjerde versjonen av terminalen, i løpet av det femte - omtrent 5 minutter, i testeren på R-språket - 13 sekunder. Optimalisering av femti tusen kombinasjoner av parametere for den samme rådgiveren under de samme forholdene i den fjerde versjonen tok 10 dager, i den femte - bare tre dager, på R - 16 minutter. Jeg kunne ikke gjøre den samme testen på 15 par samtidig i MT4 - den er ganske enkelt ikke gitt. Den femte versjonen klarte på 2 timer 27 minutter, R på 6 minutter. R-språket er langt fra det raskeste hvis jeg for eksempel skrev en tester i C #, jeg er sikker på at resultatene ville bli bedre hver 10. gang.

La oss analysere MetaTrader 4

Hva er årsaken til testerens treghet? En ting er sikkert - terminalen bruker bare en prosessorkjerne for drift. Det vil si at selv om det er fire eller flere i bilen din, vil dette faktum ikke hjelpe. Du kan løse problemet delvis ved å starte en annen terminal og teste eller optimalisere Expert Advisor parallelt på et annet instrument. Dette vil fremskynde prosessen litt, men vil ikke løse problemet helt - en enkelt test vil bestå det samme smertelig lenge.

Et annet alvorlig problem med den fjerde terminalen er manglende evne til å bruke flåttdata. Når vi handler i sanntid, kommer prisene til terminalen på forskjellige tidspunkter når de endrer seg. Prisankomsten er ikke bundet til en bestemt periode, for eksempel en gang per minutt eller time. Historiske data blir lagret i terminalnoteringsbasen i form av OHLC-priser i forskjellige tidsrammer, for eksempel H1, D1, M15. Under testing modelleres ankomsten av nye flått basert på M1-tidsrammen. Vi vet alle at volumene som overføres av megleren faktisk ikke er de samme reelle volumene. Dette er bare antall virkelige flått som skjedde over en viss periode. Det vil si at testeren kjenner åpnings- og lukkeprisene for lysestake M1, maksimums- og minsteprisene for perioden på 1 minutt og antall flått som ble overført i løpet av dette minuttet. Hva prisene var for disse flåttene, når nøyaktig kom prisen som tilsvarer flåtten - alt dette er ukjent. Basert på noen algoritmer, oppfinner testeren seg selv hvordan prisen gikk inne i stearinlyset. Det vil si, her er det, den veldig forenklede modellen som vi snakket om ovenfor. Likevel omkom handelsmenn dette problemet. Det er flere spesielle programmer som lar deg bruke ekte kryssdata for testing og optimalisering. Dette er et gratis TickstoryLite-program eller et betalt Tick Data Suite-program. Du kan lese om funksjonene til hvert av disse programmene i artiklene over, men jeg vil anbefale å ikke være grådig og kjøpe et nytt.Tick ​​Data Suite lar deg ikke bare teste rådgivere for kryssdata, dette programmet legger til et par fantastiske funksjoner til terminalen som ganske enkelt er nødvendige: en flytende spredning (det vil si to flåttstrømmer, som i virkeligheten - separate Ask and Bid) og utmerket, stresstest uunnværlig for skalpingsrådgivere er emulering av glidning.

Nå må jeg si noen få ord om kvaliteten på modellering, som i standardterminalen ikke stiger over 90%, og med programmene ovenfor blir den 99%. Mange av dere kommer stadig over nettverket med uttalelsen om at 90% av testene er fullstendig søppel, og at bare 99% av testene trenger å gjøres - disse er veldig nøyaktige. Vel, selvfølgelig, dette er ikke helt sant (generelt, ærlig talt, enhver test utført på MT4- eller MT5-plattformen, men ikke søppel, er ganske langt fra virkeligheten). Så hva er modelleringskvalitet? Og dette er bare et tall, beregnet etter en enkel formel oppfunnet av MetaQuotes:

Simuleringskvalitet = ((0,25x (StartGen-StartBar) + 0,5x (StartGenM1- StartGen) + 0,9x (HistoryTotal- StartGenM1)) / (HistoryTotal- StartBar)) x100%, hvor:

HistoryTotal - antall barer i historien;

StartBar - nummeret på linjen som simuleringen begynte fra;

StartGen - nummeret på linjen som testing startet fra basert på historiske data fra nærmeste tidsramme;

StartGenM1 - nummeret på linjen som den minuttbaserte modelleringen begynte fra.

Som du kan se, viser kvaliteten på simuleringen oss bare hvilke tidsrammer som ble brukt i testen. Hvis det bare ble testet M1-data ved testing av rådgiveren for M15-perioden, vil modelleringskvaliteten være 90%. Hvis bare selve M15-perioden ble brukt, vil kvaliteten, med utgangspunkt i formelen, være null, eller, som MT4 skriver, n / a. Og når vi testet på flått, tenkte vi ganske enkelt å skrive 99%, slik at det var tydelig at alt fungerte bra og testingen virkelig gikk på flått. Betyr dette at testing med n / a kvalitet gir helt unøyaktige data, og med 99% kvalitet er det veldig nøyaktig? Nei, det betyr bare at i det første tilfellet ble modellen brukt til sluttpris, og i det andre ble flått brukt. Samtidig kan den første testen være mye mer nøyaktig enn den andre, og dette må forstås: kvaliteten på simuleringen og kvaliteten på sitatene i seg selv er helt andre ting.

Det som fremdeles er viktig å forstå er at kvaliteten på testresultatene også vil avhenge av strategien som brukes. For eksempel, hvis strategien fungerer på D1 til sluttkurs uten stopp, tar overskudd og trål og bare kommer inn i markedet uten hjelp av ventende ordrer, kan du få en veldig nøyaktig tilbakestilling ved å bruke "sjekkpunkter" -modellen. For tester av strategier som bruker stopper og tar, trengs minst 90% kvalitet for å få et resultat som i det minste er litt nærmere virkeligheten. I dette tilfellet, jo lavere periode rådgiveren jobber for, desto større blir virkningen på resultatene av spredningen. Med en fast verdi på spredningen, vil testene til slike rådgivere være ekstremt langt fra virkeligheten, selv i den grad en lønnsom ekspertrådgiver vil slå sammen innskuddet til en reell konto under testing. Som du kan se, avhenger den faktiske kvaliteten på testen av mange faktorer, for eksempel kvaliteten på sitater, egenskapene til selve systemet, samt evnen til systemet til å omgå eller utjevne begrensningene til MT4-testeren. Dette faktum beviser nok en gang min ide om at for å lønnsom handle med hjelp av en rådgiver, bør du vite godt og inngående forstå hvordan den fungerer nøyaktig, hva er algoritmen for å redusere alle terminalrestriksjoner til null.

En annen alvorlig sak angående bruk av kryssdata er megleravhengighet. Testresultater ved bruk av kryssdata fra en megler vil avvike fra resultatene ved bruk av data fra en annen megler, siden forskjellene mellom dataene til og med for sluttkursene til forskjellige meglere kan nå 10-15% av størrelsen på stearinlyset. På lang sikt kan en slik forskjell føre til at det er veldig forskjellige lønnsomhetsdiagrammer for den samme rådgiveren som jobber med regnskapet til forskjellige meglere.

La oss snakke om en annen begrensning av terminalen, denne gangen allerede bestemt. Opprinnelig var det ikke mulig å endre spredningen for testing i MT4-terminalen. Som et resultat var testene forskjellige hver gang. Hvis den næringsdrivende etter å ha gjort testen på en ukedag, fikk et godt resultat på arbeidet med sin rådgiver, og etter å ha gjort testen igjen i helgen eller om natten, kan det godt oppdages at rådgiveren tapper. Det var mange misforståelser av hvordan dette kunne ha skjedd - det fungerte tross alt! Og selv om vi visste om denne tilstanden, var det ikke praktisk nok - for å gjøre en natt scalper-test, måtte handelsmannen følgelig se på månen ved vinduet. Generelt var det fremdeles moro. Heldigvis ble denne skammen deretter korrigert, slik at handelsmenn kunne angi spredningen som er nødvendig for å teste seg selv.

Ny MetaTrader 5-terminal

Så, mql5-språket har ganske mange funksjoner. Dette er utvilsomt et stort pluss. Ulempen er at eksperter skrevet i mql4 i MT5-terminalen ikke vil fungere. Følgelig blir handelsmenn som ønsker å overføre til en ny terminal, som ikke er kjent med programmering, men som er ivrige etter å handle med hjelp av rådgivere som lyktes med å handle på den forrige versjonen av terminalen, tvunget til å bestille pengeoverføringer. Gjett hvor det er større sannsynlighet for at folk ser etter slike programmerere? Det er riktig, i "Freelance" -delen på nettstedet til det samme MetaQuotes-selskapet, som mottar en provisjon fra hver ordre, hver rådgiver og indikator som selges, og mange flere for det. Dette er en virksomhet, ikke noe personlig.

Et stort pluss av terminalen sammenlignet med forrige versjon er bruken av flere kjerner. Dette gjøres ved hjelp av testagentlederen. I dette tilfellet kan du bruke et hvilket som helst antall kjerner. Du kan også opprette et helt nettverk av datamaskiner for å bruke den totale kapasiteten til å teste og optimalisere eksperter på den "viktigste" maskinen eller til og med bruke et skylettverk der andre handelsmenn tilbyr kapasitetene sine mot en moderat avgift. En spennende idé, faktisk, ytelsesgevinsten når du bruker dette nettverket viste seg å være omtrent tre ganger. Samtidig avhenger det av hastigheten på internettforbindelsen og andre faktorer. Jeg prøvde også å lage mitt eget nettverk, men datamaskiner koblet konstant ut og det var mer irriterende enn å hjelpe.

Og en observasjon til om MT5. Testene på den femte plattformen ligner veldig på tester på den fjerde, men de viser seg alltid anstendig bedre enn på MT4. Mest sannsynlig er poenget her i litt forskjellige sitater.

Vanlige problemer

Old mql4 var et veldig enkelt språk som du kunne bruke en uke på å mestre. Det siste året ble mange endringer lagt til mql4 som brakte den så nær den femte versjonen som mulig, spesielt støtte for mange elementer av objektorientert programmering, for eksempel klasser, innkapsling, arv, polymorfisme, overbelastning, abstrakte klasser. Likevel er både mql4 og mql5 dårligere i forhold til et uavhengig programmeringsspråk.

Hva skjer i selve testeren under testing og optimalisering, som bremser hele prosessen så mye? Jeg vet ikke. Ingen vet, bortsett fra programmererne som skrev terminalen, fordi koden er lukket og det ikke er mulig å se på hvordan alt faktisk beregnes der. Samtidig, når det gjelder opptaker-testeren, vet jeg nøyaktig hva som skjer, hvor det kommer fra og hvordan det beregnes. Og viktigst av alt, hvor pålitelig min backtest er.

En annen ulempe som oppstår fra den forrige er den lukkede optimaliseringsalgoritmen. Det er mange forskjellige måter å optimalisere parameterne til en rådgiver. Det er mange forskjellige parametere som du vil optimalisere. Du kan lage en tilpasset parameter som vises i tabellen "optimaliseringsresultater" ved å legge til noen få kodelinjer til eksperten selv. Men å gjennomføre optimalisering på det vil ikke fungere.

Den tristeste ulempen med MT4- og MT5-terminalene er at du ikke kan kjøre tester på flere instrumenter for å få en sammendragsrapport om handel med en portefølje av rådgivere. Derfor må du bruke tredjepartsprogramvare, for eksempel Report Manager eller SQ EA Analyzer. Til tross for at det første programmet er gratis, anbefaler jeg å kjøpe det andre alternativet på grunn av de mye bredere og sårt tiltrengte funksjonene.

Begge terminaler bruker bare en tilbudsstrøm - ifølge Bid. I dette tilfellet blir Ask-sitater beregnet basert på en gitt spredning (Bud + Spredning). Og det viser seg at Ask-prisoversikten helt sammenfaller med Bud-prisoversikten, som i realiteten selvfølgelig er langt fra tilfelle. Spredningen endrer seg kontinuerlig, og hvis du ser på flåttkortet i terminalen, vil du se at Bud- og Spør-sjøkartene ikke alltid ser en til en. Dette er en annen forenkling. Hva fører det til? Vel, for eksempel for rådgivere som handler på en periode fra H1 og over, vil et par poeng av feilen fra år på den måten i 15 gi en unøyaktighet i det totale overskuddet i regionen pluss minus 3-10% - det er tålelig. Men for scalpers kan en slik unøyaktighet resultere i en feil på opptil 50%. Denne situasjonen er også farlig for rådgivere som arbeider med forsinkelser. En fast spredning fører til at testresultatene til slike rådgivere er veldig langt fra virkeligheten, fordi på testen, for eksempel, kan en tapende handel hoppes over, og i det virkelige liv vil den være til stede, siden spredningen i det øyeblikket i virkeligheten var 3 poeng, og ikke 2 som satt for testen. Eller omvendt, mange lønnsomme transaksjoner i testeren kunne ikke skje i virkeligheten.

En annen, ikke for alvorlig ulempe, men som fremdeles påvirker testens nøyaktighet, er beregningen av poengverdien for kryss, som beregnes ved å bruke følgende formel: Punktpris = posisjonsvolum * poengstørrelse * gjeldende basisvalutakurs i forhold til USD / gjeldende valutaparpari (kryssfrekvens). Basisvalutakurser og parets valutakurs blir tatt av testeren i dag, og denne kostnaden blir brukt gjennom hele testen. Men tross alt for 20 eller til og med 5 år siden var begge prisene forskjellige, og følgelig var kostnadene for varen også forskjellige. Dette er ikke en så forferdelig feil - hvis boten slås sammen, vil den fusjonere med noen poengverdi. I dette tilfellet er det bare at de endelige testresultatene er unøyaktige.

Omtrent det samme skjer hvis kontoen din ikke åpnes i USD, men for eksempel i EUR. Anta at du tester en rådgiver på et par usdchf, og testeren vil ta gjeldende hastighet på eurusd og eurchf for å beregne kostnadene for poenget. En slik test vil naturlig nok også ha en feil, siden disse sitatene også endres over tid.

Jeg nevnte EA Analyzer litt høyere. Den gir en rekke forskjellige stresstester designet for å bedre vurdere konsekvensene av å bruke rådgiverne dine på en ekte konto. For eksempel vil en Monte Carlo-simulering tillate deg med en viss grad av sannsynlighet å evaluere det verste fallet til en rådgiver og, hvis det passer deg, å komme på jobb. I profesjonelle terminaler er denne stresstesten innebygd, så vel som mange andre, for eksempel tester for robustheten til ekspertrådgiverinnstillinger, megleravhengighet eller spredt avhengighet. I den siste artikkelen sa jeg at roboter ikke spår fremtiden, vi kan bare på grunnlag av tester få en viss sannsynlighet for at rådgiveren vil gi oss overskudd. Stresstester er veldig viktige verktøy for å jobbe, fordi jo grundigere roboten testes, jo mer sannsynlig vil den fungere på samme måte som den arbeidet med historiske data.

En annen faktor som påvirker testens nøyaktighet er størrelsen på byttet. I MT4- og MT5-testeren tas den nåværende vekslingsverdien for hele testen, selv om selve byttet i realiteten utvilsomt endres. Og nesten flere ganger i året. Det er morsomt, men for forskjellige meglere kan bytteverdiene for samme instrument radikalt avvike. For eksempel bytter megler RoboForex for tiden usdchf-paret for shorts er -2,5 poeng, og for kjøp -1,4 poeng. På Forex4u er disse tallene -5,5 og +2,4 poeng. I tilfelle du tester en nattscalper, kan en bytte spille en avgjørende rolle både i lønnsomheten til backtest og i selve handelen. På samme tid kan du ikke virkelig vurdere effekten av bytteverdien på handelen - du kan ikke angi eller til og med endre denne verdien under testing - den er hentet direkte fra meglerdataene, hvis konto for øyeblikket er aktiv i terminalen.

Som du kan se, forblir et stort antall små ting løst bokstavelig talt med et par kodelinjer (vel, selv om ikke av et par, men likevel), ikke realisert. Og alt sammen gjør disse små tingene det veldig vanskelig å jobbe med terminalen, og når det gjelder MT5, gjør de det umulig. Fakta er at sluttbrukerne av terminalen, det vil si deg og jeg, ikke er MetaQuotes-kunder. Deres kunder er først og fremst meglere, som i prinsippet paralleller behovene til vanlige handelsmenn.

Og til slutt, la oss diskutere bruken av tid i MT4-plattformen. Mql-språket har mange funksjoner som bruker tid i forhold til prisen for et bestemt stearinlys, for eksempel Open1 eller High7. I de fleste tilfeller bruker vi disse dataene når vi skriver handelsalgoritmer. Dessuten er ikke disse dataene bundet til et bestemt tidspunkt for megleren, de er knyttet til nye flått. Anta at vi bruker perioden H1. Når det kommer en ny time, i tilfelle det ikke er flått i dette øyeblikket, vises et nytt stearinlys som en strek inntil nye flått begynner å komme. Samtidig har timen allerede endret seg, men mens det ikke er noen nye flått, blir den samme Close1 faktisk Close2. Det vil si, i realiteten viser det seg at hvis EA bruker tiden i form av Hour () og mottar lyspriser ved bruk av Close1, Open1, High1 og Low1, vil den motta et signal til rett tid, men OHLC-priser på dette tidspunktet vil ikke bli oppdatert, siden nye flått har ennå ikke kommet, det vil si at prisene på stolpe nr. 1 faktisk vil være prisene på den andre linjen. Derfor er det i dette tilfellet nødvendig at algoritmen venter på at de første flåttene til det nye lyset skal vises. Merk at dette bare gjelder rådgivere som bruker spesifikke oppføringstider og prisberegninger. Hvis lys ikke brukes til oppføring, vil en slik feil ikke oppstå.

Så hva skal jeg velge - en avhengig eller uavhengig plattform?

For de handelsmenn som er interessert i å utvikle skalpende handelssystemer som fungerer i perioder opp til M5, er MetaTrader definitivt ikke egnet. Selv når du bruker 99% av kvaliteten på simuleringen, vil resultatene fortsatt være veldig forskjellige fra de virkelige (selv om mer eller mindre en viss likhet kan oppnås). Faktisk er det i MT4-terminalen ganske enkelt å lage en gral, men i virkeligheten vil den mest sannsynlig ikke fungere. Ethvert markedsaspekt som ignoreres i testen kan føre til radikalt motsatte testresultater.

Jeg vil ikke si at det er urealistisk å skape en lønnsom scalper på lang sikt i MT4. Bare det er mye vanskeligere enn for eksempel en lønnsom langsiktig. Derfor, hvis du fremdeles ikke er veldig kjent med algoritmisk handel, anbefaler jeg å begynne å lage rådgivere for arbeid i perioder som ikke er lavere enn H1, og bare deretter prøve å lage en portefølje av lønnsomme scalpers.

Det er viktig å forstå at kommersielle plattformer som MetaTrader, MetaStock, TradeStation, NinjaTrader og andre på ingen måte er profesjonelle plattformer. Hver av disse plattformene inneholder sine egne begrensninger, og lukket kildekode betyr at ikke alle disse begrensningene er lett og generelt mulig å oppdage. Generelt sett er den første ideen som kommer til tankene til en næringsdrivende som ønsker å bruke rådgivere for handel, å bruke en kommersiell plattform, for eksempel en av de ovennevnte. Alt er allerede gitt for det - testing, optimalisering og handel selv. Alt er praktisk og enkelt, i en pakke. Men en slik avgjørelse gjør den næringsdrivende avhengig av den valgte plattformen og dens utviklere, av hvilken funksjonalitet forfatterne ønsker å legge til og hvilken ikke, samt av feil og unøyaktigheter de gjorde under utviklingen, hvorav mange ikke kan gjøres. Samtidig gir kommersielle plattformer den næringsdrivende en viss grunnleggende funksjonalitet.Men hvis du for eksempel vil delta i høyfrekvent handel, vil slike plattformer ikke lenger passe for deg.

En uavhengig løsning er en som du personlig har utviklet. All funksjonaliteten du trenger, nøyaktigheten av testing, antall optimaliseringsalternativer, forskjellige stresstester, utføringshastighet og andre godsaker er avhengig av deg personlig. Du kan selv velge hvilken API-likviditetsleverandør du skal velge, samtidig som du er uavhengig av megleren og dens manipulasjoner med prisstrømmen. Denne løsningen har ubegrensede muligheter og er bare begrenset av fantasi og kunnskap. Det er en uavhengig løsning som profesjonelle algoritmiske handelsmenn velger.

Når du kobler direkte til en likviditetsleverandør, blir du øyeblikkelig kvitt deg med å være bundet til en treg, ineffektiv og ufullkommen plattform, meglere som manipulerer priser og utfører ordrene dine, og begrenser forskjellige typer strategier som ganske enkelt er umulige å implementere ved bruk av kommersielle terminaler. Imidlertid er denne tilnærmingen ikke egnet for alle, for for å skrive en god plattform for arbeid, må du ha en enorm mengde kunnskap, seriøs programmeringserfaring og en tidsbil. Som regel ansettes et helt team av programmerere for å utvikle plattformer av denne typen, og de gjennomfører planene sine på ganske kort tid. Alt dette krever enten en stor mengde tid og kunnskap, eller en stor mengde penger.

Konklusjon

I mellomtiden har du ikke minst en titalls millioner dollar på kontoen din (fra denne terskelen vil du ikke finne en eneste handelsmann som bruker et kommersielt produkt for handel), det er ikke noe galt i å bruke en ferdig plattform som MetaTrader 4. Bare er det viktig å alltid huske begrensningene, ta dem med i arbeidet og være forsiktig og kritisk til resultatene du får i testeren. Handel som din terminal lar deg og prøv å lage rådgivere som er "immun" mot manglene, bruk tredjepartsprogrammer for å minimere manglene ved terminalen, for eksempel TickDataSuite og SQ EA Analyzer, og deretter til og med bruke et ufullstendig produkt som MT4, du vil fortsatt motta fortjenesten din fra markedet.

Legg Igjen Din Kommentar