Saturday, 25 November 2017

Build din egen automatiserad handel system


MetaTrader 5 - Exempel Hur man gör en handelsrobot på nolltid för att göra en handelsrobot behöver du ett handelssystem Handel på finansiella marknader innebär många risker, inklusive den mest kritiska, risken att fatta fel handelsbeslut. Drömmen om varje näringsidkare är att hitta en handelsrobot. som alltid är i gott skick och inte utsatt för mänskliga svagheter - rädsla, girighet och otålighet. Varje nykomling vill få eller skapa ett tydligt och strikt handelssystem som kan presenteras i form av algoritmer och helt bli av med rutinverksamheten. Är det möjligt Ett handelssystem är ett nödvändigt villkor för att komma in på marknaden och det här systemet bör givetvis vara lönsamt. När nykomlingar kommer till marknaden är de vanligtvis överväldigade av den stora massan av information som är svår att förstå. Böcker och handlare forum kan ge lite hjälp i det fallet. Tyvärr är inte alla författare framgångsrika näringsidkare och inte alla framgångsrika handlare skrivböcker. Många särskilda webbresurser skapas bara för att tjäna vinst för sina ägare, eftersom det är mycket svårare att handla egna pengar än att utfärda prognoser och lära sig handelssystem. Varje näringsidkare ska självständigt överlåta alla steg i ett handelssystem. Det finns ett populärt ordspråk att det inte spelar någon roll vilket system du använder för handel, det viktigaste är att du verkligen bör handla enligt det systemet. Annars blir handel på marknaden en spelning med ett förutsägbart resultat. Trading Robots och Forex Forex marknaden är trodde att ha en bra likviditet. Dessutom tillåter det handel 24 timmar om dygnet, till skillnad från många andra marknader. Därför försöker många handlare göra handelsrobotar speciellt för Forex-marknaden, eftersom det erbjuder ett stort antal handelsinstrument. Men skeptiker hävdar att alla valutapar är starkt korrelerade med varandra och ger mycket låg volatilitet på marknaden. Men deras motståndare svarar att varje valutapar har sina egna funktioner och låg volatilitet kompenseras av en stor hävstångseffekt. Under alla omständigheter är Forex-instrument attraktiva för att göra handelsrobotar och de flesta anhängare av den automatiska handeln skarpa sina färdigheter på valutapar. MetaTrader 4 och MetaTrader 5 handelsterminaler är speciellt utformade för att enkelt utveckla automatiserade handelssystem men samtidigt är deras gränssnitt också bekvämt för manuell handel. Hur man börjar göra en handelsrobot Det finns många sätt att bygga ett automatiserat handelssystem. Vi beskriver bara några få större. Det första tillvägagångssättet ligger i matematik. En utvecklare försöker skapa en sorts ekvation som kan överväga många faktorer. Detta tillvägagångssätt bygger på en fast tro på att prisrörelser hanteras av en modell som kan hittas med hjälp av tillgängliga historiska data. I de flesta fall vet anhängarna av ett sådant tillvägagångssätt för mycket matte men vet ingenting om att inte vara intresserad av marknaden. Marknaden är en ren abstraktion, en typ av ett intellektuellt spel för dem. Detta tillvägagångssätt leder vanligtvis till många års studier och utveckling, medan ett bestämt resultat i form av ett fungerande automatiserat handelssystem inte är så viktigt. Det andra tillvägagångssättet är baserat på att studera marknadslagar. Inga försök görs för att förstå varför priset går upp eller ner när olika tekniska analysfigurer visas på ett diagram. Fördelen med detta tillvägagångssätt är att det inte kräver någon särskild kunskap om matematik och gör inga antaganden om marknadens drivkraft. Det är mest tydligt och bekvämt när man studerar handel. Det är mest populärt bland handlare som fick universellt erkännande. Nackdelen med tillvägagångssättet är nödvändigheten att ständigt följa alla nödvändiga symboler. Förr eller senare börjar en näringsidkare överväga automatisering av handelsprocesser och det mest betydande problemet framträder vid det tillfället komplexiteten att formalisera handelsregler när man försöker uttrycka dem i form av algoritmer. I vissa fall kan näringsidkare som försöker beställa en handelsrobot inte beskriva handelsregler och hitta gemensam grund med programmerare. Det tredje tillvägagångssättet är baserat på försöket att skapa en svart låda baserad på neurala nätverk med användning av färdiga verktyg som allmänt tillgängliga i specialprogram och matpaket. Skapandet av ett automatiserat handelssystem med elementen i den artificiella intelligensen är en spännande och utmanande uppgift även för nykomlingar, eftersom det inte kräver någon djup matematisk bakgrund eller programmeringserfarenhet - allting görs med hjälp av visuella hjälpmedel. En näringsidkare bör veta grunderna för tekniska indikatorer, ha förmåga att förbereda nödvändiga prisuppgifter och erfarenheter i ett visst paket för att arbeta med neurala nätverk. Den huvudsakliga nackdelen med detta tillvägagångssätt är att en handelsrobot som erhållits med hjälp av sådana specialverktyg för att arbeta med neurala nätverk är en svart låda. Traders känner inte till sina arbetsprinciper och det är i allmänhet omöjligt att förutsäga vilken marknadsfas som är mest problematisk för roboten. Programmerare väljer ofta det fjärde tillvägagångssättet som de börjar göra en handelsrobot från början utan att spendera tid för manuell handel. Varför handla manuellt Du kan göra en robot att spendera några månader och skörda fördelarna med dina ansträngningar då. Men inga smärtor, inga vinster. I de flesta fall börjar programmerare skapa all nödvändig infrastruktur med hjälp av ett välbekant programmeringsspråk i stället för att bara göra en handelsrobot för att få och bearbeta prisdata, visuell representation av diagram och indikatorer, anpassade metoder för teststrategier på historiska data och så vidare. De får stor erfarenhet av processen. Men i de flesta fall får den erfarenheten inte dem närmare det slutliga målet att skapa ett automatiserat handelssystem. Och även om en handelsrobot skapas finns ingen garanti för att det kommer att bli lönsamt. Och vad om en programmerare vill skriva ett annat handelssystem Djup omstrukturering och nya programmeringsfel är oundvikliga. Det finns också det femte tillvägagångssättet att köpa ett färdigt handelssystem i form av en handelsrobot. I detta fall fungerar en näringsidkare som en operatör eller en tuner. Detta tillvägagångssätt sparar mycket tid (inget behov av att lära sig många nya saker) och gör det möjligt för handlare att snabbt komma in i den automatiserade handelns värld. Den huvudsakliga nackdelen med detta tillvägagångssätt härrör från dess fördelar, du känner inte till principerna för din handelsrobot och dess struktur. Och även om en säljare har gett dig en detaljerad beskrivning av det implementerade handelssystemet, kommer du aldrig att vara helt säker på det. Men ingen av de nämnda metoderna kan ge dig absolut garanti utom en bankdeposition. Men det är inte en mycket lämplig lösning för personer intresserade av marknadshandel och sätt att öka sina privata tillgångar. Vad är den bästa metoden för den automatiska handeln för en handlare Var och en av de fem beskrivna metoderna har sina fördelar och motsvarar någon bestämd typ av näringsidkare. Det är osannolikt att du väljer den första metoden (marknadsanalys) utan god matematisk bakgrund. Det är lika osannolikt att du kommer att börja från att göra handelsrobotar baserade på neurala nätverk. Båda dessa tillvägagångssätt är dock mycket spännande och ger god intellektuell övning. Nedan diskuterar vi bara det andra tillvägagångssättet, vilket redan anses vara det klassiska. Det är det tillvägagångssätt som vanligtvis väljs av nya aktörer av den automatiserade handeln, eftersom den tekniska analysen förblir det viktigaste kunskapsområdet när man lär sig handelens grunder. En annan fördel med det andra tillvägagångssättet är att du redan har en bra förståelse för tekniska analysverktyg efter att du spenderat tid för manuell handel och få en känsla av marknaden. Dessutom kommer du att kunna programmera handelsstrategier eller skapa neurala nätverk på en högre nivå. De första stegen i att göra en handelsrobot För att skapa ett automatiserat handelssystem behöver du programmeringsförmåga och kunskap om alla komplexa handelsförfrågningar. Men först kan du börja från de färdiga Expert Advisors-robotarna från Free Code Base-biblioteket. Ladda ner någon expertrådgivare (handelsrobot) och starta den i strategitestaren för MetaTrader 4 eller MetaTrader 5-klientterminaler. Välj ett historikintervall som visar en stark trend och ett intervall med en platt. Utför optimering av en Expert Advisor-ingångsparametrar och granska deras skillnader vid dessa två intervaller. Starta en expertrådgivare med de optimala parametrarna för en platt på ett trendintervall och med de optimala parametrarna för en trend på ett platt intervall. Undersök skillnaderna i handelsresultat, erbjudanden fördelningar och andra statistiska parametrar. Som ett resultat kommer du att veta hur mycket ditt handelssystems beteende kan variera när marknadssituationen förändras. Det skulle vara bättre att prova flera vanliga handelsstrategier med hjälp av denna metod på olika delar av historien och olika symboler. En sådan provkörning förhindrar att man monterar ett handelssystem för ett visst historiskt intervall och ger bättre förståelse för trend - och motgångssystem. Nästa steg skulle vara att skapa mer komplexa handelssystem baserat på kombinationen av redan existerande enkla signaler från MQL5 Wizard-uppsättningen. Du kan testa och utveckla din handelsintuition genom att sortera ut dåliga signaler för ett system med ett filter baserat på ett annat system utan programmeringsmedel. Det viktigaste är att inte överhämta. Ju fler ingångsparametrar ett handelssystem har desto lättare är det att montera. Det har skett mycket diskussioner om skillnaderna mellan optimering och montering. Det finns inga allmänt accepterade lösningar här. Men visualisering av testoptimeringsresultat och din egen sunt förnuft kan hjälpa dig. Lär dig att identifiera de viktigaste ingångsparametrarna som påverkar ditt handelssystem från hela uppsättningen av inmatningsdata. Betala inte mycket uppmärksamhet åt sekundära parametrar som tar tid under optimering men påverkar inte systemets logik. Kom ihåg att ett bra handelssystem alltid visar en liten fri rörelse med sekundära parametrar, men det visar inte dramatisk volatilitet vid oövervägande marknadsförändringar. Du kan tillbringa så mycket tid på det här steget, som du vill, tills du är säker på att du kan förstå eventuella handelsstrategiska undersökningar och optimeringsresultat. Kunskapen om styrkor och svagheter i standardsystem gör att du kan bli bättre förberedd när du skapar din egen handelsrobot. Programmera en handelsrobot Anta att du har lärt dig att lära dig MQL4 eller MQL5 programmeringsspråk och nu är du redo att skriva din första Expert Advisor för MetaTrader klientterminal. Flera fall är möjliga här. Först kan du undersöka flera färdiga handelsrobotar som beskrivs i artiklarna för att bättre förstå programmeringsveckan. För det andra kan du ställa frågor om MQL4munity eller MQL5munity. om du har några olösta problem. Erfaren samhällsdeltagare hjälper vanligtvis de nykomlingar som visar uppriktigt intresse för ämnet. För det tredje kan du beställa imprpovement eller utveckling av en expertrådgivare eller en indikator i Jobbtjänsten. om du inte kan skriva ett nödvändigt program på egen hand. Men även om du beställer via freelance-tjänsten, borde du ha en aning om strategitestning för att hitta ett gemensamt språk med en utvecklare. Vidare tillåter grundläggande kunskaper i ett programmeringsspråk att du implementerar mindre korrigeringar och ändringar i koden efter det att arbetet redan har slutförts. När allt kommer omkring skulle det inte vara bekvämt att ringa en programmerare för att åtgärda varje litet problem du stöter på. Det skulle vara mycket enklare och snabbare att fixa det själv. Inget behov av att återfå hjulet Hur man hittar din egen handelsstrategi, eller åtminstone i vilken riktning ska du fokusera din sökning Alla handlare skyddar sina egna handelssystem, om de har en. Alla nykomlingar vill skapa ett lönsamt system eller få en färdig tillverkad. Samtidigt verkar någon erhållen lösning vara för enkel jämfört med nykomlingens idéer om ett äkta handelssystem. Armé män över hela världen är benägna att överdrivna nivåer av sekretess. Det finns många skämt om det, bland annat följande: Militärhemligheten ligger inte i det du studerar, - en officer säger till militärskolestudenter, - men i det faktum att du precis studerar det. Situationen med handelssystemen är lika stor: de flesta handlare använder enkla och välkända handelsideer med mindre ändringar, till exempel, lägger till Trailing Stop eller bekräftelser från trendindikatorer. Det finns gott om handelsforum med begränsad tillgång där deltagarna går med i deras ansträngningar att utveckla eller förbättra några hemliga handelssystem. Mest intressanta är att sådana system inte innehåller något speciellt alls. Vanligtvis används en välkänd idé (som handel med trenden) som utgångspunkt. Då är det perfekt med några nya indikatorer som är okända för allmänheten. Därför kan du enkelt använda tillgängliga koden för handelrobotar och försöka använda dem korrekt med olika symboler och tidsramar. Ett annat populärt ordstäv kan nämnas här: Du gillar inte katter Du vet bara inte hur man lagar mat Det är svårt att tro, men sannolikheten för att du kommer att utveckla något som är riktigt nytt är väldigt litet. Det viktigaste är att skapa ett system med tillgängliga ingredienser. Tänk inte att några genier har tillgång till några hemliga system från NASA-laboratorier. Det är Grays hemlighet. Bara ett fåtal kommer att göra det Genom varför använder ingen ingen handelsideer, om de är bokstavligen inom armarna? Svaret ligger antagligen i mänsklig psykologi. Personalen i många banker och stora investeringsfonder innefattar näringsidkare som utför avtal enligt strikta regler och inom begränsade volymer. Men av några skäl lämnar bara några institutionella handlare sina företag och börjar handla med sina egna pengar. Det visar sig att du inte bara behöver en handelsstrategi utan också järndisciplinen att följa den. Många handlare upptäckte med ånger att de också har samma psykologiska problem som beskrivs i böcker. Efter att ha insett att den värsta fienden av handlare är själva, börjar en nykomling tänka på att göra en handelsrobot för att eliminera en psykologisk börda. Även om jag avviker något från ämnet, bör jag nämna de legendariska sköldpaddshandlare som framgångsrikt handlas på flera marknader i slutet av 1900-talet. Läs vägen till sköldpaddan och du kommer se att det viktigaste för en näringsidkare är en självdisciplin och inte något topphemligt system. Tyvärr kommer de flesta nykomlingar inte att kunna följa en lönsam strategi, även om de får det gratis. Problemet är att de flesta handelsstrategier som är perfekt utrustade för manuell handel knappast kan formaliseras och transkriberas till ett programmeringsspråk. De strategier som lätt kan formaliseras (till exempel de som involverar två glidande medelvärden) är alltför enkla och kräver många förbättringar och förbättringar, så att de kan användas i praktiken. Således blir en enkel idé gradvis komplicerad av en mängd externa parametrar som förhindrar en handelsrobot från falska poster och fel som är tydligt synliga för en utvecklare. En handelsrobot optimeringsfråga framträder. Denna process bör inte bli en överoptimering och anpassning för ett visst historikintervall. För att lösa detta problem har framåtprovningen med de erhållna systemparametrarna implementerats i MetaTrader 5-terminalen. Om de framåtriktade testresultaten inte skiljer sig avsevärt från de som uppnåtts i optimeringsdelen, är det sannolikt att en handelsrobot kommer att vara tillräckligt stabil för en tid efter lanseringen på ett handelskonto. En längd av ett intervall för parametraroptimering och ett verkligt värde av det en viss tid beror på ett visst handelssystem. Optimeringen av en handelsrobot innan den lanseras på ett handelskonto påminner om att slingra slingan - ju mer noggrant har vi lindat och slängt en projektil från slingan, desto längre kommer den att flyga och ju mer exakt dess bana kommer att vara. En grundligt utvecklad handelsrobot kommer att hålla ett positivt resultat på ett handelskonto under en längre tid än en handelsrobot som erhållits som ett resultat av en montering. Vi kan säga att gralen är en fungerande idé och korrekt justering av parametrar som utförs från tid till annan vid tidpunkten för marknadsförhållandena ändras. Detta kan illustreras av resultaten från Automated Trading Championship som hålls i många år redan. Inlämnad expertrådgivare av alla deltagare går igenom automatiska tester på tidsintervallet från januari till slutet av juli. Huvudkravet för att passera det automatiska testet är en vinst som uppnåtts för åtta månaders testning. Men mindre än hälften av handelsrobotar som antas för mästerskapet är lönsamma efter dig månader av autonomt arbete. Du kan också prova dina färdigheter när du gör och anpassar din handelsrobot för att delta i Championship och få framåtprovningsresultat från din expertrådgivare. Dessutom är deltagandet gratis och utmärkelserna är imponerande. Vi hoppas att vi ses där Konklusion Professionella intradaghandlare spenderar många timmar sittande på sina datorer och väntar på rätt ögonblick att genomföra en affär. Naturligtvis kan de inte vara i god form hela tiden. De flesta handlare kommer till slutsatsen att deras handlingar bryter mot sina egna handelsregler. Inte alla handelssystem kan vara helt formaliserade, men även sådana system kan i de flesta fall anta ytterligare verktyg, såsom indikatorer, analytiska system och falska signaler. Vi gör inga speciella rekommendationer här om MQL4 eller MQL5 språkinlärning, eftersom det finns många andra användbara artiklar om det ämnet. Syftet med den här artikeln var att ge en första inledande idé om hur man börjar göra din handelsrobot för MetaTrader 4 och MetaTrader 5 terminaler. Vi hoppas att denna artikel kommer att spara tid för nykomlingar och visa rätt riktning i den svåra uppgiften att utveckla ett automatiserat handelssystem. Varning: Alla rättigheter till dessa material är reserverade av MQL5 Ltd. Det är förbjudet att kopiera eller skriva ut dessa material helt eller delvis. Hur man bygger ditt eget automatiserade handelssystem i Python Hur man bygger ditt eget automatiserade handelssystem i Python Course Overview: I det här seminariet lär du dig att utveckla dina egna valutapar, CFD och handelsautomatiserade handelssystem med Python och Oanda-plattformen. I slutet av seminariet kommer du att kunna: Få en hjortförståelse för Python och dess ekosystem Använda Oanda-plattformen och dess API Utdrag levande marknadsräntor Ladda ner en lista över överförbara instrument (valutapar, CFD och råvaror) på Oanda Plattform Hämta kontoinformation, marginal utnyttjad, öppna order. Kursöversikt: I det här seminariet lär du dig att utveckla dina egna valutapar, CFD och handelsautomatiserade handelssystem med Python och Oanda-plattformen. I slutet av seminariet kommer du att kunna: Få en hjortförståelse för Python och dess ekosystem Använda Oanda-plattformen och dess API Utdrag levande marknadsräntor Ladda ner en lista över överförbara instrument (valutapar, CFD och råvaror) på Oanda Platform Hämta kontoinformation, marginalanvändning, öppna order, öppna affärer, realiserad och orealiserad vinst och förlust Skapa och hantera öppna order Utför handelshantering (övervaka, ändra eller stäng) Utför samlad positionshantering (övervaka, ändra eller stäng) Ladda ner transaktionshistorik för ytterligare analys Ström levande marknadsräntor Detta seminarium presenteras av Anthony Ng, NYP-föreläsare. Anthony Ng: är en docent vid Nanyang Polytechnic undervisningsbank, finans, investering och portföljförvaltning. Han hjälper Quantopian att genomföra algoritmiska handelsverkstäder i Singapore och har presenterat i nyligen QuantCon Singapore 2016 om ämnet Time Series Momentum. Passionate med ekonomi, datavetenskap och python, tyckte Anthony om att forska, undervisa och dela på dessa ämnen. Anthony studerade Masters of Science i finansiell teknik vid NUS Singapore. Du kan nå eller spåra honom på: 8 deltagare (30 inbjudna) MetaTrader 5 - Exempel Skapa din egen handelsrobot i 6 steg En gång om MQL5-guiden Världen runt oss förändras snabbt och vi försöker hålla fast vid det. Vi har inte tid att lära oss något nytt, och det här är en normal inställning till en normal människa. Handlare är människor precis som alla andra, de vill få maximala resultat för minsta ansträngning. Speciellt för handlare erbjuder MetaEditor 5 en underbar MQL5-guide. Det finns flera artiklar som beskriver hur man skapar ett automatiserat handelssystem med hjälp av guiden, inklusive en lätt version MQL5 Wizard for Dummies och en version från utvecklare - MQL5 Wizard: New Version. Allt verkar bra - en handelsrobot skapas med 5 musklick, du kan testa den i Strategitestaren och optimera parametrarna för ett handelssystem. Du kan låta den resulterande roboten handla på ditt konto utan att behöva göra något annat manuellt . Men problemet uppstår när en traderMQL5-utvecklare vill skapa något av sig själv, något unikt som aldrig har beskrivits någonstans, och kommer att skriva en egen modul av handelssignaler. Näringsidkaren öppnar MQL5-dokumentationen, kommer till Standardbiblioteket och är förskräckt att se. Fem hemska klasser Det är sant att MQL5-guiden förenklar skapandet av expertrådgivare, men först måste du lära dig vad som ska användas som input för det. För att automatiskt skapa en expertrådgivare med hjälp av guiden MQL5, se till att dess komponenter följer fem grundläggande klasser i avsnittet Basklasser av expertrådgivare: CExpertBase är en basklass för fyra andra klasser. CExpert är klassen för att skapa en handelsrobot det här är den klass som handlar. CExpertSignal är en klass för att skapa en modul för handelssignaler som artikeln handlar om den här klassen. CExpertTrailing är en klass för att efterlämna ett skyddande stoppförlust. CExpertMoney är pengestyrningsklassen. Här är hela kraften i det stora och hemska tillvägagångssättet som kallas Objektorienterad programmering (OOP). Men var inte rädd, nu har nästan alla en mobiltelefon med mycket funktion, och nästan ingen vet hur det fungerar. Vi behöver inte studera allt detta, vi diskuterar bara några funktioner i CExpertSignal-klassen. I den här artikeln kommer vi att gå igenom stadierna för att skapa en modul för handelssignaler. och du kommer att se hur man gör det utan att behöva lära sig OOP eller klasserna. Men om du vill kan du gå lite längre än. 1. Skapa en klass från grunden Vi kommer inte ändra någon befintlig modul för handelssignaler till våra behov, för det är vägen att bli förvirrad. Därför ska vi helt enkelt skriva vår egen klass, men först använder vi navigatorn för att skapa en ny mapp för att lagra våra signaler i MQL5IncludeExpert. Högerklicka på den mapp vi har skapat, välj Ny fil och skapa en ny klass för vår modul för handelssignaler. Fyll i fälten: Klassnamn - klassens namn. Detta kommer att vara en modul för att generera signaler vid korsningen mellan två glidande medelvärden, så vi kan namnet MACross. Basnamn är klassen från vilken vår klass är härledd. Och vi borde härleda det från basklassen CExpertSignal. Klicka på Slutför och ett utkast till modulen är klar. Dess hela öst så långt. Vi behöver bara lägga till deklarationen till den resulterande filen så att kompilatören vet var du ska hitta basklassen CExpertSignal Kontrollera den resulterande klassen (den måste vara fri från kompileringsfel) och klicka på F7. Det finns inga fel och vi kan fortsätta. 2. En hantering av modulen Vår klass är helt tom, den har inga fel och vi kan testa det. Vi kan försöka skapa en ny expertrådgivare i MQL5-guiden baserat på den. Vi når steget att välja en modul för handelssignaler och se. att vår modul inte finns där. Och hur kan det vara där? Vi lägger inte till några indikationer för MQL5-guiden för att förstå att vår klass kan vara något användbart. Låt oss fixa det här. Om du tittar på modulerna i standardpaketet ser du att var och en innehåller en rubrik i början av filen. Detta är handtaget i modulen som sammanställts enligt vissa regler. Och reglerna är väldigt enkla. Öppna till exempel källkoden för modulen för AMA-baserade handelssignaler (se logikbeskrivningen i Signalerna för det adaptiva rörliga genomsnittet.) Och kör MQL5-guiden som väljer den här modulen. Jämför: Det sista blocket i handtaget refererar till modulparametrarna, den första raden innehåller namnet på modulen som ska visas i MQL5-guiden. Som ni kan se finns det inget komplicerat. Således innehåller handtaget i varje modul följande uppgifter: Titel - Modulnamnet som ska visas i MQL5-guiden. Typ - versionen av modulen för signaler. Det måste alltid vara SignalAdvanced. Namn - namnet på modulen efter det att det har valts i guiden MQL5 och används i kommentarerna för att beskriva interna parametrar för den genererade expertrådgivaren (helst angiven). ShortName - ett prefix för automatisk namngivning av externa parametrar i den genererade expertrådgivaren (i form av SignalltShortNamegtltParameterNamegt). Klass - namnet på, som finns i modulen. Sida - en parameter för att få hjälp för den här modulen (endast för moduler från standardleverans). Därefter kommer beskrivningen av parametrarna i form av Parameterlistofvalues, där följande anges (kommaseparerat): Funktionsnamnet för att ställa in parametervärdet när Expert Advisor startas. Parametertypen kan vara uppräkning. Standardvärdet för parametern, det vill säga det värde som kommer att ställas in till parametern, om du inte ändrar det i guiden MQL5. Beskrivning av parametern, som du ser när du startar expertrådgivaren som genereras i guiden MQL5. Nu vet vi allt detta, vi kan skapa handtaget i vår modul för handelssignaler. Så, vi skriver en modul för att få handelssignaler vid korsningen av två glidande medelvärden. Vi måste ange minst fyra externa parametrar: FastPeriod - Perioden för det snabbrörande medlet FastMethod - Typen av utjämning av det snabbrörande medeltalet SlowPeriod - Perioden för det långsamma glidmedlet SlowMethod - Typen av utjämning av det långsamma glidgruppen Du kan också lägga till ett skifte och typen av priser för att beräkna var och en av de glidande medelvärdena, men det ändrar inte någonting fundamentalt. Så nuvarande version är följande: Modulhandtaget är klart, och vi har beskrivit följande i det: Namnet som visas i MQL5-guiden - Signaler vid korsningen mellan två glidande medelvärden. Fyra externa parametrar för att konfigurera handelssignalerna. FastPeriod - Perioden för det snabbrörande medlet med standardvärdet på 13. FastMethod - Typen av utjämning av snabbglidande medelvärde, enkel utjämning som standard. SlowPeriod - perioden för det långsamma glidande medlet med standardvärdet på 21. SlowMethod - typ av utjämning av det långsamma glidmedlet, enkel utjämning som standard. Spara ändringarna och kompilera. Det borde inte finnas några fel. Kör MQL5-guiden för att kontrollera. Du ser, vår modul är nu tillgänglig för val och det visar alla våra parametrar Grattis, vår modul för handelssignal ser bra ut nu 3. Metoder för inställning av parametrar Nu är det dags att arbeta med de externa parametrarna. Eftersom vår handelsmodul representeras av klassen MACross, måste parametrarna lagras i samma klass som privata medlemmar. Låt lägga till fyra rader (lika med antalet parametrar) till klassdeklarationen. Weve har redan beskrivit parametern i handtaget och vet följande: Men hur visas värdena på modulernas externa parametrar i lämpliga medlemmar i vår klass MACross. Det är helt enkelt, du behöver bara förklara offentliga metoder med samma namn i klassen, nämligen att lägga till fyra rader till den offentliga sektionen: När du genererar en expertrådgivare på grundval av denna modul med hjälp av MQL5-guiden och kör den på diagrammet kallas dessa fyra metoder automatiskt när du initierar expertrådgivaren. Så här är en enkel regel: Regeln för parameterskapande i modulen - för varje parameter som vi har förklarat i handtaget ska vi skapa en privat medlem i klassen för att lagra dess värde och en allmän medlem för att ställa in ett värde till det . Metodnamnet måste matcha parameterns namn. Och sista stunden är att ange standardvärden för våra parametrar som kommer att användas om metoderna för värdeinställningen inte kallas. Varje deklarerad variabel eller klassmedlem måste initialiseras. Denna teknik gör det möjligt att undvika många svåra att hitta fel. För automatisk initialisering är den bästa passande en klasskonstruktor, det är alltid den första som ska kallas när man skapar ett objekt. För standardvärden använder vi de som skrivs i modulhandtaget. Här initialiseras klassmedlemmarna med hjälp av initialiseringslistan. Som vi kan se har vi inte använt glidande medelindikatorer än. Vi hittade en enkel regel - så många parametrar anges i modulens handtag, så många metoder och medlemmar borde vara i klassen som implementerar modulen. Det finns inget komplicerat. Glöm inte att ställa in parametervärden för parametrar på konstruktören. 4. Kontrollera inmatningsparametrarnas korrekthet Vi har skapat parametrar för vår handelsmodul, skrivna metoder för att ställa in värden för dem och nu kommer nästa viktiga fas - korrektheten av parametrar måste kontrolleras. I vårt fall måste vi kontrollera perioderna för glidande medelvärden och typen av utjämning för deras beräkning. För detta ändamål bör du skriva din egen ValidationSettings () metod i klassen. Denna metod definieras i föräldraklassen CExpertBase. och i alla sina barn är det obligatoriskt omdefinierat. Men om du inte vet något om objektorienterad programmering, kom ihåg bara - i vår klass borde vi skriva funktionen ValidationSettings (), som inte kräver några parametrar och returnerar sant eller falskt. Som du kan se, har vi i den offentliga delen av MACross klassen lagt till deklarationen av metoden ValidationSettings () och sedan lagt till metodkroppen i följande formulär: Först kommer returtypen, då klassnamnet och sedan upplösningsoperatören. och allt detta följs av namnet på den tidigare deklarerade metoden. Glöm inte att namn och typ av parametrar måste matcha i deklarationen och beskrivningen av klassmetoden. Kompilatorn kommer dock att varna dig för ett sådant fel. Observera att först basklassmetoden heter, och sedan matas parametrarna in. Om du inte lägger till den här raden kommer den genererade Expert Advisor inte att kunna initiera vår modul för handelssignaler. 5. Var är våra indikatorer Det är dags att arbeta med indikatorerna, eftersom allt förberedande arbete med parametrarna för dem har slutförts. Varje modul av handelssignaler innehåller metoden InitIndicators () som automatiskt kallas när du kör den genererade expertrådgivaren. I denna metod måste vi tillhandahålla indikatorer på glidande medelvärden för vår modul. Förklara först InitIndicators () - metoden i klassen och klistra in sitt utkast: Så det finns inget komplicerat, vi förklarar metoden och sedan skapar vi metodkroppen, som vi gjort för metoden ValidationSettings (). Glöm inte framför allt att ange klassnamnet och operatören. i funktionsdefinitionen. Vi har ett utkast, som vi kan infoga i en kod för att skapa glidande medelvärden. Låt oss göra det ordentligt - för varje indikator skapar vi en separat funktion i klassen, som returnerar sant om det lyckas. Funktionen kan ha något namn, men låt det återspegla sitt syfte, så vi kan ringa funktionerna CreateFastMA () och CreateSlowMA (). Det är allt vi behöver bara skriva kod som genererar MA-indikatorerna och på något sätt integrerar handtagen av dessa indikatorer i handelsmodulen, så att modulen kan använda värdena för dessa indikatorer. Det är därför som en pekare till en variabel av typen Cindicators skickas som en parameter. Följande är skrivet i Dokumentation om det: Cindicatorerna är en klass för att samla instanser av timeseries och tekniska indikatorer klasser. Cindicators-klassen skapar instanser av tekniska indikatorkurser, lagring och hantering (datasynkronisering, hantering och minneshantering). Det innebär att vi måste skapa våra indikatorer och placera dem i denna samling. Eftersom endast indikatorer på CIndicator-formuläret och dess barn kan lagras i samlingen borde vi använda detta faktum. Vi kommer att använda CiCustom. vilket är ovannämnda barn. För varje glidande medel deklarerar vi ett objekt av typen CiCustom i den privata delen av klassen: Naturligtvis kan du skapa din egen indikatorklass, vilken kommer att härledas från Cindicator. och implementera alla nödvändiga metoder för användning med MQL5-guiden. Men i det här fallet vill vi visa hur du kan använda någon anpassad indikator i modulen för handelssignaler med hjälp av CiCustom. Hittar hur det ser ut i koden: I metoden CreateFastMA (), kolla först pekaren på indikatorns samling och lägg sedan till en pekare av den snabba MA mfastma till den här samlingen. Anmäl då MqlParam-strukturen, som är speciellt utformad för att lagra parametrar för anpassade indikatorer och fylla den med värden. Vi använder Custom Moving Average från standardterminalleveranspaketet som den anpassade MA-indikatorn. Navnet på indikatorn måste anges i förhållande till mappen datafolderMQL5Indicators. Eftersom Custom Moving Average. mq5 från standardpaketet finns i datafolderMQL5Indicators Examples, specificerar vi dess sökvägen inklusive exemplet mappen: Om du tittar på koden för denna indikator kan du se alla nödvändiga data: Strukturens värden innehåller typvärdespar: parametertyp - sträng (för att överföra indikatorens namn) namnet på den körbara filen för den anpassade indikatorn - Custom Moving Averages. exe-parametertyp - int (värde av perioden) - perioden för den glidande genomsnittliga parametern typ-int (skiftvärde) horisontellt förskjutning av medelvärdet i streckparametertypen - int (talvärde är ett heltal) metoden för medelvärde Efter att ha fyllt på strukturen initieras indikatorn med metoden Skapa () för alla önskade parametrar: symbol namn och tidsramen som den beräknas på, typen av indikatorn från ENUMINDICATOR-uppräkningen, antalet indikatorparametrar och MqlParam-strukturen med parametervärden. Och den sista anger hur många indikatorbuffertar som används med NumBuffers () - metoden. Metoden CreateSlowMA () för att skapa det långsamma glidmedlet är enkelt. När du använder anpassade indikatorer i modulen, glöm inte att den expertrådgivare som genereras av MQL5-guiden också kommer att köras i testaren. Så i början av vår fil lägger vi till testerindikatorn för fastighetsegenskaper som kommunicerar till testaren med platsen för nödvändiga indikatorer: Om vi ​​använder flera olika indikatorer bör vi lägga till den här raden för var och en av dem. Så vi har lagt till indikatorerna. För mer bekvämlighet kan vi ge två metoder för att ta emot MA-värden: Som du kan se är metoderna mycket enkla, de använde GetData () - metoden i parentes klassen SIndicator, som returnerar ett värde från den angivna indikatorbufferten vid den angivna positionen . Om du behöver klasser för att arbeta med klassiska indikatorer på standardpaketet, finns de i avsnittet Klasser för att arbeta med indikatorer. Vi är redo att gå vidare till slutskedet. 6. Definiera LongCondition och ShortCondition Metoder Allt är redo att göra vår modul arbete och generera handelssignaler. Denna funktionalitet tillhandahålls av två metoder som måste beskrivas i varje barn av CExpertSignal. LongCondition () kontrollerar köpvillkoren och returnerar styrkan hos Långsignalen från 0 till 100. ShortCondition () - kontrollerar försäljningsförhållandet och returnerar styrkan hos kortsignalen från 0 till 100. Om funktionen returnerar ett nullvärde betyder det att det inte finns någon handelssignal. Om det finns förutsättningar för signalen kan du uppskatta signalens styrka och returnera ett värde som inte överstiger 100. Utvärdering av signalstyrkan gör att du flexibelt kan bygga handelssystem baserat på flera moduler och marknadsmodeller. Läs mer om detta i MQL5 Wizard: Ny version. Eftersom vi skriver en enkel modul av handelssignaler kan vi komma överens om att köp - och säljsignalerna värderas lika (100). Låt oss lägga till nödvändiga metoder i klassdeklarationen. Låt oss också skapa beskrivning av funktioner. Så här kontrolleras köpsignalen (det är densamma med säljsignalen): Observera att vi har deklarerat idx-variabeln, till vilken värdet returneras av funktionen StartIndex () i föräldraklassen CExpertBase är tilldelad. Funktionen StartIndex () returnerar 0, om Expert Advisor är utformad för att fungera på alla fästingar, och i det här fallet börjar analysen med den aktuella fältet. Om Expert Advisor är utformad för att fungera till öppna priser, returnerar StartIndex () 1 och analysen börjar med den sista formade fältet. Som standard returnerar StartIndex () 1. vilket innebär att Expert Advisor som genereras av MQL5 Wizard endast körs vid öppnandet av en ny stapel och kommer att ignorera inkommande fästingar under bildandet av den aktuella fältet. Hur man aktiverar det här läget och hur det kan användas beskrivs senare i efterbehandlingsslaget. Modulen är klar för användning, så vi kan skapa en handelsrobot i MQL5-guiden baserat på den här modulen. Kontrollera en expertrådgivare i testaren För att testa effektiviteten hos vår modul kan vi generera en expertrådgivare baserat på den i MQL5-guiden och köra den på diagrammet. Fliken Inmatningar i det uppkomna startfönstret innehåller parametrarna för MACross-modulen. Alla andra parametrar har också lagts till av MQL5 Wizard samtidigt som EA bygger på den valda pengestyrningsmodulen och positioneringsmodulen (Trailing Stop). Således var vi bara tvungna att skriva en modul av handelssignaler och fick en klar lösning. Detta är den största fördelen med att använda MQL5-guiden Nu kan vi testa handelsroboten i MetaTrader 5 Strategy Tester. Låt oss försöka lösa en snabb optimering av nyckelparametrar. I dessa inställningar av ingångsparametrar krävs mer än en halv miljon passeringar för full optimering. Därför väljer vi snabb optimering (genetisk algoritm) och använder dessutom MQL5 Cloud Network för att påskynda optimeringen. Optimeringen har gjorts inom 10 minuter och vi har fått resultaten. Som du kan se har skapandet av en handelsrobot i MQL5 och optimering av ingångsparametrar tagit mycket mindre tid än vad som skulle krävas för att skriva positionslogik, felsökning och sökning efter de bästa algoritmerna. Du kan hoppa över det här objektet eller gå tillbaka till det senare när du är helt bekväm med tekniken att skriva en modul för handelssignaler. Om du öppnar källkoden för Expert Advisor genererad av MQL5 Wizard hittar du den globala variabel ExpertEveryTick med det falska värdet. Baserat på denna variabel returnerar funktionen StartIndex () sitt värde. Den kommunicerar med Expert Advisor det sätt som det ska köras in. Om du ställer in ExpertEveryTick true och sammanställer koden, analyserar handelsroboten varje inkommande fält och gör därmed beslut på värdena för den aktuella ofullständiga fältet. Gör detta bara om du förstår hur det fungerar. Inte alla handelssystem är utformade för att arbeta inne i baren. Du kan också lägga till en nyckelordsinmatning för ExpertEveryTick-parametern, och då får du en ny ingångsparameter från Expert Advisor. som du kan ställa in på EA-start på ett diagram eller i testaren: Och nu är det dags att sammanfatta vad vi har gjort. 6 steg för att skapa en modul för handelssignaler Om du har behärskat MQL5, behöver du inte längre skriva en expertrådgivare från början. Skapa bara en modul för handelssignaler och, baserat på denna modul, genererar automatiskt en handelsrobot med de aktiverade efterföljande och handelsvolymhanteringsmodulerna. Och även om du inte är bekant med OOP eller inte vill dyka mycket in i handelsklassens struktur, kan du bara gå igenom 6 steg: Skapa en ny klass med hjälp av MQL5-guiden i en separat mapp MQL5IncludeMySignals. Vår modul för handelssignaler lagras där. Skapa ett modulhandtag som beskriver parametrarna, deras typ och standardvärden. Förklara modulparametrar i klassen och lägg till metoder för initialisering i konstruktorn. Kontrollera ingångsparametrarna och glöm inte att ringa ValidationSettings () i CExpertSignal-basklassen. Skapa indikatorobjekt och lägg till en fördefinierad initialiseringsmetod InitIndicators (). Identifiera villkoren för handelssignaler i metoderna LongCondition () och ShortCondition (). Varje steg är enkelt och kräver lite skicklighet i MQL5 programmering. Du behöver bara skriva din modul en gång och följa anvisningarna, och ytterligare verifiering av varje handelside kommer inte att ta mer än en timme utan tröttsamma timmar med kodning och felsökning. Från Enkel till Komplex Kom ihåg att handelsstrategin som implementerats av din handelsrobot skapad med hjälp av MQL5-guiden, är lika komplicerad som modulen för handelssignaler som den använder. Men innan du börjar bygga ett komplext handelssystem baserat på en uppsättning regler för inresa och utgång, dela den in i flera enkla system och kontrollera var och en separat. Baserat på enkla moduler kan du skapa komplexa handelsstrategier med hjälp av färdiga moduler av handelssignaler, men det här är ett ämne för en annan artikel. Traderingssystemkodning Handelssystem är helt enkelt uppsättningar regler som handlare använder för att bestämma sina poster och utgångar från en position. Att utveckla och använda handelssystem kan hjälpa traderna att uppnå jämn avkastning samtidigt som riskbegränsningen begränsas. I en idealisk situation bör handlare känna sig som robotar, genomföra affärer systematiskt och utan känslor. Så, kanske har du frågat dig själv: Vad ska man göra för att stoppa en robot från att handla mitt system Svaret: Ingenting Denna handledning kommer att presentera dig för de verktyg och tekniker som du kan använda för att skapa ditt eget automatiserade handelssystem. Hur skapas automatiserade handelssystem Automatiserade handelssystem skapas genom att konvertera dina regler för handelssystem till kod som din dator kan förstå. Din dator kör sedan dessa regler genom din handelsprogramvara, som söker efter affärer som följer dina regler. Slutligen placeras handeln automatiskt med din mäklare. Denna handledning kommer att fokusera på andra och tredje delen av denna process, där dina regler omvandlas till en kod som din handelsprogramvara kan förstå och använda. Vad Trading Software stöder automatiserade handelssystem Det finns många handelsprogram som stöder automatiserade handelssystem. Vissa kommer automatiskt generera och placera affärer med din mäklare. Andra kommer automatiskt hitta affärer som passar dina kriterier, men kräver att du lägger orderna med din mäklare manuellt. Dessutom kräver helt automatiska handelsprogram ofta att du använder specifika mäklarfirmor som stöder sådana funktioner, du kan också behöva fylla i ett ytterligare tillståndsformulär. Fördelar och nackdelar Automatiserade handelssystem har flera fördelar, men de har också sina nackdelar. När allt kommer omkring, om någon hade ett handelssystem som automatiskt tjänade pengar hela tiden, skulle han eller hon bokstavligen ha en penningmaskin. Fördelar: Ett automatiserat system tar emot känslan och upptagen arbete, vilket gör att du kan fokusera på att förbättra din strategi och penninghanteringsregler. 13 När ett lönsamt system har utvecklats krävs det inget arbete för din del förrän det bryts eller marknadsförhållanden kräver en förändring. Nackdelar: Om systemet inte är korrekt kodat och testat kan stora förluster uppstå väldigt snabbt. 13 Ibland är det omöjligt att sätta vissa regler i kod, vilket gör det svårt att utveckla ett automatiserat handelssystem. I denna handledning lär du dig att planera och designa ett automatiserat handelssystem, hur man översätter den här designen till kod som datorn kommer att förstå, hur man testar din plan för att säkerställa optimal prestanda och slutligen hur man använder systemet. Systemhandlare delar upp sin tid mellan handel, utveckling, backtesting, optimering och vidarebefordran, för att skapa lönsamma och höga sannolikhetssystem för handel. Automatiserad valutahandelsprogramvara skannar marknaden för gynnsamma affärer baserat på din insats. Ta reda på mer om detta värdefulla forexverktyg. Ett handelssystem kan spara tid och ta emot känslorna ur handel, men adoptera man tar skicklighet och resurser - lära sig mer här. De flesta mäklare kommer att förse dig med handelsrekord, men det är också viktigt att hålla reda på dig själv. Programvaran har gjort daghandel snabbt och automatiskt - desto större anledning är att vara så noggrann som möjligt när du väljer rätt för dina behov. Vanliga frågor Termen ekonomisk vallgrav, myntade och populariserad av Warren Buffett, avser en affärsförmåga att behålla konkurrensfördelar. Lär dig skillnaderna mellan generella partnerskap och partnerskap med begränsat ansvar varje typ har unika egenskaper, fördelar. Upptäck SampP 500s historia, vilka sofistikerade marknadsaktörer anser vara det bästa indexet att förstå. Ta reda på vilka länder som har de mest restriktiva importtullar på internationella produkter, baserat på data som samlats in av. Vanliga frågor Termen ekonomisk vallgrav, myntade och populariserad av Warren Buffett, avser en affärsförmåga att behålla konkurrensfördelar. Lär dig skillnaderna mellan generella partnerskap och partnerskap med begränsat ansvar varje typ har unika egenskaper, fördelar. Upptäck SampP 500s historia, vilka sofistikerade marknadsaktörer anser vara det bästa indexet att förstå. Ta reda på vilka länder som har de mest restriktiva importtullar på internationella produkter, baserat på data som samlats in av.

No comments:

Post a Comment