Saturday 21 October 2017

Glidande Medelvärde Ea Mql4


MetaTrader 4 - Experts. Moving Average - expert för MetaTrader 4.The Moving Average expert för att skapa handelssignaler använder ett rörligt medelvärde. Öppning och stängning av positioner utförs när det glidande medelvärdet uppfyller priset vid det nyligen bildade barstångsindexet är lika med 1 The mycket storleksanpassas optimeras enligt en speciell algoritm. Expertrådgivaren analyserar samtidigt det rörliga genomsnittet och marknadsprisdiagrammet. Kontrollen utförs av CheckForOpen-funktionen Om det glidande medelvärdet möter stången på ett sådant sätt att den tidigare är högre än Öppet pris men lägre än Stängt pris, KÖP-positionen kommer att öppnas Om det glidande medelvärdet möter stången på ett sådant sätt att den förstnämnda är lägre än Öppet pris men högre än Stäng pris, kommer SELL-positionen att öppnas. experten är mycket enkel men effektiv kontrollen över varje positionsvolym utförs beroende på tidigare transaktionsresultat Denna algoritm implementeras av LotsOptimi zed-funktionen Basstorleksstorleken beräknas utifrån den maximala tillåtna risken. MaximumRisk-parametern visar den grundläggande riskprocenten för varje transaktion. Det brukar innehålla ett värde mellan 0 01 1 och 1 100. Om exempelvis fri marginal AccountFreeMargin motsvarar 20 500 och Kapitalförvaltningsreglerna föreskriver att man använder risk för 2, den grundläggande partikelstorleken kommer att göra 20500 0 02 1000 0 41 Det är väldigt viktigt att kontrollera storleksnoggrannheten och att normalisera resultatet med tillåtna värden. Normalt dela partier med steg av 0 1 är tillåtet En transaktion med volymen 0 41 kommer inte att utföras Normaliseras funktionen NormalizeDouble används med noggrannhet upp till 1 tecken efter punkten Detta resulterar i grundpartiet 0 4 Grundvärdesberäkningen utifrån fri marginal möjliggör att öka i volymer av operation beroende på handel framgång, dvs att handla med reinvestering Detta är den grundläggande mekanismen med obligatorisk kapitalförvaltning för ökning av tr addering effetiveness. DecreaseFactor är i vilken utsträckning partiets storlek kommer att reduceras efter olönsam handel Normala värden är 2,3,4,5 Om de föregående transaktionerna var olönsamma kommer de följande volymerna att minska med en faktor minskningsfaktor för att vänta igenom den olönsamma perioden Detta är huvudfaktorn i kapitalhanteringsalgoritmen Tanken är väldigt enkel om handeln ökar framgångsrikt, experten arbetar med det grundläggande partiet som ger maximal vinst. Efter den första olönsam transaktionen kommer experten att minska hastigheten tills en ny positiv transaktion görs Algoritmen tillåter att inaktivera hastighetsminskning. För att göra det måste man ange minskningsfaktor 0 Mängden av de sista på varandra följande olönsamma transaktionerna beräknas i handelshistoriken. Grundvärdet kommer att beräknas på grundval av detta. Algoritmen gör det möjligt att effektivt minska risken som uppstår till följd av att en serie olönsam mycket stor storlek kontrolleras obligatoriskt för mi maximalt tillåten partikelstorlek vid funktionens slut eftersom de tidigare gjorda beräkningarna kan resultera i parti 0. Experten är huvudsakligen avsedd att arbeta med daglig tid och i testläget - för att göra till nära priser kommer det endast att handla vid öppnandet av En ny stapel, det är därför det inte är nödvändigt med läget för varje kryssmodell. Testresultaten är representerade i rapporten. Typiskt kan två glidande medelvärden användas för att skapa en Forex-strategi EA för MT4 med dessa regler. Köp när den korta Periodens glidande medelvärde ligger över det långa glidande genomsnittet. Sälja när det långa glidande medlet är över det korta glidande genomsnittet. I följande diagram från MetaTrader Terminal är den gula linjen den korta perioden glidande medeltiden Period 9 och den röda linjen är det långa rörliga medeltalet Period 18.Analysera grafen kunde vi skriva om handelsreglerna eller valutasignalerna as. Buy när den gula linjen ligger ovanför den röda linjen. Sälj när den gula linjen är under den röda linjen. I stället för att spendera en länge koda denna forexstrategi med Molanis Strategy Builder kan du skapa ett handelsdiagram som representerar den glidande genomsnittliga strategin om några minuter. Dra och släpp bara två tekniska analysblocks, en Köp block och en Säljblock Anslut dem och ställ in blockparametrarna för att få ett diagram som följande. Detta handelsdiagram har två handelsbanor Den vänstra är markerad. Den går från START-blocket till END-blocket. En kunde läsa den som Köp 1 mycket EURCAD med 100 pip Ta vinst och 50 pip Stop-förlust när den korta perioden glidande medeltalet 9 är över den långa perioden glidande medelvärdet 18 Kom ihåg att läsa handelsdiagrammet i motsatt riktning till handelsflödet. Den rätta handelsvägen kunde läsas som Sälj 1 mycket EURCAD med en 100 pip ta vinst och 50 pip Stop-förlust när den långa perioden glidande medeltalet 18 är över den korta perioden glidande medlet 9.Generera MQL-koden för MetaTrader med bara ett klick. På handelsdiagrammenyn klickar du på Generera MQL4-kod för att få th e MQL4-kodfönstret Molanis Strategy Builder låter dig öppna din expertrådgivare direkt med MetaTrader eller spara den som en MQ4-fil. T missa inte vår videohandledning on. Simple Expert Advisor. Problem 29 Skapa en handelsexpert Advisor. Preliminary Arguments. Before Börja med att programmera en handelsexpertrådgivare, det är nödvändigt att definiera allmänna principer för ett framtida program. Det finns inga strikta regler för skapande av program. Men när man har skapat ett program fortsätter en programmerare oftast att förbättra den. För att enkelt kunna förstå programmet i framtid måste det skapas i enlighet med ett väl genomtänkt och lättförståeligt system, det är särskilt viktigt om ett program kommer att förbättras ytterligare av en annan programmerare. Det mest praktiska programmet är det som består av funktionella block, varav en ansvarar för sin del av beräkningarna För att skapa en algoritm för en handelsexpertrådgivare, låt oss analysera vad ett operativprogram ska göra. En av de viktigaste uppgifterna i bildandet av handelsorder är informationen om order som redan existerar i en klientterminal Vissa handelsstrategier tillåter endast en enriktad order Allmänt om en handelsstrategi tillåter kan flera beställningar vara öppna i en terminal samtidigt, trots att deras antal borde vara rimligt begränsad När man använder någon strategi bör handelsbeslut fattas med hänsyn till aktuell situation Innan ett handelsbeslut fattas i ett program är det nödvändigt att veta vilka handelsorder som redan har öppnats eller placerats. Först av allt måste ett program innehålla ett orderbeställningsredovisning som är bland de första som ska utföras. Vid ett EA-genomförande bör handelsbeslut fattas, vars genomförande leder till genomförandet av handelsverksamheten Koddel som är ansvarig för handelsorderordningar är bättre skrivna i ett separat block En Expert Advisor kan bilda en handelsförfrågan om att öppna en ny väntande eller marknadsorder, stäng eller ändra några av befintliga beställningar eller utför inga åtgärder vid Alla En EA måste också beräkna orderpriserna beroende på användarens önskemål. Handelsbeslut bör fattas i ett program på grundval av handelskriterier. Programmets framgångar beror på huruvida handelskriterierna är korrekta i programmet. Vid beräkning av handelskriterier ett program kan och måste ta hänsyn till all information som kan vara användbar. Exempelvis kan en expertråd analysera kombinationen av tekniska indikatorvärden, tidpunkten för viktiga nyhetsmeddelanden, aktuell tid, värden av vissa prisnivåer, etc. För praktiskt taget är programdelen ansvarig för beräkningen av handelskriterier bör skrivas i ett separat block. En handelsexpertrådgivare måste nödvändigtvis innehålla felbehandlingsblock. Analysfel som kan uppstå vid genomförandet av handeln möjliggör dels att upprepa en handelsförfrågan och, å andra sidan, för att informera en användare om en eventuell konfliktsituation. Struktur av en enkel expert Advisor. Below är ett strukturellt schema av ett enkelt Exper t Rådgivare konstruerad på grundval av flera funktionella block, i varje block en viss fristående del av beräkningarna. Fig 109 Strukturellt schema av en enkel expertrådgivare. I följande EA-utvecklingsstadium finns ingen programkod ännu. Samtidigt algoritmen för ett program bildas i stor utsträckning Hur EA byggd på baserna av det erbjudna systemet kommer att fungera kan lätt förstås genom att bara titta på schemat och orientera sig på blocknamn och relationer arrays kontroll som passerar emellan. Efter programstart överförs styrningen till blocket för preliminär bearbetning I det här blocket kan vissa allmänna parametrar analyseras. Om det inte finns tillräckligt många staplar i en fönsterfält som är nödvändig för att beräkna parametrar för tekniska indikatorer, kommer ett EA inte att kunna fungera i ett sådant fall. En EA måste avsluta operationen preliminärt informera en användare om det och rapportera om orsaken till uppsägning Om det inte finns några kontraindikatoner av generell karaktär, ntrol skickas för att beställa bokföringsblock. In blocken av bokföringsbeställningar upptäcks antalet och kvaliteten på order som finns i en klientterminal för en säkerhet till det fönster som EA är ansluten till Detekteras I detta block måste order av andra värdepapper elimineras Om en programmerad handelsstrategi kräver att man använder endast marknadsordningar och använder inte pågående order måste faktumet av förekomsten av pågående order upptäckas. Om en strategi endast godkänner en marknadsordnad och det faktiskt finns flera order, bör detta faktum också vara känt. Orderbokningsblocket i detta schema är att definiera huruvida den nuvarande handelssituationen motsvarar en förväntad, dvs. den där EA kan fungera på ett adekvat sätt Om situationen motsvarar, måste kontrollen överföras till nästa block för att fortsätta EA: s operationer om inte , måste EA: s operation avslutas och detta faktum måste rapporteras till en användare. Om det inte finns några beställningar i terminalen eller antalet och kvaliteten på befintliga beställningar co motsvarar vad som förväntades, kontroll överförs till blocket av definierade handelskriterier. I det här blocket beräknas alla kriterier som behövs för att fatta handelsbeslut, nämligen kriterier för öppnande, stängning och modifiering av order. Ytterligare kontroll överförs till block av stängningsorder. är lätt att förstå varför i det erbjudna systemet existerar blockeringen av stängningsorder tidigare än blocket av öppningsorder. Det är alltid mer rimligt att behandla första befintliga beställningar nära eller ändra och först efter det att öppna nya order. Generellt är det korrekt att vägledas av önskan att få så lite order som möjligt Under utförandet av detta block måste alla order, för vilka stängningskriteriet har aktiverats, stängas. När alla nödvändiga order har stängts överförs kontrollen till ett block av nya order storlek beräkning Det finns många algoritmer för att beräkna en ordervolym Den enklaste av dem använder en konstant, fast parti storlek Det är bekvämt att använda denna algoritm i ett program för teststrategier Mer populär metod för att definiera en orderstorlek är att ange antalet partier beroende på hur mycket fri marginal som till exempel 30-40 är. Om fri marginal inte räcker slutar programmet sin operation med upplysningar om en användaren om orsaken. Efter att antalet partier för öppnandet av nya order har definierats, överförs kontrollen till orderöppningsblocket. Om några av de tidigare beräknade kriterierna pekar på nödvändigheten att öppna en order av en viss typ, en handelsförfrågan om att öppna en order bildas i det här blocket. Det finns också ett felanalyseringsblock i en expertrådgivare. Om någon handelstransaktion misslyckades överförs kontrollen endast i det här fallet till felbehandlingsblocket. Om ett fel som returneras av en server eller klientterminal inte är avgörande, en ytterligare försök görs för att utföra en handelsoperation Om ett avgörande fel returneras till exempel, blockeras ett konto, en EA måste avsluta sin operation. Kom ihåg att i MQL4 finns det ingen möjlighet att programmet avslutar en EA s opera i en säkerhetsfönster som skiljer sig från skript, se Specialfunktioner Vad som kan göras på ett program sätt är uppsägning av start Vid en ny start av funktionen starta på ett nytt fält värdet av en viss variabel flagga som förbjuder handel med detta fallet aktiverat som ett resultat av ett kritiskt fel kan analyseras och kontroll kan överföras för avslutning av specialfunktionsoperationen, varför bildandet av en ny handelsförfrågan inte är tillåten. I det erbjudna systemet analyseras flaggvärdet i blocket av preliminär bearbetning. Handelsstrategi. Marknadspriserna ständigt rör sig Marknadsståndet kan när som helst präglas av villkoret antingen som en trend - stark enriktad prisförändring höjning eller nedgång eller som en platateral prisrörelse med svaga avvikelser från ett visst genomsnitt. Dessa marknadsegenskaper är villkorliga eftersom det inte finns några tydliga kriterier enligt vilken trend eller platt kan identifieras. Exempelvis långa laterala rörelser med stark avvikelse s som kan spåras varken till en plan eller till en trend Generellt antas det att marknaden huvudsakligen är i sidoläge och trenderna äger vanligtvis rum 15-20 av tiden. Fig 110 Flat och trend på marknaden. All handel strategier kan också konventionellt indelas i två huvudgrupper Den första gruppen innehåller plattorienterade strategier Huvudideen för sådana strategier är att efter ett uppenbart avvikspris måste återgå till föregående position, så beställer man order i strid med sista kursrörelsen De andra gruppstrategierna är trendstrategier när orderingången öppnas i samma riktning som saltprisrörelsen. Det finns mer komplicerade kombinerade strategier. Sådana strategier tar hänsyn till många olika faktorer som karakteriserar marknaden som ett resultat kan handel utföras både på platt och trend Det är inte svårt att genomföra handel enligt denna eller den strategiska tekniken - MQL4 innehåller alla nödvändiga medel för det. eation av en gång egen strategi består i att söka handelskriterier. Traderingskriterier. I det här exemplet kommer vi att försöka bygga en trend Expert Advisor, det vill säga den som kommer att öppna order i prisriktningsriktningen. Så måste vi hitta bland olika tekniska Indikatorer de som upptäcker en trendstart En av de enklaste metoderna för att söka handelskriterier är baserad på analysen av kombinationen av MA med olika medelvärden. Fig 111 och Fig. 112 visar läget för två olika MA med perioder av medelvärde 11 och 31 på olika marknadsdelar Medelvärden med liten medelstorlek De röda linjerna är närmare ett prisdiagram, vridigt och rörligt. Rörliga medelvärden med större genomsnittlig blå linje är mer inerta, har större fördröjning och ligger längre bort från marknadspriserna. Låt oss vara uppmärksamma på platser där MAs med olika medelvärden korsar och försöker bestämma om MA-korsningen kan användas som läsningskriterium. Fig 111 Korsning av MA 11 och MA 3 1 när prisriktningsriktningen ändras. I fig 111 ser vi en marknadsdel där öppningsorder i riktning mot prisrörelsen vid MA-kryssningen är motiverad. I punkt A passerar den röda linjen den blå från botten uppåt, därefter fortsätter marknadspriset att växa för en tid Ytterligare omvänd MA-kryssning anger prisändringsriktningsändringen Om vi ​​öppnar en köporder vid punkt A och stänger den vid B kommer vi att få vinst proportionell mot skillnaden mellan A - och B-priser. Fig 112 Korsning av MA 11 och MA 31 när kursrörelse ändras. Samtidigt finns det andra ögonblick på marknaden när MA cross, men det leder inte till ytterligare betydande prishöjningar eller faller. Fig 112 Beställningar som öppnats vid MA-kryssning vid sådana tillfällen leder till förluster Om säljning är öppnas vid A och stängs vid B kommer sådan handel att medföra förluster. Detsamma kan sägas om en köporder öppnad vid B och stängd vid C. Framgången för hela strategin implementerad på grundval av MA-korsning beror på antalet delar t hatt kan karakteriseras som trend och platt I ofta flat är MA Crossing en vanlig händelse som stör en trendstrategi. Många falska signaler leder som regel till förluster. Därför kan denna signering av MA med olika medelvärde användas för Bygga handelsstrategier endast i kombination med andra tecken som visar en trend I det här exemplet för att bygga en enkel expertrådgivare måste vi vägra använda detta tecken. Vi kommer att använda ett annat tecken Analysera visuellt karaktären av prisförändringar på marknaden, vi kan se det En lång enriktad prishöjning eller - nedgång framträder ofta som en följd av en kort stark rörelse Med andra ord, om en stark rörelse inträffade inom en kort period, kan vi förvänta oss att det fortsätter på en medellång sikt. Fig 113 Stark prisrörelse kan leda till en trendutveckling. Figur 113 visar marknadsperioden när en stark rörelse resulterade i fortsatt prisförändring i samma riktning. Eftersom en stark rörelse kan vi använda de olika Ence of MAs med olika medelvärden. Ju starkare rörelsen är, desto större är MAs fördröjning med större medelvärde från MA med en liten period av medelvärde. Dessutom resulterar även starka diskontinuerliga prisrörelser med ytterligare avkastning inte en stor skillnad mellan MAs , dvs många falska signaler visas inte till exempel Prishopp med 50 poäng med ytterligare avkastning i mitten i Fig 113 medförde en ökning av skillnaden mellan MAs endast med 20 poäng. Samtidigt är en riktigt stark rörelse som vanligtvis inte åtföljs av en betydande korrigering i punkt A resulterade i skillnaden ökar upp till 25-30 poäng. Om köporder öppnas när ett visst värde av skillnad mellan MAs uppnås, till exempel i A, kommer förmodligen ordern att bli lönsam när ett pris når en förinställt Stoppordningsvärde Låt oss använda detta värde som ett handelskriterium i vår Expert Advisor. Number of Orders. In detta exempel analyserar vi en expertrådgivare som medger att endast en m Arket order, väntande beställningar ges inte Ett sådant tillvägagångssätt är motiverat inte bara i det här visade exemplet, men kan användas som grund för någon strategi. Ordningsbeställningar används vanligen när en utvecklare har ett ganska pålitligt kriterium för att förutse framtida prisförändringar med stor sannolikhet Om det inte finns något sådant kriterium behöver man inte använda pågående order. Situationen när flera motsatta order för en säkerhet är öppna kan inte heller anses vara rimliga. Det var tidigare skrivet att från ekonomisk synvinkel motsatta order anses vara meningslösa , Särskilt om orderpriserna är lika, se Sluta och ta bort beställningar I så fall bör vi stänga en order av en annan och vänta på en signal för att öppna en marknadsordnad i en viss riktning. Beroende på handelskriterierna. Från denna position blir det klara vilka relationer som är möjliga mellan handelskriterierna Fig 114 visar tre varianter av korrelation av handelskriterier, när varje kriterium är viktigt giltigt Åtgärder o Penga och stängande marknadsordningar sker medsols på följande bilder. Fig 114 Beställningsöppnande och stängningskriterier korrelation a och b - korrekt, c - felaktigt. Den mest populära varianten av ett korrekt bildat handelskriterium är varianten a Efter att ha öppnats en marknad Order Köp hålls fram till det ögonblick då kriteriet kräver stängningsutlösare Efter det uppstår en paus när inga order öppnas Vidare en marknadsorder Sälj kan öppnas Villkor för stängning av Säljorder i enlighet med korrekt utformade kriterier förekommer tidigare än villkor för Öppna en köporder Men en order kan öppnas igen om ett handelskriterium kräver detta. Men enligt denna variant kan en marknadsorder inte öppnas om det finns en öppen marknadsorder i motsatt riktning. Lika kriterier är korrelationen i variant b Skillnaden är att ett kriterium för att öppna någon marknadsorder är samtidigt ett kriterium för att stänga motsatt ordning Denna variant som varianten nt a tillåter inte att flera beställningar öppnas i terminalen samtidigt på en säkerhet. Varianter av korrelationskriterium är felaktigt Enligt denna variant är öppnandet av en marknadsorder tillåtet när stridsbeställningar inte är stängda ännu, vilket är meningslöst. Det kan vara sällsynta fall när denna variant är delvis berättigad Öppning av en motsatt order är ibland acceptabel för att kompensera förluster som uppstår vid små korrigeringar efter starka prisrörelser. I sådana fall kan en motsatt order öppnas med samma eller mindre värde än den redan existerande och därefter Stängt när korrigeringen är över. En sådan taktik gör det möjligt att inte störa huvudordern som öppnas i trendriktningen. I allmänhet är flera enkla riktningar också möjliga. Det kan vara motiverat när en tidigare öppnad order skyddas av en Stop-order och kriteriet som pekar på prisutvecklingen i samma riktning utlöses än en gång. Men när man skapar en sådan strategi måste en utvecklare vara fullt medveten om att i händelse av en kraftig prisrörelseförändring kan de placerade stopporderna bli oexekverade av vissa mäklare vid första priskontrollen. Och förlusten kommer att stå i proportion till det totala värdet av enriktad marknadsorder. I vårt exempel använder vi variant b Av handelskriterier korrelation Alla öppnade marknadsordningar stängs antingen med en stopporder eller efter ett kriterium för att öppna en order i motsatt riktning utlöser kriteriet för stängning Köp sammanfaller med öppningsförsäljningen och vice versa. Size of Opened Orders. In any trading Strategibeställningsstorlekar bör vara rimligt begränsade I ett enkelt fall används en fast orderstorlek i en Expert Advisor Innan EA-driftsstart kan en användare ställa in eventuella storlekar av framtida beställningar och lämna det oförändrat under en längre tid. Om balans ändras kan en användare skapa ett nytt värde av mycket antal öppnade order. En för liten orderstorlek ger mer förtroende för driften vid oförutsägbar marknadsförändring, men vinsten vid framgång kommer inte att vara så stor e Om orderstorleken är för stor kan en stor vinst förvärvas, men en sådan EA kommer att vara för riskabel. Normalt är storleken på öppnade beställningar inrättad så att marginalkraven inte överstiger 2-35 procent av balansen eller fri marginal om en strategi tillåter endast en öppnad ordning, balans och fri marginal just nu innan orderöppningen blir lika. I detta exempel implementeras båda varianterna. En användare kan välja att antingen ange direkta värden av order eller ställa in värdet i procent från free margin. Programming Details. A simple trend Expert Advisor konstruerad på grundval av tidigare argument kan se ut så här. Describing Variables. One mer kriterium i program uppskattning är dess läsbarhet Ett program anses vara korrekt skrivet, om det lätt kan läsas av andra programmerare, det är därför som alla huvudprogramdelar och huvudmoment som karakteriserar strategin måste kommenteras. Det är också därför det rekommenderas att deklarera och kommentera alla variabler i början av progr Am. In block 1-2 beskrivs externa och globala variabler. Enligt regler måste externa och globala variabler öppnas innan deras första användning, se Typ av variabler, det är därför de deklareras i programhuvuddelen Alla lokala variabler av Funktionsstart samlas och beskrivs i det övre funktionsdelblocket 2-3 omedelbart efter funktionhuvudet Regler för att deklarera lokala variabler kräver inte det, men förbjuder inte heller om en programmerare har svårigheter att förstå betydelsen av en variabel när han läser programmet kan han referera till den övre programdelen och ta reda på betydelsen och typen av vilken variabel som helst. Det är mycket praktiskt i programmeringspraxis. Block av preliminär bearbetning. I detta exempel består förbehandlingen av två delar block 3-4 Programmet avslutas drift om det inte finns tillräckligt med staplar i ett säkerhetsfönster i så fall är det omöjligt att detektera i block 5-6 värden av rörliga medelvärden som är nödvändiga för att beräkna kriterierna A Förutom här analyseras värdet på det rörliga arbetet I den normala EA-operationen är det variabla värdet alltid sant det är inställt en gång under initialiseringen Om ett kritiskt fel uppstår i programoperationen är falskt tilldelat denna variabel och börjar slutföra sin funktion värdet kommer inte att förändras i framtiden, varför följande kod inte exekveras. I så fall måste programoperationen stoppas och orsaken till det kritiska felet måste detekteras vid behov, ett handelscenter måste kontaktas. När situationen är löst , kan programmet startas igen, det vill säga att EA kan fästas i ett säkerhetsfönster. Kontonbeställningar. Den beskrivna expertrådgivaren möjliggör endast att arbeta med en marknadsordnad. Uppgiften för orderbokningsblocket 4-5 är att definiera egenskaper hos en öppnad order, om det finns en I loop går order för alla befintliga marknader och väntande beställningar kontrolleras, nämligen från första int i 1 till den sista i lt Orders Orders Total i varje cy Klara iteration nästa ordning väljs med funktionen OrderSelect Valet sker från en källa till öppnade och väntande beställningar SELECTBYPOS. Om valet utförs framgångsrikt, det finns en order i terminalen, vidare måste denna order och situationen analyseras huruvida ordern öppnas för säkerheten, vid vilken EA opererar, om ordern är marknad eller väntande den måste också beaktas vid räkning av order i linjen. alla beställningar som öppnas för en annan säkerhet elimineras operatören fortsätter att stoppa iterationen och Egenskaper hos en sådan order behandlas inte. Men om ordern öppnas för säkerheten, till det fönster som EA är ansluten till, analyseras den vidare. Om OrderType returnerar värde mer än 1 se Typ av handel är den valda ordningen en I väntan på en Men i denna expertrådgivare som hanterar pågående beställningar tillhandahålls inte. Det innebär att genomförandet av start måste avslutas, eftersom en konfliktsituation inträffade i ett sådant fall efter ett meddelande om operationstermineringens startkörning stoppas av operatörens retur. Om den sista kontrollen visade att den analyserade ordern är en marknadsordnad beräknas och analyseras det totala antalet order för en säkerhet för den första av dessa order alla nödvändiga egenskaper definieras Om det i nästa iteration hittas ordningsräknaren variabel Total, finner den andra marknadsordningen, anses situationen också vara konflikt, eftersom EA inte kan hantera mer än en marknadsordning. I ett sådant fall upphör utförandet efter att ha visat ett motsvarande meddelande . Som ett resultat av orderbokföringsblocket genomfördes om alla kontroller var framgångsrika, variabeln Totalt bevarar sitt nollvärde om det inte finns några marknadsorder eller får värdet 1 om det finns en marknadsordning för vår säkerhet. I det senare fallet ställs vissa variabler i korrespondens med orderegenskaperna antal, typ, öppningspris, stoppnivåer och ordervärde får också sina värden. Beräkning av handelskriterier. I ana lyzed exempel definition av handelskriterier block 5-6 beräknas på grundval av skillnaden mellan rörliga medelvärden med olika perioder av medelvärde Enligt accepterade kriterier är ett diagram bull-directed om det nuvarande värdet för MA med mindre period är större än värdet av MA med större period och skillnaden mellan värdena är större än ett visst värde. I en björnrörelse är MA med mindre period lägre än MA med större period och skillnaden är också större än ett visst kritiskt värde. Vid blockets startvärden Av MAs med medelvärden Periodma1 och PeriodMA2 beräknas Faktumet av betydelsen av något handelskriterium uttrycks via värdet av en motsvarande variabel Variablerna OpnB och OpnS anger kriteriet utlösande för att öppna Köp och Sälj order, variabler Cl och ClsS - för stängning För Exempel, om ett kriterium för att öppna Köp inte har utlösts, förblir värdet för OpnB falskt inställt på variabelinitialiseringen om den har trig Gered, OpnB får värdet sant I det här fallet kriteriet för att stänga Sälj sammanfaller med det för att öppna Köp, kriterium för att öppna Sälj sammanfaller med det för att stänga Buy. Trading kriterier accepterade i detta exempel används endast för utbildningsändamål och får inte övervägas som riktlinje vid handel på ett riktigt konto. Avslutande beställningar. Det var tidigare skrivet att denna expertrådgivare endast är avsedd för drift med en marknadsordnad öppnad för en säkerhet, i vilket fönster EA bifogas till det ögonblick då kontrollen i programmet skickas till orderlåsningsblocket är det säkert säkert att det för närvarande inte finns några order på säkerheten eller det finns bara en marknadsordning. Därför skrivs koden i orderens stängningsblock så att endast en order kan stängs framgångsrikt. Detta block är baserat på oändlig slinga, vars kropp består av två analoga delar en för att stänga en köporder, en annan för att stänga en Säljorder medan används här för th e syfte att i händelse av ett fel i handeln kan det upprepas igen. I den första operatörens rubrik om villkoret för stängning av en köporder beräknas. Säljordningar stängs på analogt sätt. Om typen av en tidigare öppnad order motsvarar att köpa se typer av handel och tecknet för att stänga köpet är relevant, kontrollen överförs till kroppen om operatören där en förfrågan att stänga bildas som en order slutkurs i funktionen OrderClose värdet på ett dubbelsidigt citat som motsvarar beställningstypen är angivet se Krav och begränsningar i att göra affärer Om en handelstransaktion utförs framgångsrikt visas ett meddelande om orderavslutningen aktuell när iterationen stoppas och exekveringen av orderluckningsblocket är över Men om åtgärden misslyckas , den användardefinierade funktionen för att behandla fel FunError kallas block 10-11.Processing Errors. As en passerad parameter i FunError används den senaste felkoden beräknad av GetLastError Depe nding på felkoden FunError returnerar 1 om felet inte är kritiskt och åtgärden kan upprepas och 0 om felet är kritiskt. Kritiska fel är indelade i två typer - de, varefter ett programkörning kan fortsätta till exempel en vanligt fel och de efter vilka exekvering av eventuella handelsoperationer måste stoppas till exempel blockerat konto. if efter en misslyckad handelstransaktion returnerar den användardefinierade funktionen 1, strömmen medan iterationen avslutas och under nästa iteration görs ett annat försök för att utföra operationen - för att stänga ordern Om funktionen returnerar 0, stoppas nuvarande startkörning Vid nästa kryssningsstart startas av klientterminalen igen och om villkor för orderlåsning bevaras, kommer ett annat försök att stänga ordern görs. Om det under felbehandling upptäcks att ytterligare programkörning är meningslös, exempelvis fungerar programmet på en gammal klientterminalversion under nästa start t han utförandet av den speciella funktionstarten avslutas i blocket av preliminär bearbetning när man analyserar värdet av det variabla arbetet. beräkning av antal för nya order. Antalet partier kan beräknas i enlighet med en användares inställningar enligt en av de två varianter Den första varianten är ett visst konstant värde som upprättats av en användare Enligt den andra varianten beräknas mängden partier på grundval av en summa som är lika med en viss procentuell uppsättning av en användare av en fri marginal. I början av blocket för att definiera mängden partier för nya order block 7-8 är nödvändiga värden för vissa variabler beräknade - minimalt tillåtet antal partier och steg för lotbyte som upprättats av en mäklare, fri marginal och pris på ett parti för säkerheten. I det här exemplet tillhandahålls följande Om en användare har satt upp ett visst icke-nollvärde av den externa variabeln Lts, till exempel 0 5, accepteras den som mängden Lt när en handelsförfrågan för att öppna en order bildas om 0 är som signerad till Lts, är antalet partier Lts definierade på basis av variabel Prots procentsats, fri marginal och villkor som upprättats av en mäklare. Efter att Lts har beräknats utförs en kontroll Om detta värde är lägre än det minimala tillåtna värdet, det minimala tillåtna värdet accepteras men om fri marginal inte räcker, efter ett motsvarande meddelande, avslutas startkörningen. Opening Orders. The block of opening orders block 8-9 som blocket of opening orders är en oändlig loop medan i rubriken av den första operatören om villkoren för att öppna en köporder beräknas om det inte finns några order för säkerhetsvariabeln Totalt är lika med 0 och tecknet för att öppna en Köporder är relevant. OpnB är sant, kontrollen överförs till om operatörsorganet öppnar en order I ett sådant fall efter skattesatser är uppdaterade priser för stoppnivåer beräknade. Val av stoppnivåer fastställs initialt av en användare i externa variabler StopLoss och TakeProfit I allmänhet kan en användare ställa in värden för denna par Förutom att en mäklare kan ändra det minsta tillåtna avståndet vid något tillfälle är det ofta ett fall vid starka marknadsrörelser, till exempel före viktig pressrelease. Det är därför innan varje order öppnas måste stoppnivåer beräknas med hänsyn till värden ställer in en användare och det minimala tillåtna värdet som ställts in av en mäklare. För att beräkna stoppnivåer används den användardefinierade funktionen NewStop som en passerad parameter. Stoppnivåvärdet som en användare har bestämt används i NewStop först är det nuvarande minimala tillåtna avståndet beräknas Om värdet som ställts av en användare motsvarar kraven för en mäklare returneras detta värde Om det är mindre än det tillåtna värdet används det värde som en mäklare tillåter. Priserna på stoppförfrågningar beräknas från motsvarande dubbelsidiga citat se Krav och begränsningar i att göra affärer. En handelsförfrågan om att öppna en order bildas med funktionen OrderSend För beräkning av orderöppningspris och priser på stoppförfrågningar t han dubbelsidiga citatvärden som motsvarar beställningstypen används Om en handelstransaktion lyckades dvs serveren returnerade numret på en öppnad order efter ett meddelande om en lyckad orderöppning visas, startkörning är klar Om en order inte öppnades och klientterminalen returnerade ett fel, är felet behandlat enligt den tidigare beskrivna algoritmen. Några kodspecifika egenskaper. Den analyserade Expert Advisor-koden är inriktad på genomförandet av en viss strategi. Obs, vissa programlinjer innehåller variabler och beräkningar som skulle ändras om strategin ändrades. Till exempel enligt expertstrategin är expertrådgivaren utvecklad för att bara arbeta med en order. Det gick att använda den variabla biljetten både för identifiering av ett slutbeställningsnummer i block med stängning 6-7 och för Identifiering av en framgång av ett transaktionsexekvering när man öppnar en order i öppningsblocket 8-9 I detta fall är en sådan lösning acceptabel Howeve r om vi tar den analyserade koden som grund för genomförandet av en annan strategi, till exempel tillåter motsatta beställningar måste vi introducera en eller flera variabler för att kunna känna igen antalet öppna order och identifiera framgången för handeln. strategiska ändringar vi måste byta, kom och följ programliner som innehåller en del av logiken i källstrategin. Namnlösa: I orderbokningsblocket behöver vi inte avsluta programoperationen om det finns flera öppna order för en säkerhet. Dessutom är villkoren för öppning och stängning 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.

No comments:

Post a Comment