Neural Networks Forecasting Profits. Neural nettverk er state-of-the-art, trenbare algoritmer som etterligner visse store aspekter i den menneskelige hjernefunksjonen. Dette gir dem en unik, selvopplæringsevne, evnen til å formalisere uklassifisert informasjon, og de fleste viktigere, evnen til å lage prognoser basert på den historiske informasjonen de har til disposisjon. Neurale nettverk har blitt brukt i økende grad i en rekke virksomhetsapplikasjoner, blant annet prognoser og markedsføringsforskningsløsninger. På enkelte områder, som svindeloppdagelse eller risikovurdering, er de De ubestridelige ledere Hovedområdene der nevrale nettverk har funnet søknad er finansiell virksomhet, bedriftsplanlegging, handel, forretningsanalyse og produktvedlikehold. Neurale nettverk kan søkes lønnsomt av alle slags handelsfolk, så hvis du er en handelsmann og du har ennå ikke blitt introdusert til nevrale nettverk, tar vi deg gjennom denne metoden for teknisk analyse og viser deg hvordan du skal pply det til din trading stylemon Delusions De fleste har aldri hørt om nevrale nettverk, og hvis de ikke er handelsmenn, trenger de sannsynligvis ikke å vite hva de er. Hva er egentlig overraskende, er det faktum at et stort antall de som kunne ha nytte av nevrale nettverksteknologi, har aldri engang hørt om det, ta det til en høy vitenskapelig ide eller tenk på det som en slank markedsføringsgimmick. Det er også de som peker på alle sine håp om neurale nettverk, løver nettene etter noen positive erfaring med dem og om dem som en sølvkule-løsning til noen form for problem. Men som alle handelsstrategiske nevrale nettverk er det ingen hurtigreparasjon som lar deg slå den rik ved å klikke på en knapp eller to. Faktisk er den riktige forståelsen av nevrale nettverk og deres formål er avgjørende for deres vellykkede søknad. For så vidt angår handel er nevrale nettverk en ny, unik metode for teknisk analyse, beregnet for de som tar en tenkningstilnærming til deres virksomhet og er villige til å bidra med litt tid og krefter for å få denne metoden til å fungere for dem. Best av alt, når de brukes riktig, kan neurale nettverk skape en fortjeneste regelmessig. Bruk nevrale nettverk for å avdekke muligheter En stor misforståelse er at mange forhandlere feiler neurale nettverk for et prognostiseringsverktøy som kan gi råd om hvordan man skal handle i en bestemt markedssituasjon Nevrale nettverk gjør ingen prognoser I stedet analyserer de prisdata og avdekker muligheter Ved hjelp av et neuralt nettverk kan du ta en handelsavgjørelse basert på grundig analysert data som ikke nødvendigvis er tilfelle ved bruk av tradisjonelle tekniske analysemetoder. For en seriøs, tankehandler er nevrale nettverk et neste generasjons verktøy med stort potensial som kan oppdage subtile, ikke-lineære interdependenser og mønstre som andre metoder for teknisk analyse ikke kan for å avdekke de beste nettene. I likhet med alle slags flott produkt eller teknologi har nevrale nettverk begynt å tiltrekke seg al Jeg de som leter etter et spirende marked Torrenter av annonser om neste generasjons programvare har oversvømmet markedet - annonser feirer den kraftigste av alle nevrale nettverk algoritmer noensinne opprettet Selv i de sjeldne tilfellene når reklame krav ligner sannheten, må du huske at en 10 økning i effektivitet er trolig den mest du noen gang kommer fra et neuralt nettverk. Med andre ord gir det ikke mirakuløs retur og uansett hvor godt det fungerer i en bestemt situasjon, vil det være noen datasett og oppgaveklasser for som de tidligere brukte algoritmene forblir overlegen Husk dette er ikke algoritmen som gjør trikset Godt forberedt informasjon om den målrettede indikatoren er den viktigste komponenten av suksess med nevrale nettverk Er raskere konvergens bedre Mange av dem som allerede bruker neurale nettverk Feil tro at jo raskere deres nett gir resultater, desto bedre er det Dette er imidlertid en vrangforestilling Et godt nettverk er ikke bestemt b y den hastighet som den gir resultater og brukere må lære å finne den beste balansen mellom hastigheten som nettverket trener og kvaliteten på resultatene den produserer. Korrekt anvendelse av nevrale nettverk Mange forhandlere bruker nevrale nett feil fordi de plasserer for mye stole på programvaren de bruker alt uten å ha fått riktig instruksjoner om hvordan du bruker det riktig. For å bruke et neuralt nettverk på riktig måte og dermed lønnsomt, bør en næringsdrivende være oppmerksom på alle stadier av nettverkspreparasjonen. er handelsmannen og ikke nettverket hans som er ansvarlig for å oppfatte en ide, formalisere denne ideen, teste og forbedre den, og til slutt velge riktig tidspunkt for å avhende det når det ikke lenger er nyttig. La oss se på stadiene av denne avgjørende prosessen mer detaljert.1 Finne og formalisere en handelsidee En handelsmann bør fullt ut forstå at hans eller hennes neurale nettverk ikke er ment for å finne frem til vinnende handelsideer og konsepter. Det er beregnet for å gi mest pålitelige og presise opplysninger som er mulige for hvor effektiv handelsideen din eller konseptet er. Derfor bør du komme opp med en original handelsidee og klart definere formålet med denne ideen og hva du forventer å oppnå ved å bruke det. Dette er viktigste stadiet i nettverksforberedelsessyklusen For relatert lesing, se Leksjoner fra en handelsmanns dagbok 2 Forbedre parametrene til modellen din Du bør derfor prøve å forbedre den generelle modellkvaliteten ved å endre datasettet som brukes og justere de forskjellige parametrene. Figur 1 Angi optimaliseringsalgoritmen og dens egenskaper.3 Avhending av modellen når den blir forældet Hver nettbasert modell har en levetid og kan ikke brukes på ubestemt tid. Livslengden av modellens levetid er avhengig av markedssituasjonen og på hvordan lenge markedsinterdependensene reflekteres i det forblir aktuelt. Imidlertid blir en eller flere modeller utdatert når dette skjer, enten du kan r etrain modellen ved hjelp av helt nye data, dvs. erstatte alle dataene som er brukt, legg til noen nye data i eksisterende datasett og trene modellen på nytt, eller bare dra av modellen helt. Mange handelsfolk gjør feilen ved å følge den enkleste banen - de stole tungt på og bruker tilnærmingen som deres programvare gir den mest brukervennlige og automatiserte funksjonaliteten. Denne enkleste tilnærmingen er å prognostisere en pris noen få barer fremover og basere ditt handelssystem på denne prognosen. Andre handelsfolk prognose prisendring eller prosentandel av prisen endring Denne tilnærmingen gir sjelden bedre resultater enn å prognostisere prisen direkte. Både de enkliste tilnærmingene unnlater å avdekke og vinne utnyttelse av de fleste viktige langsiktige gjensidig avhengighet, og som et resultat blir modellen raskt forældet når de globale drivkraften forandres. De fleste Optimal samlet tilnærming til bruk av nevrale nettverk En vellykket handelsmann vil fokusere og bruke ganske mye tid på å velge styrende input elementer for hans eller hennes neurale nettverk og justere sine parametere han eller hun vil bruke fra minst flere uker - og noen ganger i flere måneder - distribuere nettverket En vellykket handelsmann vil også tilpasse sitt nett til endringsforholdene gjennom hele livet spenning Fordi hvert neuralt nettverk bare kan dekke et relativt lite aspekt av markedet, bør nevrale nettverk også brukes i en komité. Bruk så mange nevrale nettverk som mulig - evnen til å ansette flere på en gang er en annen fordel med denne strategien. På denne måten, hver av disse flere nettene kan være ansvarlig for noe bestemt aspekt av markedet, noe som gir deg en stor fordel over hele linja. Det anbefales imidlertid at du beholder nummeret på nettene du bruker innen 5-10. Til slutt, nevrale nettverk bør kombineres med en av de klassiske tilnærmingene. Dette vil tillate deg å bedre utnytte resultatene oppnådd i samsvar med dine handelspreferanser. Konklusjon Du vil utøve Riktig suksess med neuralnett bare når du slutter å lete etter det beste nettet Tross alt ligger nøkkelen til suksess med nevrale nettverk ikke i selve nettverket, men i din handelsstrategi. Derfor, for å finne en lønnsom strategi som fungerer for deg, du må utvikle en sterk ide om hvordan du oppretter en komité av nevrale nettverk og bruker dem i kombinasjon med klassiske filtre og pengehåndteringsregler. For å lese om dette, sjekk ut Neural Trading Biological Keys To Profit og Trading Systems Coding Tutorial. Licensed User Center. Trade med Intelligence ved hjelp av TradingSolutions. TradingSolutions kombinerer teknisk analyse med kunstig intelligens AI-teknologier ved hjelp av nevrale nettverk og genetiske algoritmer for å lære mønstre fra historiske data og optimalisere systemparametere Denne handelsprogramvaren fungerer med aksjer, futures, valutaer FOREX og mange andre finansielle instrumenter. også bygge systemer for amerikanske og internasjonale markeder. Over 300 av de mest populære tec hniske indikatorer. Proven utvalg og kunde ytelse. Industrien ledende datastøtte fra eSignal Interactive Brokers og mange flere. Proprietary Optimal Signal technology. Free Technical Support.100 Free Systems og pre-built neurale nettverk modeller. Free Abonnement til Trader68 Standard automatisert trading programvare. Vellykket brukt i over 66 land rundt om i verden. 30-dagers Money Back Guarantee. Licensed Bruker Center. Trade med Intelligence ved hjelp av TradingSolutions. TradingSolutions kombinerer teknisk analyse med kunstig intelligens AI-teknologi ved hjelp av nevrale nettverk og genetiske algoritmer for å lære mønstre fra historiske data og optimalisere systemparametere Denne handelsprogramvaren fungerer med aksjer, futures, valutaer FOREX og mange andre finansielle instrumenter. Det kan også bygge systemer for amerikanske og internasjonale markeder. Over 300 av de mest populære tekniske indikatorene. Prøvetest og kundeytelse. Industriell ledende datastøtte fra eSignal Interaktive meglere og mange flere. Proprietary Optimal Signal technology. Free Teknisk Support.100 Free Systems og pre-built neurale nettverk modeller. Suksess brukt i over 66 land rundt om verden. 30-Day Money Back Guarantee. Hybrid Neural Network Stopp-og-Reverse Strategier for Forex. av Michael R Bryant. Neurale nettverk har blitt brukt i handelssystemer i mange år med varierende grad av suksess. Deres primære tiltrekning er at deres ikke-lineære struktur er bedre i stand til å fange kompleksiteten til prisbevegelsen enn standard, indikatorbaserte handelsregler. En av de kritikk har vært at nevrale nettbaserte handelsstrategier har en tendens til å være overpasset og derfor ikke fungerer bra på nye data. En mulig løsning på dette problemet er å kombinere nevrale nettverk med regelbasert strategisk logikk for å skape en hybridstrategi. artikkelen vil vise hvordan dette kan gjøres ved hjelp av Adaptrade Builder. Spesielt vil denne artikkelen illustrere followingbining nevralnett og regelbasert logikk for handelsoppføringer . En tre-segmentet data tilnærming vil bli brukt, med det tredje segmentet som brukes til å validere de endelige strategiene. Den resulterende strategikoden for både MetaTrader 4 og TradeStation vil bli vist, og det vil bli demonstrert at valideringsresultatene er positive for hver plattform. Neural Networks som Trade Entry Filters. Matematisk er et neuralt nettverk en ikke-lineær kombinasjon av en eller flere vektede innganger som genererer en eller flere utgangsverdier. For handel brukes et nevralt nettverk vanligvis på en av to måter 1 som en prognose for fremtidig pris bevegelse eller 2 som indikator eller filter for handel Her vil bruk som indikator eller handelsfilter bli vurdert. Som en indikator virker et neuralt nettverk som en ekstra betingelse eller filter som må tilfredsstilles før en handel kan innføres. innganger til nettverket er vanligvis andre tekniske indikatorer, for eksempel momentum, stokastikk, ADX, glidende gjennomsnitt og så videre, samt priser og kombinasjoner av det foregående. Inngangene er skalert og det neurale nettverket er utformet slik at utgangen er en verdi mellom -1 og 1 En tilnærming er å tillate en lang oppføring hvis utgangen er større enn eller lik en terskelverdi, for eksempel 0 5, og en kort oppføring hvis utgangen er mindre enn eller lik negativet av terskelen, for eksempel -0 5 Denne tilstanden ville være i tillegg til eksisterende inngangsbetingelser. For eksempel, hvis det var en lang inngangsbetingelse, måtte det være sant, og den neurale nettverksutgangen ville må minst være terskelverdien for en lang inngang. Når du etablerer et neuralt nettverk, vil en næringsdrivende typisk være ansvarlig for å velge innganger og nettverkstopologi og for å trene nettverket, som bestemmer de optimale vektverdiene. Som vil vist nedenfor, utfører Adaptrade Builder disse trinnene automatisk som en del av den evolusjonære byggeprosessen at programvaren er basert på Bruke det neurale nettverket som et handelsfilter gjør det enkelt å kombinere med andre regler for å lage en hybrid-tradin g-strategi, en som kombinerer de beste funksjonene til tradisjonelle regelbaserte tilnærminger med fordelene ved nevrale nettverk. Som et enkelt eksempel kan Builder kombinere en glidende gjennomsnittlig crossover-regel med et neuralt nettverk slik at en lang posisjon tas når den raske bevegelsen gjennomsnittlige kryss over det langsomme flytte gjennomsnittet og det neurale nettverksutgangen er på eller over dens grense. Stopp-og-omvendt handelsstrategier. En stopp-og-omvendt handelsstrategi er en som alltid er i markedet, enten lang eller kort. Strengt tatt , stopp og revers betyr at du reverserer handelen når stoppordre er truffet. Jeg bruker det som en kort hånd for enhver handelsstrategi som reverserer fra lang til kort til lang og så videre, slik at du alltid er i markedet Ved denne definisjonen er det ikke nødvendig for ordrene å være stoppordrer. Du kan skrive inn og reversere ved hjelp av markeds - eller begrensningsordrer. Det er heller ikke nødvendig at hver side bruker samme logikk eller til og med samme ordretype. For eksempel, du kan skriv inn lang og avslutt kort på en stoppordre og skriv inn kort og avslutte lenge på en markedsordre, ved hjelp av forskjellige regler og betingelser for hver inngangsavgang. Dette ville være et eksempel på en asymmetrisk stopp-og-omvendt strategi. Den primære fordelen med et stopp og omvendt strategi er at ved alltid å være i markedet, savner du aldri noen store tiltak. En annen fordel er enkelhet. Når det er egne regler og vilkår for inngang og spennende handler, er det mer kompleksitet og mer som kan gå galt. Kombinere oppføringer og Utgang betyr at færre tidsbeslutninger må gjøres, noe som kan bety færre feil. På den annen side kan det hevdes at de beste forholdene for å utveksle en handel sjelden er de samme som for inntasting i motsatt retning som inngår og spennende handler er iboende egne beslutninger som derfor burde benytte separate regler og logikk. En annen potensiell ulempe ved alltid å være i markedet er at strategien vil handle gjennom hver åpningsgap. En stor o pengegap mot posisjonen kan bety et stort tap før strategien er i stand til å reversere strategier som går inn og ut mer selektivt eller at utgangen innen slutten av dagen kan minimere effekten av åpningsgapene. Siden målet er å bygge en forexstrategi , MetaTrader 4 MT4 er et åpenbart valg for trading plattformen gitt at MetaTrader 4 er designet primært for forex og er mye brukt for handel de markeder ser for eksempel MetaTrader vs TradeStation A Language Comparison Men i de senere år har TradeStation rettet mot forex markeder mye mer aggressivt Avhengig av handelsvolum og eller kontonivå, er det mulig å handle forexmarkedet gjennom TradeStation uten å pådra seg noen plattformavgifter eller betale noen provisjoner. Spread er angivelig tett med god likviditet på de store forexparene. Av disse grunnene, begge plattformene ble målrettet for dette prosjektet. Det oppstår mange problemer når man målretter flere plattformer samtidig. Først kan dataene være diff på forskjellige plattformer, med forskjeller i tidssoner, prisopplysninger for noen barer, volum og tilgjengelige datoperioder. For å glatte over disse forskjellene, ble data oppnådd fra begge plattformene, og strategiene ble bygget over begge dataserier samtidig. De beste strategiene var derfor de som fungerte bra på begge dataserier til tross for eventuelle forskjeller i dataene. Datainnstillingene som brukes i Builder er vist nedenfor i figur 1 Som kan utledes av Market Data-tabellen i figuren, ble euro-dollar forexmarkedet målrettet EURUSD med en strekstørrelse på 4 timer 240 minutter Andre stangstørrelser eller markeder ville ha tjent like bra jeg kunne bare skaffe så mye data gjennom MT4-plattformen som angitt av datoperioden vist i figur 1 dataserie 2, så det samme datoperioden ble brukt til å oppnå ekvivalente dataserier fra TradeStation dataserien 1 80 av dataene ble brukt til å bygge kombinert i prøven og ut av prøven, med 20 6 20 14 til 2 10 15 satt til side for valida 80-tallet av den opprinnelige 80 ble deretter satt til in-prøve med 20 satt til ute av prøven, som vist i fig. 1 Budspørsmålet ble satt til 5 pips og handelsutgifter på 6 pips eller 60 i full størrelse mye om lag 100 000 aksjer ble antatt per rundtur. Begge dataseriene ble inkludert i byggingen, som angitt av merket i venstre kolonne i Market Data-tabellen. Figur 1 Markedsdatainnstillinger for å bygge en forexstrategi for MetaTrader 4 og TradeStation . Et annet potensielt problem når du målretter mot flere plattformer, er at Builder er utformet for å duplisere måten hver støttet plattform beregner sine indikatorer, noe som kan bety at indikatorverdiene vil være forskjellige, avhengig av hvilken plattform som er valgt. For å unngå denne mulige uoverensstemmelseskilden, vil noen indikatorer som vurderer annerledes i MetaTrader 4 enn i TradeStation, bør elimineres fra bygningen, noe som betyr at følgende indikatorer bør unngås. Alle andre indikatorer som er tilgjengelige for begge plattformene, beregnes d på samme måte i begge plattformene TradeStation inneholder alle indikatorene som er tilgjengelige i Builder, mens MetaTrader 4 ikke derfor, for å bare inkludere indikatorer som er tilgjengelige på begge plattformene, bør MetaTrader 4-plattformen velges som koden for Builder Det vil automatisk fjerne indikatorer fra byggsettet som ikke er tilgjengelig for MT4, som vil forlate indikatorene som er tilgjengelige på begge plattformene. Siden jeg har merket forskjeller i volumdataene fra hver plattform fjernet jeg alle volumavhengige indikatorer fra byggsettet Til slutt ble tidsindikatoren fjernet på grunn av forskjeller i tidssonene mellom datafiler. I figur 2 nedenfor vises listen over indikatorer som brukes i byggesettet, sortert etter om indikatoren eller ikke ble vurdert av byggeprosessen Vurder kolonne Indikatorene fjernet fra vurdering av årsakene som er diskutert ovenfor, vises øverst på listen De resterende indikatorene Or, som begynner med Simple Mov Ave, var alle en del av byggsettet. Figur 2-indikatorvalg i Builder, som viser indikatorene fjernet fra byggsettet. Evalueringsalternativene som brukes i byggeprosessen, vises i figur 3 Som omtalt, MetaTrader 4 ble valgt som valg av kodeutgang Etter at strategier er bygget i Builder, kan noen av alternativene på Evalueringsalternativer-fanen, inkludert kodetypen, endres og strategiene revurderes, som også vil omskrive koden i hvilket språk som er valgt Denne funksjonen ble brukt til å skaffe TradeStation-koden for den endelige strategien etter at strategiene ble bygget for MetaTrader 4.Figure 3 Evalueringsalternativer i Builder for EURUSD forex-strategien. For å skape stopp og revers strategier ble alle exittyper fjernet fra bygge sett, som vist under i figur 4 Alle tre typer inngangsordrer - marked, stopp og grense - ble igjen som å vurdere, noe som betyr at byggprosessen kan vurdere noen av dem under byggeprosessen. re 4 Ordre typer valgt i Builder for å lage en stopp-og-omvendt strategi. Builder-programvaren genererer automatisk regelbaserte logiske forhold for oppføring og utgang For å legge til et neuralt nettverk i strategien, er det bare nødvendig å velge alternativet Inkluder et neuralt nettverk i opptaksforholdene på fanen Strategialternativer, som vist nedenfor i fig. 5 Innstillingene for neurale nettverket ble igjen på sine standardverdier. Som en del av stop-and-reverse-logikken ble alternativet Market Sides satt til Long Short, og mulighet til å vente på Avslutt før du legger inn ny handel, var ikke merket Sistnevnte er nødvendig for å aktivere oppføringsrekkefølgen for å gå ut av gjeldende posisjon ved reversering. Alle andre innstillinger ble igjen på standardinnstillingene. Figur 5 Strategi-alternativer valgt i Builder for å lage en hybridstrategi ved bruk av både regelbaserte og neurale nettverksforhold. Den evolusjonære karakteren av byggeprosessen i Builder styres av treningen som beregnes ut fra målene og betingelsene som er definert på tabellen Metrics, som sho wn nedenfor i figur 6 Byggemålene ble holdt enkle å maksimere nettoresultatet samtidig som kompleksiteten ble minimert, noe som ble gitt en liten vekt i forhold til nettoresultatet. Mer vekt ble lagt på byggevilkårene, som inkluderte korrelasjonskoeffisienten og betydningen for generell strategi kvalitet, samt gjennomsnittlig barer i bransjer og antall bransjer. Først ble bare de gjennomsnittlige barene i handler inkludert som en byggeforbindelse. I noen av de tidlige byggene ble nettoresultatet favorisert over handelslengden, slik at antall-of-trades metrisk ble lagt til. Det angitte området for antall bransjer mellom 209 og 418 er ekvivalent med gjennomsnittlige handelslengder mellom 15 og 30 barer basert på antall barer i byggeperioden Som et resultat, legger du til denne metriske legger større vekt på handelslengdemålet, noe som resulterte i flere medlemmer av befolkningen med ønsket rekkevidde av handelslengder. Figur 6 Bygg mål og forhold som er angitt på tabellen Metriske beregninger hvordan treningen beregnes. Betingelsene for å velge toppstrategier dupliserer byggevilkårene, bortsett fra at de øverste strategibetingelsene vurderes over hele spekteret av data, ikke inkludert valideringssegmentet, som er atskilt, i stedet for bare over byggeperioden, som er tilfelle for byggevilkårene De øverste strategibetingelsene brukes av programmet til å legge til side noen strategier som oppfyller alle forholdene i en separat befolkning. De endelige innstillingene er gjort på kategorien Byggalternativer, som vist nedenfor i figur 7. Viktige alternativer her er populasjonsstørrelsen, antall generasjoner og muligheten til å tilbakestille basert på ytelsen utenfor prøven. Befolkningsstørrelsen ble valgt til å være stor nok til å få god mangfold i befolkningen, mens den fortsatt var liten nok til å bygge inn en rimelig tid Antall generasjoner var basert på hvor lang tid det tok under noen foreløpige bygg for resultatene å begynne å konvergere. Figur 7 Byggalternativer inc lude populasjonsstørrelsen, antall generasjoner og alternativer for å tilbakestille befolkningen basert på ytelse utenfor prøven. Alternativet for å tilbakestille på OOS-ytelse utenfor prøvetaking starter byggeprosessen etter det angitte antall generasjoner hvis spesifisert betingelsen er oppfylt i dette tilfellet vil befolkningen bli tilbakestilt dersom nettoprovenyet utenfor undersøkelsen er mindre enn 20.000. Denne verdien ble valgt basert på foreløpige tester for å være en høy nok verdi som det sannsynligvis ikke ville bli nådd. Som et resultat, byggeprosessen ble gjentatt hver 30. generasjon til manuell stopp Dette er en måte å la programmet identifisere strategier basert på toppstrategier-betingelsene over en lengre periode Periodisk kan toppstrategier-befolkningen kontrolleres og byggeprosessen avbrytes når hensiktsmessige strategier er funnet. Notat som jeg legger ut i eksempler Når perioden utenfor prøvetiden brukes til å tilbakestille befolkningen på denne måten, er perioden utenfor prøven ikke lenger virkelig ute av bruk - prøve Siden denne perioden nå brukes til å veilede byggeprosessen, er den en del av prøveperioden. Derfor er det tilrådelig å sette bort et tredje segment for validering, slik det ble diskutert ovenfor. Etter flere timers behandling og en rekke automatiske gjenoppbygginger ble det funnet en passende strategi i toppstrategipopulasjonen. Den avsluttede handelskapitalkurven er vist under i figur 8 Egenkapitalkurven viser konsistent ytelse på tvers av begge datasegmentene med et tilstrekkelig antall bransjer og i hovedsak de samme resultatene over begge dataserier. Figur 8 Closed-trade egenkapitalkurve for EURUSD stopp-og-omvendt strategi. For å sjekke strategien i løpet av valideringsperioden, kontrolleres datoen på fanen Marker, se figur 1 ble endret til sluttdatoen for dataene 2 11 2015, og strategien ble revurdert ved å velge Evaluate-kommandoen fra Strategi-menyen i Builder. Resultatene er vist nedenfor i figur 9 Valideringsresultatene i den røde boksen viser at strategien holdt fast på data som ikke ble benyttet under byggeprosessen. Figur 9 Closed-trade egenkapitalkurve for EURUSD stopp-og-omvendt strategi, inkludert valideringsperioden. Den endelige kontrollen er å se hvordan strategien utføres på hver dataserie separat ved hjelp av kodeutgangsalternativ for denne plattformen Dette er nødvendig fordi det kan være forskjeller i resultatene, avhengig av 1 koden, og 2 dataserien. Vi må verifisere at de valgte innstillingene minimerte disse forskjellene som beregnet. For å teste strategien for MetaTrader 4 ble dataserie fra TradeStation avvelget på Markets-fanen, og strategien ble revurdert. Resultatene er vist nedenfor i figur 10, som dupliserer bunnkurven i figur 9. Figur 10 Closed trade equity curve for EURUSD stop-and-reverse-strategien, inkludert valideringsperioden, for MetaTrader 4.Finally, for å teste strategien for TradeStation, ble dataseriene fra TradeStation valgt, og serien for MetaTrader 4 var dese foredraget på fanen Markeder, ble kodeutgangen endret til TradeStation, og strategien ble revurdert. Resultatene er vist nedenfor i figur 11 og ser ut til å være svært lik midtenskurven i figur 9, som forventet. Figur 11 Lukket - handelskurs for EURUSD stopp-og-omvendt strategi, inkludert valideringstidspunktet, for TradeStation. Koden for begge plattformene er gitt nedenfor i Fig. 12 Klikk på bildet for å åpne kodefilen for den tilsvarende plattformen. Ved å undersøke koden blir det klart at regelbasert del av strategien bruker ulike volatilitetsrelaterte forhold for lange og korte sider. De nevrale nettverksinngangene består av en rekke indikatorer, inkludert ukedag, trend ZLTrend, intraday high, oscillatorer InvFisherCycle, InvFisherRSI, Bollinger-band , og standardavvik. Strategiens hybride karakter kan ses direkte i kodesetningen fra TradeStation-koden. Hvis EntCondL og NNOutput 0 5 begynner så kjøper EnMark-L NShares aksjer neste bar på markedet. Variabelen EntCondL representerer regelbaserte oppførselsbetingelser, og NNOuput er utgangen av det neurale nettverket. Begge forholdene må være sanne å plassere den lange inngangsordre. Kort oppføringskondisjonen fungerer på samme måte. Figur 12 Handelsstrategiskode for EURUSD stopp-og-omvendt strategi igjen, MetaTrader 4 right, TradeStation Klikk på figuren for å åpne den tilsvarende kodefilen. Last ned en Builder-prosjektfil som inneholder innstillingene beskrevet i denne artikkelen. Denne artikkelen så på prosessen med å bygge en hybridregelbasert nevrale nettverksstrategi for EURUSD ved hjelp av en stopp-og-omvendt alltid i markedsnæringen med Adaptrade Builder Det ble vist hvordan strategikoden kan genereres for flere plattformer ved å velge en felles delmengde av indikatorene som fungerer på samme måte i hver plattform. Innstillinger som er nødvendige for å generere strategier som reverserer fra lang til kort og tilbake ble beskrevet, og det ble påvist at den resulterende strategien utførte positivt på en sepa rate, validering segment av data Det ble også verifisert at strategien genererte lignende resultater med data og kode alternativ for hver plattform. Som diskutert ovenfor har stopp-og-omvendt tilnærming flere ulemper og kan ikke appellere til alle. Men en alltid - in-markedet-tilnærmingen kan være mer attraktiv med forexdata fordi valutamarkedet handler døgnet rundt. Som et resultat er det ingen åpningsgap, og handelsordrene er alltid aktive og tilgjengelige for å reversere handelen når markedet endringer Bruken av intradag-data 4-timers stenger ga flere databærere til bruk i byggeprosessen, men var ellers ganske godtydelig ved at strategiens alltid-i-markeds-natur innebærer at handler blir båret over natten. Byggeprosessen fikk lov til å utvikle forskjellige forhold for å komme inn i lang og kort, noe som resulterte i en asymmetrisk stopp-og-omvendt strategi Til tross for navnet, kommer den resulterende strategien til både lange og korte handler på markedsordrer, selv om mark et, stop og limit orders ble alle vurdert av byggeprosessen uavhengig av hver side. I praksis ville reversering fra lang til kort bety at selger kort to ganger antall aksjer på markedet som strategien var for tiden lang, for eksempel hvis den nåværende lange posisjonen var 100.000 aksjer, ville du selge korte 200.000 aksjer på markedet. Likeledes, hvis den nåværende korte posisjonen var 100.000 aksjer, ville du kjøpe 200.000 aksjer på markedet for å reversere fra kort til lang. En kortere prishistorie ble brukt enn det ville være ideelt. Resultatene var positive på valideringssegmentet, noe som tyder på at strategien ikke var overpasset. Dette støtter ideen om at et neuralt nettverk kan brukes i en handelsstrategi uten å nødvendigvis overpasse strategien til markedet. Strategien som presenteres her, er ikke beregnet for faktisk handel og ble ikke testet i sanntidssporing eller handel. Denne artikkelen kan imidlertid brukes som en mal for å utvikle lignende strategier for EURUSD eller andre markeder. Som allerede måter, enhver handelsstrategi du utvikler bør testes grundig i sanntidssporing eller på separate data for å validere resultatene og å gjøre deg kjent med handelsegenskapene til strategien før du handler. Denne artikkelen ble vist i februar 2015-utgaven av Adaptrade Software nyhetsbrev. HYPOTETISKE ELLER SIMULERTE RESULTATRESULTATER HAR VISSE BEGRENSNINGER UTEN EN FAKTISK PRESTASJONSOPPTAK, SIMULERTE RESULTATER ER IKKE REPRESENTERER FAKTISK HANDEL OGSÅ, SOM HANDLINGER IKKE ER FAKTISKT UTFØRT, KAN RESULTATENE UNDER - ELLER OVERPENSJONERES FOR KONSEKVENSEN , IF ANY, OF CERTAIN MARKET FACTORS, SUCH AS LACK OF LIQUIDITY SIMULATED TRADING PROGRAMS IN GENERAL ARE ALSO SUBJECT TO THE FACT THAT THEY ARE DESIGNED WITH THE BENEFIT OF HINDSIGHT NO REPRESENTATION IS BEING MADE THAT ANY ACCOUNT WILL OR IS LIKELY TO ACHIEVE PROFITS OR LOSSES SIMILAR TO THOSE SHOWN. If you d like to be informed of new developments, news, and special offers from Adaptrade Softw are, please join our email list Thank you. Neural Networks for FOREX Trading. In this article an example of using of our Neural Networks Software to create a complete neural network trading system. This example uses the Cortex built-in scripting language so please read the scripting language guide first. Using Neural Networks to create FOREX Trading Strategy. In this free online tutorial you will find the full cycle of using neural networks Cortex Neural Networks Software for Forex trading or stock market trading the idea is the same. You will learn how to choose inputs for the artificial neural networks and how to decide what to use as the output. You will find an example of a ready to use script that allows to perform neural networks optimization of both the structure of Neural Network number of neurons and the forex trading system stop loss etc. Finally the part that is not present in most tutorials , you will learn what to do next After all, Cortex Neural Networks Software cannot do real t ime trading, you need to use something like Trade Station, MetaQuotes or MetaTrader How to port the FOREX trading system from Cortex to your favorite trading platform Do you have to deal with DLLs, ActiveX controls and low-level programming The answer is NO Cortex Neural Networks Software comes with the easy to use feature that allows you to easily port the resulting trained Neural Network to the scripting language of your trading platform No DLLs, DDE, ActiveX or any other low-level solutions - everything is plain and simple. Important note this is NOT a how to trade tutorial Instead, it tells you how to use Cortex Neural Networks Software but you still need to invent your own trading system The one we use here is barely a starting point, and shouldn t be used as a forex trading strategy as is The idea of this text is to teach you to create NN-based trading systems and to port them to the trading platform of your choice The example is, however, ovesimplified, and can only be used as th e illustration of trading principles Same way, the MACD trading system, that can be found in many tutorials, is not working well anymore as markets have changed , but still is a good example of using indicators for mechanical trading In two words do your own analysis. Another important note the tutorial uses examples, lots of them To make your life easier, I have included them all, not just fragments However it makes the text much longer Also, I am going from the very first, clumsy, forex trading system to more advanced, every time explaining what had been improved and why Be patient, or jump directly to the section you need. Final important note the code is not something carved in stone, it could change while this text was written The final versions of script files are included in Cortex archive. Pitfalls of FOREX BUY SELL Signals What is wrong with simple examples. In the Cortex Neural Networks Software user s guide we used a simple example of an aftifficial Neural Network predicting the price of GENZ stock To find out what is wrong with this approach, let s do the same simple example, using instead of the use 800 records in the learning set, as is a little bit shorter, then. It just wouldn t work Why. The reason will become evident, if you ask yourself What is the reason neural network forecasting of future values can be done on the first place. The answer is it is learning to do what is called neural networks pattern recognition to recognize patterns, and if there is a hidden logic in these patterns, then even a new pattern with the same logic will be recognized. That s a trick - with the same logic There is not even one, but three problems here. First of all, if you look at the Microsoft s stock price, you will notice, that it was going down in the learning part of our data, and sideways - in the testing part So it is possible, that the logic had changed. Second, and even more important - WHAT IS THE PATTERN You see, if we teached the neural network in the range 10 - 100 , and then presented it with something in the 1 to 3 range - they are different patterns 10, 20, 30 and 1, 2, 3 look similar to the human because - BECAUSE - we have this ability to divide by ten, when presented with numbers ending with zero It is what is called a pre-processing of the data, and by default, the NN can not do it. Can we teach it Of course What is it EXACTLY we need to teach it. This is the third, and the most important one We do not need the price prediction We do not care What we need is FOREX buy sell signals. Now, wait a minute We need a to have our input both learning and testing in the same range, and we need b to be able to make trading decisions based on it Isn t it what we call an indicator Bingo. So, that s what we are going to do - we will build an indicator, to feed it to the NN as an input, and we will try to get a prediction of the indicator value, not the worthless stock price. In our first example, we will load stock quotes from the disk, open the Neural Netwo rk file and start the learning - all in an automated mode. Create a new script file or open the one that came with the Cortex Neural Networks Software archive and call it. First of all, we need to download the price values from the file We are going to use the CLV indicator see below , but to calculate it, we need split-adjusted values for High and Low, not just for close Here is how to get them. The first line assigns the path to the strStockPath variable, of course, you will have to edit it, if your data file is located in the different directory. In the second line we specify, that this path is not relative the relative to the location of file. The TABLELOADER receives the path, the empty string for the start line , 1 - to skip the first line column names , part of the file s footer line the last line in does not contain data , it is also instructed to load the column number 0 and call it arrDate , 2 arrHigh , 3 arrLow , 4 arrC and 6 arrClose For a full description of TABLELOADER, see th e SLANG reference guide. Then we calculate split, by dividing the Adjusted Close by Close, and use this value to adjust Low and High. The file contains newest data FIRST, while we want them LAST. Next, we need to create an indicator Let s say, it is going to be a Close Location Value indicator, though in the real life I would probably use more than one indicator as the NN input. The Close Location Value indicator is calculated like. CLV Close - Low - High - Close High - Low , where Close, Low and High are for the interval, not necessarily for a single bar Note, that we want it in the 0 - 1 range, to make it easier to normalize to our NN s range which is, again, 0-1.Next, we need to create a lag file Let s use lags equal to 1, 2 9 For details on file functions, see the SLANG reference guide Note, that the Cortex s NN dialog can produce simple lags automatically you can use a Generate lag button But later in this text, we are going to work with complex lags which means, they are not 1, 2, 3 b ut 1, 3, 64 whatever , so we need to create the code that can handle this task in a more flexible way. Having the lag file, we are ready to create our first neural network This function takes a lot of parameters, so be carefull However, the code is really simple. By the way, most of this code can be removed, if you think you can handle numbers, instead of meaningfull names in your code, however, that would be a very bad coding practice. Now, after we have a neural network and the lagged file with data, we need to teach the network The lag file has 1074 records, so it is reasonable to use 800 as a learning set, and the remaining 274 as a testing set. You can, of course, open a network file and to click the Run button on the Learning tab But as this is an introduction to advanced Cortex Neural Networks Software programming, let s use SLANG builtin scripting language instead. The following code brings up the modal dialog with ann NN settings Note, that if you want to have a privilege of clicki ng the Run button, you need to change the. The bStartLearning can be 0, in which case the dialog will wait for your input, or 1, then the learning will begin aytomatically. The bResumeScript, if equals 1, will resume the script, if you close the dialog by clicking the OK button. The bReset is used to reset the network before the learning begins. Run the script, and wait for the epoch counter to exceed 1000, then click Stop Go to the Apply tab, and click Apply This will run the entire data set both learning and testing through the NN, and create the file, containing both original input-output, and the NN-generated prediction, this way you can easily plot them and compate against each other. Go to the Output tab, select file, click Browse file , Select fields , then select the No in the left list box, and by holding down the CTRL key while selecting with the mouse Clv and NN Clv in the right list box Click Chart to see how good our prediction is Well It is more or less good, from what we can say by looking at it Still, nothing extraordinary. This was just an example of what you can do with SLANG scripting, and how to automate Cortex s routine tasks However, until now, we did nothing you couldn t do by hand Well almost nothing, because if you want to create a custom lag file, with, say, Clv-100, Clv-50, Clv-25 columns, then you will have to use SLANG or Excel , because you cannot do in in Cortex without scripting. FOREX Trading Strategy what to optimize. Here is our next problem Do we need a good-looking prediction, or do we need the one we can use to trade with profit The question seems odd, but just think about it for a moment Let s say we have a VERY good 1-hour prediction 95 accurate Still, how far can the price go in one hour Not too far, I am afraid Compare it to the situation, when you have a rather inaccurate 10-hours prediction Will it be better. To answer this question, we need to actually trade, a simple comparison of the mean errors produced by the two NNs will not help. The second part of the same problem is in the way we define a good prediction Let s say we have a network, that produces the prediction, which is 75 accurate Compare it to the NN, that is producing 100 accurate prediction The last one is better Now, DIVIDE the output prediction of the 100 accurate NN by 10 We will have a VERY inaccurate network, as its signal is nowhere near the signal we used as a desired output And yet, it can be used same way we used 100 accurate NN, all we have to do is to multiply it to 10.See, the NN is created, by tuning the mean quadratic error, and not the correlation, so, at least in theory, a better NN can show poor results, when used for the actual stock Forex trading. To solve this problem, we need to test our NNs using trading, and to use results of this trading profit and drawdowns to decide, if this NN is better than the other one. Let s do it Let s create a program, that can be used to fine-tune NN, and this time, by fine-tuning, we will mean tradin g results. Neural Network Trading Few short notes. First of all, in our example above, the automatic learning will never stop, because we haven t specified any stop criteria In the dialog, or in the CREATENN function, you can provide the min error when the NN reaches it, it stops and, if bResumeScript is set to 1, the dialog will close and the script will resume Also yo can provide the maximum number of epochs, or both I am not using it in the example below, at least not always, because I am planning to watch the learning and to click STOP when I think the NN is ready If you want to do it in fully automatic mode, pay attention to these parameters. Second One of the ways to make a network smaller, faster and more accurate, is to begin with the small network, and increase it s size, neuron by neuron Obwiously, the number of the input neurons is determined by the number of input data columns but we can vary them, too , and the number of output neurons should be equal to the number of output data columns usually one, but not necessarily This means we need to optimize the number of neurons in the hidden layer s. Also, as I have mentioned, we don t really know which data to use Will Clv-15 15 days delayed increase the accuracy of our prediction Do we need Clv-256 Will it be better to use both of them in the same NN, or will adding Clv-256 ruin our performance. Using nested cycles to try different input parameters, you can. Create the NN, same way we did it for the stock data let me repeate, for the NN, there is no difference between stocks and FOREX, it just happened that I have couple of high quality data files for FOREX that I want to process, while writing this text. Try different combinations of lags. Try different number of neurons in the hidden layer. and different combinations of different indicators. However, if you try all possible combinations of all possible parameters, you will NEVER get your results, no matter how fast your computer is Below, we will use couple of tricks to reduce calculations to a bare minimum. By the way, it may seem, that if you start from one hidden neuron, then increase it to 2, 3 and so on, and at some point the error quality of the prediction or the profit if you test the NN by trading using it will begin to go down, then you have your winner Unfortunately, I cannot prove, that after the first performance peak there can be no second one It means, that the error may go like 100, 30, 20, 40, 50 it was just at its minimum, right and then 30, 20, 10, 15 the second minimum We just have to test all reasonable numbers. Third Optimization is a two-edged sword If you over-optimize your code, it may not work outside the data you used to fine-tune it I will do my best to avoid this pitfall If you want to do addition al optimizations to your code or NN, I advise you to do a research in the Internet, to learn more about hidden problems of this approach ALso, I am going to pay some attention to the smoothness of the profit curve The profit that looks like 0, -500, 1000, -100, 10000 may be great, but the profit 0, 100, 200, 300, 400 is better, as it is less risky We may talk about it later. Finally, for this example we are going to use FOREX, rather than stock prices From the point of view of the NN there is no difference, and from my point - Forex is much more fun to trade If you prefer stocks, the code can easily be modified. A FOREX Trading Strategy to play with. First of all, let s create a prototype of our code, one that can easily be optimized in future It is going to be a trading system, that uses a Neural Network to trade and produces a chart profit against trade number It will also calculate drawdown, as a measure of robustness of our trading system. The main difference here is that we use functi ons, instead of placing all the code in the main block of the program This way it is much easier to manage. Second, we have a TestNet function I am using a very simple algorithm of trading The CLV indicator is confined to 0 - 1 interval our version of CLV is , so when the indicator crosses up the dBuyLevel see code above , I am buying, when it is crossing down the dSellLevel, I am selling. Obviously, it is not the best trading strategy, but it will do for our purpose just for now If you want to improve it, here are some pointers First, you may want to have a system, that is not ALWAYS in the market Second, you may want to use more than one indicator as inputs, and maybe, more than one NN, so that the trading decision is made based on few predicted indicators We will add some improvements to the trading algorithm later. We use some standard assumptions of the FOREX trading spread is 5 points, leverade is 100, min lot is 100 mini-FOREX. Let s take a look at our trading system Once again, it is an oversimplified one An important note the TestNn is called last, and it has access to all variables that were created to that point So if you see a variable that I am using, without initializing it, it probably means that it was initialized in NewNn , TeachNn or some other function that was called prior to TestNn. To make things easier, comments are placed in the code. Few words about the drawdown There are few ways of calculating it, and we are using what I consider the most honest The drawdown is a measure of instability of our system What is a chance, that it will loose money Lets say the initial amount is 1000 If the profit goes 100, 200, 300, 400 the drawdown is 0 If it goes 100, 200, 100 then the drawdown is 0 1 10 , as we have just lost an amount, equal to 1 10 of the initial deposit from 1200 to 1100.I would strongly advice against using trading systems with large drawdowns. Also, here I use a drawdown, that is to be used with variable lot size However, in the actual samples, that come with the eBook, you will see another version. As you can see, here we always use 1000 the initial amount to calculate the drawdown The reason is simple we always use the same lot size no money management yet , so there is no difference, how much money we have already accumulated on our account, an average profit should be constant The worse possible scenario in this case looks like this from the very beginning 1000 on account we are loosing money If we use 1000 to calculate the drawdown, we will get the worse drawdown This will help us not to trick ourselves For example, say, we traded for some time, and we have 10,000 on our account Then we loose some money, and we now have 8,000 Then we have recovered, and got 12,000 Good trading system Probably not. Let s repeat the logic again, as it is very important and it will become even more important, when we start doing money management We trade using fixed size lots So, statistically, there is no guarantee, that the maximum loss wi ll not happen at the very beginning, when we only have 1000 And if it happens, we will have -1000 10,000 - 8,000 , so the trading system is probably too risky. When we talk about the money management probably, not in this text , we will have to use different approach to drawdown calculation. Note, that in this trading system, I am using the worse possible scenario I am buying using High and selling, using Low Many testers do not follow these rules, and create trading systems, that work fine on historical data But in the real life, these trading systems have very poor performance Why. Take a look at the price bar It has Open, High, Low and Close Do you know, how the price was moving inside the bar No So, let s say, your trading system generated a buy signal, at the bottom of the price bar if dLow. Note that I am using dLotSize equal 0 1 lot 100 Obviously, in the real trading, you will benefit greatly, if the lot size is calculated depending on the money you have, something like. However, we are doing testing here, not trading And for testing, we need, among other things, to see how smooth the profit curve is This is much easier to do if the lot size is the same in ideal situation, for dLotSize 100 we will get a straight line, with some positive slope, while in case of the adjustable lot size we will get an exponent, that is much harder to analyze. Later in this text, we will apply money management rules to our trading system, but not yet. After we are done with the last part of our testing function, let s walk through the rest of the code. The following function creates a CLV indicator It takes the interval as a parameter, which means that we can call it many times, during the optimization, passing different numbers. Note, that I am using the NN that works in the 0 - 1 interval The data can be normalized, of course, but I chose to divide the indicator by 2 and to add 0 5, so that it is in 0 - 1 range. To make lag file, we can use the CREATELAGFILE function Alternatively, we ca n do it by explicitly providing all the necessary code In this case, we have more control, and we are going to need it, if we begin varying number of lagged columns and so on. The nRemoveFirst parameter is important Many functions, like indicators, moving averages, lag generators, for that matter, do not work well within the first few records of the dataset Let s say we have MA 14 - what will it place in the records 1 - 13 So we choose to simply remove the first few unreliable records. For the NewNn, as well as for all functions of this program, we need to pass as parameters only what can be changed during optimization process For example, there is no need to pass a skip before parameter, as it is always the same. The TeachNn function simply brings up the NN dialog. Finally, we need a charting function It is not mandatory, but it is always a good idea to see what our profit line looks like The following code uses the XML to produce a chart, so it is a good idea to read the tutorial Alterna tively, you can draw the chart, rather than saving it in a file To do it, use one of the samples, that are in the samples scripts directory Finally, you can modify the code, to produce HTML, rather than XML HTML is easier to learn, but the code itself will be a bit less readablepile and Run the script. Well As expected, using 7 hours as an interval for the CLV produced very poor results. FOREX Trading Strategies and Optimization. The reason for the poor results is quite obvious we used the Interval, Stop Loss, buy and sell levels and other parameters, that were purely random - we just picked first that came in mind What if we try few combinations. FOREX Trading Signals What to optimize. First of all, by overoptimizing the buy and sell levels, we can ruin our future performance However we still can tune them, especially, if the performance is close for close values of buy and sell limits For example, if we have -10 profit at buy limit equal 0 3, and 1000 profit when it equals 0 35, then ther e is probably a lucky coincidence, and we should not use 0 35 for our trading system, as in future it will probably not happen again If, instead, we have -10 and 10 instead of 1000 , it may be safer to use. Generally, our trading system should be built for WORSE possible scenario, as if during the real trading the performance will be better, then during the test, we will survive, but not the other way around. We can vary the value for the indicator interval, provided we have enough trades, so that we can be confident, in terms of statistics, in the performance of a system. We certainly can vary the number of neurons, I don t think it can be overoptimized easily. We can vary number of inputs and lags for inputs It is possible to overoptimize this, but it is not very likely to happen. And, of course, we can try different indicators. Accurate FOREX Signals How to optimize. As have already been mentioned, if we start trying all possible combinations, it will take forever So we are going to cheat We will create pre-defined sets of parameters, that we think are reasonable, and pass them to the program. To make as few calculations as possible, note, that Clv-1 and Clv-2 are, probably, important, but what about Clv-128 And - if we already have Clv-128, do we need Clv-129 Probably, not So we are going to have something like Clv-1, Clv-2, Clv-4, Clv-8 Clv-128 with just few variations, which will make our calculation time thousands times shorter. FOREX Professional System Trading Can it work at all. What is it exactly we want to predict Until this point we have used 1 hour chart for EURUSD, and we were predicting the next bar s CLV Will the CLV 2 be better What about CLV 3.Also, especially considering the poor performance of our first trading system, it would be nice to know, that - at least in the ideal world, the goal profitable trading can be achieved. To answer these questions, let s create a simple testing program We assume, that our prediction is 100 accurate, and, based on this as sumption, we will use CLV N, not the NN predicted one That s right - we are going to take data from the future, and to use them instead of the NN prediction This approach wouldn t work in the real life, of course, but at leats, it will give us some ideas of what to expect. When looking at the results, please keep in mind, that we are not using any advanced money management, our lot size is set to a minimum 100 If you use variable lot sizes, results will be dramatically different But even at a lot size set to 0 1 we can see below that getting the information from the future is an ultimate trader s holly graal. You are already familiar with this code, it was used in It handles data loading The only difference is in the part that obtains the list of files in the images directory and deletes all files with the extention The reason for this code is simple during our tests we are going to create many - may be, thousands - image files We don t want them to hung around after we are done So at th e beginning of the script we are deleting images, created by other scripts. Just a few comments We do not want to try all possible values for, for example, CLV interval Instead, we can create an array, that contains only values we want to test Then see below we will walk through this array. Stop losses are important part of any trading strategy, so I have decided to vary them as well It is a dangerous idea, however, as it is easy to overoptimize the system. I am planning to test different values for buy and sell levels, but it will be done in cycle, without using arrays. Unlike in our previous example, we want to have a large XML file, containing many images To do it, I have moved the code, that is forming the XML header and footer outside of the Chart function Read one of the online XML tutorials for details. Note, that I am using 0 as the first lag, which means, that first I am testing the indicator CLV that was not shifted from the future Just to get an idea, how good out trading system would be without NN horrible, is the right word It is loosing all the money. Cortex uses the Internet Explorer control to display XML pages When pages grow large, it takes a lot of memory If your computer cannot handle it, consider creating multiple XML or HTML pages, instead In the case of forexnn02, it should not be a problem, as the page is relatively short Alternatively that is what I am doing in scripts later in this text , create XML file, but do not open it from Cortex Open them using Internet Explorer instead - unlike IE control, the Internet Explorer does not have the memory problem. Now the code that is trying different combinations of parameters. Here, we are using nested cycles In every cycle, we are assidning some variable for example, nInterval for the outer cycle This way the cycle will assign values of all elements of a corresponding array, one in a time Then WITHIN it, the inner cycle is used, and so on, so that all combinations of all array elements are tested. In the inn ermost cycle, I am calling the Test function, to test trade , and Chart to add a new picture to a list of images saved on disk Note, that this Chart does not show any images, until all cycles are completed. The Test and CreateClv functions are almost the same as in the previous example The only real difference is due to the fact that it is called more then once To do it, I am calling ARRAYREMOVE to cleanup arrays. Also, notice, that we are only creating charts for the combinations of parameters, that produce trading system with positive profit Otherwise, we call continue , to skip the Chart function. Finally, we have Take Profit now, so our trading system can be a bit more flexible. The Chart function was broken into two pieces The header and the footer should be written to the XML file only once, so they were moved to the main part of the program. Also, I am using the counter, to save files under the different names The information about parameters is written to the header of an image, so we can easily see which one it is Finally, images are only saved for winning configurations, meaning the balance at the end should be more, then at the beginning. Run the program it will take some time to complete You will end up with a large XML page with images, one for each winning configuration. Some of the results are great, however, as we used data from the future , this system will not work in the real life Actually, if you look at the Test function, you will notice, that the cycle stops before we reach the last element of arrClose. for nBar nRemoveFirst 1 nBar. THIS IS C , just an example. As you can see, the code is really simple Now lets do the same using the SLANG script As in examples before, we will keep the overall structure of the code, so that this example looks familiar The only difference is that instead of using the built-in APPLYNN function, we call the function of our own The code that we do not use such as cycles is commented, but not removed. Note, that the logic behin d it was discussed in Neural Networks and Stock Forex Trading article already Briefly, the output of this script is formated to be compatible with the MQL, MetaTrader s scripting engine MetaTrader is a trading platform we use, if you want something different, like TradeStation, for example, you will have to alter the code to comply to its syntax. Then, in the following chapters, we are going to insert this code in the MetaTrader s indicator, and to use it to trade. Porting script to trading platform. The next step is not really required, but it is something, that may be useful We are going to create a version of a tsc file one above , but this time, we will use SLANG Cortex scripting language to emulate APPLYNN function The reason is, in the next chapter we are going to port it to the scripting language of a MetaTrader trading platform, so it is a good idea to make sure everything works. After we run this function, we discover, that the result it produces is the same, as the forexnn05a pro duced, which means the code works fine. Note, that there is a difference at the beginning of the charts, as our NN does not try to process the data at the beginning where lag is incomplete , while the built-in NN does not know about this problem Of course, it doesn t affect the result, as the beginning of the chart is ignored by using the nRemoveFirst parameter in our script set to 200, which is guaranteed to be larger, then our lag. Using third-party trading platform. We have the NN that more or less can be used We have the script, implementing this NN without calls to the Cortex-specific NN functions Now we are going to port it to the trading platform that can be used for the real trading, which means it can contact brocker, place orders and earn or loose money. As a trading platform, I am going to use MetaTrader. Disclaimer I am not related to MetaQuotes in any way I do not work for them, I am not their affiliate and so on I use MetaTrader, ONLY because I like it. I find this program user - friendly, flexible and powerful, and not a monster Also, it is free compare to other packages of this class. The only minor problem is that it is not always easy to find the dealer using MT in your area Then, when you do a research, you may find couple of brockers, with screenshots on their web sites, that look suspiciously familiar Yes, they use MetaTrader, but they don t call it MetaTrader. I have asked for clarification at the company s forum, and they have told me, that they don t reveal brockers using their services Very strange. One of the brockers that is not hiding the fact they use MT, is Alpari They will allow you to open a Demo account, so that you can trade in a real time, but without risking your money. Warning I am not going to recommeng services of Alpari Once again, I am not being paid for that Try their Demo account, and use your own judgement Or you can start your own research at Internet forums. Finally, if you do not like the MT, you can probably follow the example belo w using TS, MS or some other trading platform This is just an example. Our MT-based trading system will include two files, the indicator and an expert This is the way they call it in MQL scripting language of MT , and I am going to follow this naming convention. The indicator implements the neural network and draws a chart An expert takes these data and does trading As MetaTrader has a strategy tester , we will be able to test our strategy, to see how good it is. I will assume, that you are familiar with MQL programming, it is quite close to SLANG and tutorials can be found both at MetaQuotes and Alpari. Finally, I am using the code structure, that is borrowed from MetaQuotes forum, permission to use it the author of the corresponding posts had granted me permission to use fragments of his code. Also, as some of our MetaTrader code is the same for all experts and indicators, we moved it to a separate library file MetaTrader s libraries are nothing but includable files This library takes car e of synhronization, when two or more expert are trying to run in the same time, as well as of few other things If you use MetaTrader, it will help you to create robust experts, in any case, the MQL language is easy to understand. a helper library. The code should look familiar, all I did was re-writing it, using slightly different language syntax of MQL. This indicator has two buffers, and draws two lines, one for the original NOC, and one for the NN-predicted NOC For trading, you don t have to draw both indicator lines, of course see MQL tutorials to learn how to do it , but I have decided to show them together, so you can compare. Another difference, that you should know about, is the way MT performs testing It may, in some cases, be more accurate, then one we did we did the worse case scenario Of course, you can always to change the SLANG script from the examples above, to implement any logic you want. The result of our testing in MT is a bit better, then in Cortex, due to all these reasons. Keep in mind, that MT calculates the DD in a different way I still think, that my way is better. In should be especially noted, that no additional optimization had been performed using MetaTrader s optimizer We have just plugge d our MTS mechanical trading system in, and it worked as expected. That is it You can now create Cortex Neural Network, optimize it to do trading, and to port it to the trading platform of your choice. Download Cortex Order Cortex View Price List. Visibility is very important for this site If you like it please link to this URL.
Comments
Post a Comment