Mql4 Ea Moving Average


MetaTrader 4 - Experts. Moving Average - ekspert for MetaTrader 4.The Moving Average ekspert for å danne handelssignaler bruker ett bevegelige gjennomsnitt Åpning og lukking av stillinger utføres når det bevegelige gjennomsnittet møter prisen på den nylig dannede barbarindeksen tilsvarer 1 The mye størrelse vil bli optimalisert i henhold til en spesiell algoritme. Ekspertrådgiveren analyserer samtidig det bevegelige gjennomsnittet og markedsprisdiagrammet. Kontrollen utføres av CheckForOpen-funksjonen Hvis det bevegelige gjennomsnitt møter stangen på en slik måte at den tidligere er høyere enn Åpne pris, men lavere enn Lukk pris, KJØP-posisjonen vil bli åpnet Hvis glidende gjennomsnitt møter stangen på en slik måte at den tidligere er lavere enn Åpen pris, men høyere enn Lukk pris, vil SELL-posisjonen bli åpnet. Eksperten er veldig enkel, men effektiv kontroll over hvert stillingsvolum utføres avhengig av tidligere transaksjonsresultater Denne algoritmen implementeres av LotsOptimi zed-funksjon Den grunnleggende størrelsesstørrelsen beregnes ut fra den maksimalt tillatte risikoen. MaximumRisk-parameteren viser grunnrisikoprosenten for hver transaksjon. Den har vanligvis en verdi mellom 0 01 1 og 1 100 For eksempel, hvis fri marginal AccountFreeMargin tilsvarer 20 500 og Kapitalstyringsregler foreskriver å benytte risiko for 2, grunnlagsstørrelsen vil gjøre 20500 0 02 1000 0 41 Det er svært viktig å kontrollere størrelsen på nøyaktigheten av masse og å normalisere resultatet med de tillatte verdiene. Normalt vil brøkdeler med trinn av 0 1 er tillatt. En transaksjon med volum på 0 41 vil ikke bli utført. Normaliseres, funksjonen NormalizeDouble brukes med nøyaktighet opptil 1 tegn etter punktet. Dette resulterer i det grunnleggende antallet 0 4 Basisparten beregning på grunnlag av fri margin tillater økning i driftsvolum avhengig av trading suksess, det vil si å handle med reinvestering. Dette er den grunnleggende mekanismen med obligatorisk kapitalstyring for økning av tr AdseaseFactor er i hvilken grad størrelsesstørrelsen vil bli redusert etter ulønnsom handel Normale verdier er 2,3,4,5 Hvis de foregående transaksjonene ikke var lønnsomme, vil de etterfølgende volumene reduseres med en reduksjon faktor for å vente gjennom den ulønnsomme perioden Dette er hovedfaktoren i kapitalstyringsalgoritmen Ideen er veldig enkel hvis handel øker med suksess, eksperten arbeider med det grunnleggende partiet som gir maksimal fortjeneste Etter den aller første ulønnsomme transaksjonen, vil eksperten redusere hastigheten til en ny positiv transaksjon er gjort Algoritmen tillater å deaktivere hastighetsreduksjon. For å gjøre det må man spesifisere ReduksjonFaktor 0 Mengden av de siste suksessive, ulønnsomme transaksjonene er beregnet i handelshistorikken. Basispartiet vil bli beregnet på nytt. Algoritmen tillater effektivt å redusere risikoen som oppstår som et resultat av en rekke ulønnsomme masse størrelser er obligatorisk sjekket for mi maksimal tillatt størrelse på slutten av funksjonen fordi de tidligere utførte beregningene kan resultere i mye 0. Eksperten er hovedsakelig ment for å arbeide med daglig periode, og i testmodus - for å gjøre til lave priser, handler det kun ved åpning av en ny bar, derfor er modusene for hver tick-modellering ikke nødvendig. Testresultater er representert i rapporten. Typisk kan to bevegelige gjennomsnitt bli brukt til å lage en forexstrategi EA for MT4 med disse reglene. Kjøp når den korte Periodens glidende gjennomsnitt er over den lange perioden glidende gjennomsnitt. Selg når den lange perioden glidende gjennomsnitt er over den korte perioden glidende gjennomsnitt. I den følgende grafen fra MetaTrader Terminal er den gule linjen den korte perioden glidende gjennomsnitt. Period 9 og den røde linjen er den lange perioden, glidende gjennomsnitt Periode 18.Analisere grafen, kunne vi omskrive handelsregler eller valutasignaler as. Buy når den gule linjen ligger over den røde linjen. Selg når den gule linjen er under den røde linjen. I stedet for å bruke en lang tid som koder denne forexstrategien, med Molanis Strategy Builder kan du opprette et handelsdiagram som representerer den bevegelige gjennomsnittlige strategien i løpet av minutter. Bare dra og slipp to tekniske analyseblokker, en Kjøp blokk og en Selg blokk. Koble dem og sett blokkparametrene for å få et diagram som følgende. Dette handelsdiagrammet har to handelsbaner Den venstre er markert. Den går fra START-blokken til END-blokken. En kunne lese den som Kjøp 1 mye EURCAD med 100 pip Ta fortjeneste og 50 pip Stopptap når den korte perioden glidende gjennomsnittlig 9 er over den lange perioden glidende gjennomsnitt 18 Husk å lese handelsdiagrammet i motsatt retning til handelsflyten. Den riktige handelsbanen kan leses som Selg 1 masse EURCAD med 100 pip Ta fortjeneste og 50 pip Stop Loss når den lange perioden beveger gjennomsnittlig 18 er over kort periode glidende gjennomsnitt 9.Generere MQL-koden for MetaTrader med bare ett klikk. På handelsdiagrammenyen klikker du på Generer MQL4-kode for å få th e MQL4-kodevindu Molanis Strategy Builder lar deg åpne ekspertrådgiveren direkte med MetaTrader eller lagre den som en MQ4-fil. Ikke gå glipp av videoopplæringen på. Simple Expert Advisor. Problem 29 Opprett en handelsekspert Advisor. Preliminære argumenter. Før begynner å programmere en handelsekspertrådgiver, er det nødvendig å definere generelle prinsipper for et fremtidig program. Det er ingen strenge programopprettingsregler. Når en gang har opprettet et program, fortsetter en programmør vanligvis å forbedre den. For å kunne forstå programmet lett i fremtiden må den opprettes i samsvar med et godt gjennomtenkt og lettforståelig skjema. Det er spesielt viktig om et program vil bli ytterligere forbedret av en annen programmerer. Det mest praktiske programmet er det som består av funksjonelle blokker, hver av dem er ansvarlig for sin del av beregningene For å opprette en algoritme til en handelsekspertrådgiver, la s analysere hva et operasjonsprogram skal gjøre. En av de viktigste dataene i dannelse av handelsordrer er informasjonen om ordre som allerede finnes i en klientterminal Noen av handelsstrategier tillater kun en ensrettet ordre Vanligvis kan flere bestillinger åpne i en terminal samtidig, selv om antallet skal være rimelig begrenset Når du bruker en strategi, bør handelsbeslutninger treffes under hensyntagen til den nåværende situasjonen. Før en handelsavgjørelse inngår i et program, er det nødvendig å vite hvilke handelsordre som allerede er åpnet eller plassert. Først av alt må et program inneholde en blokk med ordreregnskap som er blant de første som skal utføres. Ved en EA-gjennomføring bør handelsbeslutninger fattes, hvis gjennomføring fører til utførelsen av handelsvirksomheten. Kodedel som er ansvarlig for handelsordreformasjon, er bedre skrevet i en separat blokk En Ekspertrådgiver kan danne en handelsforespørsel om å åpne en ny ventende eller markedsordre, lukke eller endre noen eksisterende ordrer eller utfør ingen handlinger på alle En EA må også beregne bestillingspriser avhengig av brukerens ønske. Handelsbeslutninger bør gjøres i et program på grunnlag av handelskriterier Suksessen til hele programmet er avhengig av korrektheten av å oppdage handelskriterier i programmet. Ved beregning av handelskriterier et program kan og må ta hensyn til all informasjon som kan være nyttig. Eksempelvis kan en ekspertrådgiver analysere kombinasjon av tekniske indikatorverdier, tidspunkt for viktige nyheter, nåtid, verdier av enkelte prisnivåer osv. For enkelhets skyld er programdelen ansvarlig for beregning av handelskriterier skal skrives i en separat blokk. En handelsekspertrådgiver må nødvendigvis inneholde feilbehandlingsblokk Analysefeil som kan oppstå ved utførelsen av handelsoperasjon tillater på den ene siden å gjenta en handelsforespørsel og, på den annen side, for å informere en bruker om en mulig konfliktsituasjon. Struktur av en enkel ekspert Advisor. Her er en strukturell plan for en enkel Exper t Rådgiver konstruert på grunnlag av flere funksjonelle blokker, i hver blokk en viss løsrevet del av beregninger. Fig. 109 Strukturskjema av en enkel ekspertrådgiver. I det følgende EA-utviklingsstadiet er det ingen programkode ennå. Samtidig er algoritmen for et program er i stor grad dannet Hvordan EA bygget på basene av den tilbudte ordningen vil operere kan lett forstås, bare å se på skjemaet og orientere på blokknavn og relasjonsarrayer kontroll som går mellom dem. Etter programstart er kontrollen overført til Blokken av foreløpig prosessering I denne blokken kan noen generelle parametere analyseres. For eksempel hvis det ikke er nok stenger i en vindusstang som er nødvendig for å beregne parametere for tekniske indikatorer, vil en EA ikke kunne operere tilstrekkelig i et slikt tilfelle en EA må avslutte operasjonen for tidlig å informere en bruker om det og rapportere om årsaken til oppsigelse Hvis det ikke finnes noen kontraindikatoner av generell karakter, ntrol er bestått for å bestille regnskapsblokk. I blokkboken for regnskapsordrer registreres antall og kvalitet av ordrer som finnes i en klientterminal for en sikkerhet til vinduet som EA er knyttet til. I denne blokken skal ordre av andre verdipapirer elimineres hvis If en programmert handelsstrategi krever bruk av bare markedsordrer og bruker ikke ventende ordrer, faktumet av tilstedeværelse av ventende ordrer må oppdages Hvis en strategi innrømmer bare en markedsordre og det faktisk er flere bestillinger, bør dette faktum også være kjent. Oppgaven til rekkefølge regnskapsblokk i denne ordningen er å definere om den nåværende handelssituasjonen tilsvarer en forventet, dvs. det som EA kan tilstrekkelig operere hvis situasjonen tilsvarer, må kontrollen overføres til neste blokk for å fortsette EAs operasjon hvis ikke , må EA-operasjonen avsluttes, og dette faktum må rapporteres til en bruker. Hvis det ikke er noen ordre i terminalen eller antall og kvalitet på eksisterende bestillinger svarer til det som var forventet, er kontrollen overført til blokken med definerende handelskriterier. I denne blokken beregnes alle kriteriene som er nødvendige for å utføre handelsbeslutninger, nemlig kriteriene for åpning, lukking og endring av ordre. Ytterligere kontroll overføres til blokker med avsluttende ordrer. er lett å forstå hvorfor i den tilbudte ordningen er blokkering av avsluttende ordrer utført tidligere enn blokk med åpningsordrer. Det er alltid rimeligere å behandle første eksisterende ordrer lukke eller modifisere og først etter det for å åpne nye ordrer. Generelt er det riktig å styres av ønsket om å ha så små ordrer som mulig. Under utførelsen av denne blokken skal alle bestillinger, som sluttkriteriet er aktivert, være stengt. Etter at alle nødvendige bestillinger er stengt, blir kontrollen overført til en blokk med nye ordre størrelse beregning Det er mange algoritmer for å beregne et bestillingsvolum Den enkleste av dem bruker en konstant, fast masse størrelse Det er praktisk å bruke denne algoritmen i et program for teststrategier Mer populær metode for å definere en ordrestørrelse, er å sette antall partier avhengig av mengden ledig margin, for eksempel 30-40 av den. Hvis fri marginal ikke er nok, avslutter programmet driften etter å ha informert en brukeren om årsaken. Etter at antall deltakere for åpning av nye ordrer er definert, blir kontrollen overført til bestillingsåpningsblokken. Hvis noen av de kalkulerte kriteriene tidligere peker på nødvendigheten av å åpne en ordre av en bestemt type, en handelsforespørsel om å åpne en ordre er dannet i denne blokken. Det er også feilanalyseblokk i en ekspertrådgiver Hvis en hvilken som helst handelstransaksjon feilet, blir kontroll bare i dette tilfellet sendt til feilbehandlingsblokken. Hvis en feil returnert av en server eller klientterminal ikke er avgjørende, er en ytterligere Forsøk gjøres for å utføre en handelsoperasjon Hvis en avgjørende feil returneres for eksempel, er en konto blokkert, en EA må avslutte sin drift. Husk, i MQL4 er det ingen mulighet for at programmet avslutter en EA s opera i en sikkerhetsvindu som skiller seg fra skript, se Spesialfunksjoner Hva som kan gjøres på et program, er avslutningen av starten Ved en ny start av funksjonen, start på et nytt kryss av verdien av et bestemt variabel flagg som forbyder handel med dette saken aktivert som et resultat av en kritisk feil kan analyseres og kontrollen kan bestås for avslutning av spesialfunksjonen, og dermed er det ikke tillatt å opprette ny handelsforespørsel. I det tilbudte skjemaet blir flaggverdien analysert i blokk med foreløpig behandling. Handelsstrategi. Markedsprisene beveger seg kontinuerlig Markedsstatistikken kan til enhver tid preges av en betingelse, enten som en trend - sterk ensrettet prisendring stiger eller faller, eller som en flat-sidet prisbevegelse med svake avvik fra et visst gjennomsnitt. Disse markedsegenskapene er betinget, fordi det ikke er noen klare kriterier, i henhold til hvilken trend eller flat som kan identifiseres. For eksempel lange langsgående bevegelser med sterk avvik s som kan spores verken til en flat eller en trend Generelt er det antatt at markedet hovedsakelig er i tilstanden for lateral bevegelse, og trender finner vanligvis sted 15-20 av tiden. Fig 110 Flat og trend i markedet. All handel Strategier kan også konvensjonelt deles inn i to hovedgrupper. Den første gruppen inneholder flatorienterte strategier. Hovedidéen til slike strategier er at etter at en tydelig avvikspris må gå tilbake til forrige posisjon, er derfor bestillinger åpnet i retningen i strid med siste prisbevegelse De andre gruppestrategier er trendstrategier når ordrer åpnes i samme retning som saltprisbevegelsen. Det er mer kompliserte kombinerte strategier. Sådanne strategier tar hensyn til mange forskjellige faktorer som karakteriserer markedet som følge av at handel kan utføres både på flat og trend Det er ikke vanskelig å implementere handel i henhold til denne eller den strategiske teknikken - MQL4 inneholder alle nødvendige midler for det. Hovedarbeidet i cr eation av en gang egen strategi består i søk av trading criteria. Trading Criteria. In dette eksemplet vil vi prøve å konstruere en trend Expert Advisor, det vil si den som vil åpne ordre i prisbevegelsesretningen. Så må vi finne blant ulike tekniske Indikatorer de som oppdager en trendbegynn En av de enkleste metodene for å søke handelskriterier er basert på analysen av kombinasjonen av MA med ulike gjennomsnittsperioder Fig. 111 og Fig. 112 viser stillingen til to forskjellige MA med perioder med gjennomsnittlig 11 og 31 på ulike markedsdeler Gjennomsnitt med liten gjennomsnittsperiode Røde linjer er nærmere et prisdiagram, vridd og bevegelig. Flytte gjennomsnitt med større gjennomsnittlig blå linje er mer inerte, har større lag og ligger lenger fra markedsprisene. La oss være oppmerksom på steder der MA med ulike gjennomsnittsperioder krysser og prøver å avgjøre om MA-krysset kan brukes som lesingskriterium. Fig 111 Kryssing av MA 11 og MA 3 1 når prisbevegelsesretningen endres. I figur 111 ser vi en markedsdel hvor åpningsordrer i retning av prisbevegelse ved MA-krysset er begrunnet. I punkt A krysser den røde linjen den blå fra bunnen oppover, etter at markedsprisen fortsetter å vokse i noen tid Videre omvendt MA-kryssing indikerer endring av prisbevegelsesretningen Hvis vi åpner en kjøpsordre ved punkt A og lukker den ved B, vil vi få fortjeneste proporsjonal med forskjellen på A - og B-priser. Fig 112 Kryssing av MA 11 og MA 31 når prisbevegelsesretningen endres. Samtidig er det andre øyeblikk i markedet når MA krysser, men dette fører ikke til ytterligere betydelig prisvekst eller fall. Fig. 112 Ordrer åpnet ved MA-krysset på slike øyeblikk vil føre til tap åpnet ved A og lukket ved B, vil slik handel føre til tap Det samme kan sies om en kjøpsordre åpnet ved B og stengt ved C. Suksessen til hele strategien implementert på grunnlag av MA-krysset avhenger av antall deler t hue kan karakteriseres som trend og flat I flat ofte er MA-kryssing en vanlig begivenhet som forstyrrer enhver trendstrategi. Mange falske signaler fører som regel til tap Derfor kan dette skiltet av MA med forskjellig gjennomsnittlig periode brukes til bygge handelsstrategier bare i kombinasjon med andre tegn som viser en trend I dette eksemplet for å bygge en enkel Expert Advisor må vi nekte å bruke dette tegnet. Vi vil bruke et annet tegn Analysere visuelt tegnet av prisendringer i markedet, vi kan se det En lang en-retningsprisstigning eller - fall forekommer ofte som følge av en kort sterk bevegelse. Med andre ord, hvis det i løpet av kort tid skjedde en sterk bevegelse, kan vi forvente at det fortsetter på mellomlang sikt. Fig 113 Sterk prisbevegelse kan føre til en trendutvikling. Figur 113 viser markedsperioden da en sterk bevegelse førte til at prisendringen fortsatte i samme retning. Som en sterk bevegelse kan vi bruke forskjellene Ence av MA med ulike gjennomsnittlige perioder. Jo sterkere bevegelsen, desto større er lagret av MA med større gjennomsnittlig periode fra MA med en liten gjennomsnittlig gjennomsnitt. Dessuten gir selv sterke diskontinuerlige prisbevegelser med videre avkastning ikke en stor forskjell mellom MAs , det vil si at mange falske signaler ikke vises. For eksempel førte prishopp med 50 poeng med ytterligere retur i sentrum i Fig 113 en økning i forskjellen mellom MAs bare med 20 poeng. Samtidig er en veldig sterk bevegelse som vanligvis ikke ledsages av en betydelig korrigering i punkt A resulterte i forskjellen øker opp til 25 - 30 poeng. Hvis kjøpsordren åpnes når en viss verdi av differansen mellom MA er nådd, for eksempel i A, vil sannsynligvis det være lønnsomt når en pris når en forhåndsinnstilt Stoppordreverdi La oss bruke denne verdien som et handelskriterium i vår ekspertrådgiver. Antall ordrer. I dette eksemplet analyserer vi en ekspertrådgiver som innrømmer tilstedeværelse av bare en m Arketordre, ventende ordrer er ikke gitt. En slik tilnærming er rettferdiggjort ikke bare i dette bestemte eksemplet, men kan brukes som grunnlag for enhver strategi. Ordrerende ordrer brukes vanligvis når en utvikler har ganske pålitelig kriterium for å prognostisere fremtidig prisendring med høy sannsynlighet Hvis det ikke foreligger et slikt kriterium, trenger du ikke å bruke ventende ordrer. Situasjonen når flere motsatte bestillinger for en sikkerhet er åpne, kan heller ikke anses som fornuftige Det var tidligere skrevet at fra motsatt synspunkt er motsatte ordrer anses å være meningsløse , spesielt hvis bestillingsprisene er like, se Avslutt og slette ordrer I et slikt tilfelle bør vi lukke en ordre av en annen og vente på et signal for å åpne en markedsordre i en bestemt retning. Relatelse av handelskriterier. Fra denne posisjonen blir det klart hvilke forhold det er mulig mellom handelskriterier Fig. 114 viser tre varianter av korrelasjon av handelskriterier, når hvert kriterium er viktig gyldig Handlinger o pengepost og lukkende markedsordrer finner sted med klokken på følgende bilder. Fig 114 Bestillingsåpning og sluttkriterium korrelasjon a og b - korrekt, c - feil. Den mest populære varianten av et korrekt dannet handelskriterium er varianten a Etter å ha åpnet et marked Bestilling Kjøpet holdes fram til det øyeblikk da kriteriet krever avslutningsutløsere Etter det oppstår en pause når det ikke åpnes ordrer. Ytterligere en markedsordre Selg kan åpnes Forutsetninger for å lukke en Selgordre i samsvar med korrekt dannede kriterier skjer tidligere enn vilkår for Åpning av en kjøpsordre En kjøpsordre kan imidlertid åpnes igjen hvis et handelskriterium krever dette. Men ifølge denne varianten kan en markedsordre ikke åpnes dersom det er en åpen markedsordre i motsatt retning. Tilsvarende kriterier er korrelasjonen i variant b Forskjellen er at et kriterium for å åpne noen markedsordre samtidig er et kriterium for å lukke motsatt rekkefølge. Denne varianten som varianten nt a tillater ikke flere ordrer åpnet i terminalen samtidig på én sikkerhet. Varianten av kriteriekorrelasjonen er feil Ifølge denne varianten er åpning av en markedsordre tillatt når stridsbestillinger ikke er stengt enda, noe som er meningsløst. Det kan være sjeldne tilfeller når denne varianten er delvis begrunnet Åpning av en motsatt rekkefølge er noen ganger akseptabel for å kompensere tap som oppstår ved små korreksjoner etter sterke prisbevegelser. I slike tilfeller kan en motsatt rekkefølge åpnes med samme eller mindre verdi enn den allerede eksisterende og deretter lukket når korrigeringen er over En slik taktikk tillater ikke å forstyrre hovedordren åpnet i trendretningen. I generelle tilfelle er flere en-retningsordrer også mulige. Dette kan være berettiget når en tidligere åpnet ordre er beskyttet av en Stop-ordre og kriteriet som peker på prisutviklingen i samme retning utløses igjen. Når du oppretter en slik strategi, må en utvikler være fullstendig klar over at i tilfelle av skarp prisbevegelse endres de stoppede ordrene kan bli utført av noen meglere ved første prisberøring. Og tapet vil være proporsjonalt med den totale verdien av en-retningsordrer på markedet. I vårt eksempel bruker vi variant b av handelskriterier korrelasjon Alle åpne markedsordrer er stengt enten med en stoppordre eller etter et kriterium for å åpne en ordre i motsatt retning utløser her kriteriet om å lukke Kjøp sammenfaller med åpningsopplegg og omvendt. Størrelse på åpne ordrer. I hvilken som helst handel Strategi rekkefølge størrelser bør være begrenset begrenset I et enkelt tilfelle en fast ordre størrelse brukes i en ekspert Advisor Før EA operasjon start, kan en bruker angi hvilken som helst størrelse av fremtidige ordrer og la den være uendret i noen tid. Hvis endringer endres, kan en bruker sette opp en ny verdi på antall tall for åpnede ordre. En for liten ordstørrelse gir mer tillit til drift ved uforutsigbar endring i markedet, men fortjenesten ved suksess vil ikke være så stor e Hvis bestillingsstørrelsen er for stor, kan det bli oppnådd stor fortjeneste, men en slik EA vil være for risikabelt. Vanligvis er størrelsen på åpnede bestillinger satt opp, slik at marginkravene ikke overstiger 2-35 prosent av balansen eller fri marginen hvis en strategi bare tillater en åpnet ordre, balanse og fri marginal for øyeblikket før bestillingsåpningen vil være lik. I dette eksemplet implementeres begge varianter En bruker kan velge enten å indikere direkte verdi av ordrer eller angi verdien i prosent fra fri margin. Programming Details. A simple trend Expert Advisor konstruert på grunnlag av tidligere argumenter kan se slik ut. Deskribere Variables. One mer kriterium i program estimering er dens lesbarhet Et program anses å være skrevet riktig, hvis det er lett å lese av andre programmerere, derfor er alle hovedprogramdeler og hovedmomenter som kjennetegner strategien, kommentert. Det er også derfor det anbefales å erklære og kommentere alle variabler i begynnelsen av programvaren I blokk 1-2 er eksterne og globale variabler beskrevet. I henhold til regler må eksterne og globale variabler åpnes før deres første bruk, se Variabler, derfor de er deklarert i programhoveddelen. Alle lokale variabler av Funksjonsstart samles og beskrives i øverste funksjon delblokk 2-3 umiddelbart etter funksjonsoverskriften Regler for deklarering av lokale variabler krever det ikke, men forbud ikke. Hvis en programmerer har problemer med å forstå betydningen av en variabel når han leser programmet kan han referere til den øvre programdelen og finne ut hvilken betydning og hvilken som helst variabel. Det er veldig praktisk i programmeringspraksis. Blokk av foreløpig behandling. I dette eksemplet består preprosessen av to deler blokk 3-4. Programmet avsluttes drift hvis det ikke er nok barer i et sikkerhetsvindu, er det umulig å oppdage i blokk 5-6 verdier av bevegelige gjennomsnitt som er nødvendige for å beregne kriterier a I tillegg er verdien av det variable arbeidet analysert I den normale EA-operasjonen er variabelverdien alltid sant. Den settes en gang under initialiseringen. Hvis det oppstår en kritisk feil i programoperasjonen, er falsk tilordnet denne variabelen og begynner å fullføre operasjonen Dette verdien vil ikke endres i fremtiden, derfor er følgende kode ikke utført. I slike tilfeller må programoperasjonen stoppes, og årsaken til den kritiske feilen må detekteres om nødvendig, et forretningssenter må kontaktes. Etter at situasjonen er løst , kan programmet startes igjen, det vil si at EA kan festes til et sikkerhetsvindu. Reklameordrer. Den beskrevne ekspertrådgiver tillater bare å jobbe med en markedsordre. Oppgaven til ordrene regnskapsblokkeblokk 4-5 er å definere egenskapene til en åpnet ordre, hvis det er en I løkken går gjennom bestillinger for alle eksisterende markeder, og ventende ordrer blir sjekket, nemlig fra første int i 1 til siste cle iteration neste rekkefølge er valgt av funksjonen OrderSelect Valget er laget fra en kilde til åpne og ventende ordrer SELECTBYPOS. If valget utføres vellykket, det er en ordre i terminalen, videre må denne rekkefølgen og situasjonen analyseres om bestillingen er åpnet for sikkerheten, der EA opererer, om bestillingen er marked eller ventende, må det også tas hensyn til når man teller ordrer. I linjen. alle ordrer som er åpnet for en annen sikkerhet, elimineres. Operatør fortsetter å stoppe iterasjonen og Egenskaper ved en slik ordre behandles ikke. Men hvis bestillingen åpnes for sikkerheten, i vinduet som EA er vedlagt, analyseres den videre. Hvis OrderType returnerer verdi mer enn 1, se Types of Trades, den valgte rekkefølgen er en i påvente av en Men i denne ekspertrådgiveren er det ikke gitt ledende ventende ordrer. Det betyr at utførelsen av start må avsluttes, fordi det oppstod en konfliktsituasjon i et slikt tilfelle etter en melding om avslutning av operasjonsterminering, stoppes av operatørens retur. Hvis den siste sjekken viste at den analyserte bestillingen er en markedsordre, beregnes og analyseres det totale antall ordrer for en sikkerhet for den første av slike ordrer alle nødvendige egenskaper er definert Hvis i den neste iterasjonen finner ordrevariabelen variabel Total, finner den andre markedsordren, anses situasjonen også for å være konflikt, fordi EA ikke klarer å administrere mer enn en markedsordre. I et slikt tilfelle stoppes kjøringen etter å ha vist en tilsvarende melding . Som et resultat av ordrebokføringsblokkutførelsen dersom alle sjekker var vellykkede, variabelen Total beholder nullverdien dersom det ikke er noen markedsordrer, eller får verdien 1 hvis det er en markedsordre for sikkerheten. I sistnevnte tilfelle settes noen variabler I korrespondanse med rekkefølgen karakteristikk nummer, type, åpningspris, stopp nivåer og ordre verdi også få sine verdier. Beregning Trading Criteria. In ana lyzed eksempel definisjon av handelskriterier blokk 5-6 beregnes på grunnlag av forskjellen mellom Moving Gjennomsnitt med ulike perioder av gjennomsnittlig Ifølge aksepterte kriterier et diagram er bull-directed hvis dagens verdi av MA med mindre periode er større enn verdien av MA med større periode og forskjellen mellom verdiene er større enn en viss verdi. I en bjørnbevegelse er MA med mindre periode lavere enn MA med større periode, og forskjellen er også større enn en viss kritisk verdi. av MA med gjennomsnittlige perioder PeriodMA1 og PeriodMA2 beregnes Det faktum at betydningen av ethvert handelskriterium er uttrykt via verdien av en tilsvarende variabel Variabler OpnB og OpnS angir kriteriet utløsende for åpning Kjøp og selg ordrer, variabler Cls og ClsS - for lukking For For eksempel, hvis et kriterium for å åpne Buy ikke har utløst, forblir verdien av OpnB false satt til variabel initialisering hvis den har trig gered, OpnB får verdien sant I dette tilfellet er kriteriet for å lukke Selger sammenfallende med det for å åpne Kjøp, kriteriet for åpning Selg sammenfallende med det for å lukke Buy. Trading kriterier akseptert i dette eksemplet brukes kun til pedagogisk formål og må ikke vurderes som en veiledning når det handles på en ekte konto. Avsluttende ordrer. Det ble tidligere skrevet at denne ekspertrådgiveren kun er beregnet for operasjon med en markedsordre åpnet for sikkerhet, hvilket vindu EA er vedlagt til øyeblikket når kontrollen i programmet er sendt til ordreavslutningsblokken, er det sikkert at det for øyeblikket ikke er noen ordre for sikkerheten, eller det er bare en markedsordre. Det er derfor koden i ordrer som lukker blokk er skrevet slik at bare en ordre kan lukkes med hell. Denne blokken er basert på uendelig sløyfe mens kroppen består av to analoge deler en for å lukke en kjøpsordre, en annen for å lukke en selgordre mens det brukes her for th e formålet at i tilfelle av feil i bruksoperasjonen kan det gjentas igjen. I overskriften til den første operatøren dersom betingelsen for å lukke en kjøpsordre er beregnet. Selgordrene er lukket på analog måte. Hvis typen av en tidligere åpnet ordre svarer til å kjøpe se typer handler og tegnet for å lukke kjøp er relevant, kontroll er sendt til kroppen hvis operatør der en forespørsel om å lukke er dannet som en ordre sluttkurs i funksjonen ordre lukke verdien av et tosidig sitat tilsvarende Ordren typen er angitt se Krav og begrensninger i å gjøre handler Hvis en handel operasjon utføres vellykket, etter at en melding om ordreavslutningen er vist, den nåværende mens iterasjonen er stoppet og utførelsen av bestillingslukkeblokken er over, men hvis operasjonen mislykkes , den brukerdefinerte funksjonen for å behandle feil FunError kalles blokk 10-11.Processing Errors. As en passert parameter i FunError brukes den siste feilkoden beregnet av GetLastError Depe ned på feilkoden FunError returnerer 1 hvis feilen ikke er kritisk, og operasjonen kan gjentas, og 0 hvis feilen er kritisk. Kritiske feil er delt inn i to typer - de, hvoretter en programkjøring kan fortsette for eksempel en vanlig feil og de, hvorefter utførelsen av noen handelsoperasjoner må stoppes for eksempel blokkert konto. if etter en mislykket handel opererer den brukerdefinerte funksjonen tilbake 1, den nåværende mens iterasjonen avsluttes og i neste iterasjon gjøres et nytt forsøk å utføre operasjonen - for å lukke rekkefølgen Hvis funksjonen returnerer 0, blir den nåværende startkjøpet stoppet. På neste kryss start blir startet av klientterminalen igjen, og hvis betingelsene for å lukke ordre blir bevart, vil et annet forsøk på å lukke bestillingen bli gjort. Hvis det under feilsøking blir funnet ut at videre programgjennomføring er meningsløst, for eksempel, opererer programmet på en gammel klientterminalversjon under neste start t han utføres av den spesielle funksjonstart, avsluttes i blokkeringen av foreløpig behandling når man analyserer verdien av variabelen Work. Calculating Amount of Lot for New Orders. Amount of lots kan beregnes i henhold til en bruker s innstillinger etter en av de to varianter Den første varianten er en bestemt konstant verdi satt opp av en bruker Ifølge den andre varianten beregnes mengden av partier på grunnlag av en sum som tilsvarer en viss prosentandel satt av en bruker av en fri margin. I begynnelsen av blokkene for å definere mengden av partier for nye ordrer blokk 7-8 er nødvendige beregningsverdier av noen variabler beregnet - minimal tillatt mengde og antall endringer som er satt opp av en megler, fri marginal og pris på ett parti for sikkerheten. I dette eksemplet er følgende gitt Hvis en bruker har opprettet en viss ikke-null-verdi av den eksterne variabelen Lts, for eksempel 0 5, blir den akseptert som mengden partier Lts når en handelsforespørsel om å åpne en ordre dannes Hvis 0 er som signert til Lts, er antall masse Lts definert på grunnlag av variabelen Prots prosent, fri margin og betingelser satt opp av en megler. Etter at Lts er beregnet, utføres en sjekk Hvis denne verdien er lavere enn den minste tillatte verdien, Den minimale tillatte verdien aksepteres, men hvis fri marginal ikke er nok, etter en tilsvarende melding, blir startkjøpet avsluttet. Oppkjøpsordrer. Blokken av åpningsordrer blokkerer 8-9 som blokken for åpningsordrer er en uendelig sløyfe mens I overskriften av den første operatøren dersom betingelsene for å åpne en kjøpsordre beregnes dersom det ikke er noen ordre for sikkerhetsvariabelen Totalt er lik 0 og tegnet for å åpne en Kjøpsordre er relevant. OpnB er sant, kontrollen sendes til dersom operatørorganet åpnes en ordre I et slikt tilfelle etter satser er oppdaterte priser for stoppnivåer beregnet. Verdier av stoppnivåer settes opprinnelig av en bruker i eksterne variabler StopLoss og TakeProfit I en generell sak kan en bruker sette verdier for denne paren I tillegg til at en megler kan endre den minste tillatte avstanden når som helst, er det ofte et tilfelle ved sterke markedsbevegelser, for eksempel før viktig pressemelding. Det er derfor før hver ordre åpnes, må stoppnivåene beregnes under hensyntagen til verdier angi bu en bruker og den minimale tillatte verdien satt opp av en megler. For å beregne stoppnivåer brukes den brukerdefinerte funksjonen NewStop som en passert parameter. Stoppnivåverdien som er satt av en bruker, brukes i NewStop først den nåværende, minimale, avviste avstanden beregnes Hvis verdien som er satt av en bruker tilsvarer kravene til meglerens krav, returneres denne verdien. Hvis den er mindre enn den tillatte verdien, brukes verdien som er tillatt av en megler. Prisene på stoppforespørsler beregnes ut fra det tilsvarende tosidige sitatet see Requirements and Limitations in Making Trades. A trade request to open an order is formed using the function OrderSend For the calculation of order opening price and prices of stop requests t he two-sided quote values corresponding to the order type are used If a trade operation was successful i e a server returned the number of an opened order after a message about a successful order opening is shown start execution is finished If an order was not opened and the client terminal returned an error, the error is processed according to the algorithm described earlier. Some Code Peculiarities. The analyzed Expert Advisor code is oriented to the implementation of a certain strategy Note, some program lines contain variables and calculations that would be changed, if the strategy were changed. For example, according to the accepted strategy the Expert Advisor is developed to work only with one order This allowed to use the variable Ticket both for the identification of a closing order number in block of closing 6-7 and for the identification of a success of a trade operation execution when opening an order in the block of opening 8-9 In this case such a solution is acceptable Howeve r, if we take the analyzed code as the basis for the implementation of another strategy for example allow opposite orders we will have to introduce one or several variables to be able to recognize numbers of opened orders and identify the success of trade operations. In further strategy modifications we will have to change come program lines containing part of logics contained in the source strategy Namely in the order accounting block we will not have to terminate the program operation if there are several open orders for a security Besides, conditions for opening and closing orders will alslo change This will entail the code changing in blocks of opening and closing orders. On the basis of this analysis we can easily conclude that the described simple Expert Advisor is not perfect In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy The same can be said about the bloc ks of opening and closing orders A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must think and manage all other functions, i e call them when needed.

Comments

Popular posts from this blog

How To Calculate A Ratio To Moving Average In Excel

How To Lykkes Trade 60 Sekunders Binære Alternativer