Tuesday, 14 November 2017

Enkel handelssystem amibroker


Så här optimerar du handelssystemet OBS! Det här är ganska avancerat ämne. Läs först tidigare AFL-tutorials först. Tanken bakom en optimering är enkel. Först måste du ha ett handelssystem, det här kan vara en enkel glidande genomsnittlig crossover till exempel. I nästan alla system finns det några parametrar (som medelvärde) som bestämmer hur givet system fungerar (det vill säga är väl lämpat för långsiktig eller kort sikt, hur reagerar det på mycket volatila bestånd osv.). Optimeringen är processen att hitta optimala värden för dessa parametrar (ger högsta vinst från systemet) för en given symbol (eller en symbolportfölj). AmiBroker är ett av de få program som tillåter dig att optimera ditt system på flera symboler samtidigt. För att optimera ditt system måste du definiera från en upp till tio parametrar som ska optimeras. Du bestämmer vad som är ett minimum och maximalt tillåtet värde för parametern och i vilka steg detta värde ska uppdateras. AmiBroker utför sedan flera backtester systemet med ALLA möjliga kombinationer av parametervärden. När processen är klar visar AmiBroker listan över resultat sorterade efter nettoresultatet. Du kan se värdena för optimeringsparametrar som ger det bästa resultatet. Skrivning AFL-formel Optimering i backtester stöds via ny funktion som kallas optimera. Syntaxen för den här funktionen är följande: variabel optimera (variabel Beskrivning, standardminimum, maxsteg) variabel - är normal AFL-variabel som får tilldelas det värde som returneras genom att optimera funktionen. Med normal backtesting, scanning, exploration och comentary mode returnerar funktionen optimalt standardvärdet, så ovanstående funktionssamtal motsvarar: variabel standard Optimeringsfunktionen optimerar funktionen returnerar successiva värden från min till max (med) med stegsteg. quot Descriptionquot är en sträng som används för att identifiera optimeringsvariabeln och visas som ett kolumnnamn i listan över optimeringsresultat. standard är ett standardvärde som optimerar funktionsavkastningen i prospektering, indikator, kommentar, skanning och normala backtestlägen min är ett minimivärde av variabeln som optimeras max är ett maximivärde av variabeln som är optimerad steg är ett intervall som används för att öka värde från min till max AmiBroker stöder upp till 64 samtal för att optimera funktionen (därför upp till 64 optimeringsvariabler), notera att om du använder uttömmande optimering är det väldigt bra att begränsa antalet optimeringsvariabler till bara få. Varje samtal för att optimera generera (max - min) stegoptimeringsloops och flera samtal för att optimera multiplicera antalet körningar som behövs. Om du exempelvis vill optimera två parametrar med 10 steg krävs 1010 100 optimeringsslingor. Samtal optimera funktionen endast ENT per variabel i början av din formel eftersom varje samtal genererar en ny optimeringslopp Multiplikationsoptimering stöds fullt ut av AmiBroker Maximalt sökutrymme är 2 64 (10 19 10.000.000.000.000.000.000.000) kombinationer 1. Enstaka variabeloptimering: sigavg Optimera (Signalvärde. 9. 2. 20. 1) Köp kors (MACD (12. 26), Signal (12. 26. sigavg)) Sälj kors (Signal (12. 26. sigavg), MACD (12. 26)) 2. Optimering av två variabler (lämplig för 3D-kartläggning) per Optimera (per 2. 5. 50. 1) Nivåoptimera (nivå 2. 2. 150. 4) Köp kors (CCI (per), - nivå) Sälj Cross (Level, CCI (per)) 3. Multiple (3) variabel optimering: mfast Optimera (MACD Fast. 12. 8. 16. 1) mslow Optimera (MACD Slow. 26. 17. 30. 1) sigavg Optimera genomsnittlig. 9. 2. 20. 1) Köp kors (MACD (mfast, mslow). Signal (mfast, mslow, sigavg)) Sälj kors (Signal (mfast, mslow, sigavg), MACD F Ormula klicka bara på Optimera-knappen i quotAutomatic Analysisquot-fönstret. AmiBroker kommer att börja testa alla möjliga kombinationer av optimeringsvariabler och rapportera resultaten i listan. Efter att optimeringen är klar presenteras listan över resultat sorterat efter nettoresultatet. Eftersom du kan sortera resultaten med någon kolumn i resultatlistan är det enkelt att få de optimala parametrarna för lägsta drawdown, lägsta antal affärer, största vinstfaktor, lägsta marknadsexponering och högsta riskjusterade årliga avkastning. De sista kolumnerna i resultatlistan presenterar värdena för optimeringsvariabler för givna test. När du bestämmer vilken kombination av parametrar som passar dina behov är det bästa du behöver göra för att ersätta standardvärdena för att optimera funktionssamtal med optimala värden. I nuvarande skede måste du skriva dem manuellt i formulärredigeringsfönstret (den andra parametern för att optimera funktionssamtal). Visar 3D animerade optimeringsdiagram För att visa 3D optimeringsdiagram måste du först springa två variabler optimering. Två variabla optimeringar behöver en formel som har 2 Optimize () funktionssamtal. Ett exempel på två variabla optimeringsformler ser ut så här: per optimera (per 2. 5. 50. 1) nivåoptimera (nivå 2. 2. 150. 4) köp kors (CCI (per), - nivå) (Nivå, CCI (per)) När du har angett formeln måste du klicka på quotOptimizequot-knappen. När optimeringen är klar bör du klicka på nedåtpilen på Optimera-knappen och välja Visa 3D-optimeringsgraf. På några sekunder visas en färgstark tredimensionell yta i ett 3D-kartfönster. Ett exempel 3D-diagram genererat med ovanstående formel visas nedan. Som standard visar 3D-diagrammen värden på nettovinsten mot optimeringsvariabler. Du kan dock plotta 3D-ytplan för varje kolumn i optimeringsresultattabellen. Klicka bara på kolumnrubriken för att sortera den (den blå pilen visas som visar att optimeringsresultat sorteras efter vald kolumn) och sedan välja Visa 3D optimeringsgraf igen. Genom att visualisera hur din systemparametrar påverkar handelsprestanda kan du lättare bestämma vilka parametervärden som producerar quotfragilequot och som producerar quotrobustquot systemprestanda. Robusta inställningar är regioner i 3D-grafen som visar gradvis snarare än abrupta förändringar i ytan. 3D optimeringsdiagram är ett utmärkt verktyg för att förhindra kurvmontering. Kurvmontering (eller överoptimering) inträffar när systemet är mer komplext än det behöver vara och all den komplexiteten är inriktad på marknadsförhållanden som aldrig kan hända igen. Radikala ändringar (eller spikar) i 3D optimeringsdiagrammen visar tydligt överoptimeringsområden. Du bör välja parameterregion som producerar en bred och bred platå på 3D-diagrammet för ditt verkliga handel. Parametersatser som producerar vinstspikar fungerar inte på ett tillförlitligt sätt i verklig handel. 3D-kartvisare kontroller AmiBrokers 3D-kartvisare erbjuder totalt visningsförmåga med full grafrotation och animering. Nu kan du se dina systemresultat från alla tänkbara perspektiv. Du kan styra positionen och andra parametrar i diagrammet med hjälp av mus, verktygsfält och tangentbordsgenvägar, oavsett vad du tycker är lättare för dig. Nedan hittar du listan. - för att rotera - håll ner VÄNSTER musknapp och flytta i XY riktningar - för att zooma in, zooma ut - håll nere höger musknapp och flytta i XY riktningar - Flytta (översätt) - håll ned VÄNSTER musknapp och CTRL-tangent och flytta i XY riktningar - för att animera - håll ner VÄNSTER musknapp, dra snabbt och släpp knappen medan du drar SPACE - animera (rotera automatiskt) VÄNSTER PIL SÖK - rotera vert. vänster höger piltangent - rotera vert. Höger UPP PIL TAST - Rotera horisonten. upp NER PIL SÖK - rotera horisonten. ner NUMPAD (PLUS) - Nära (Zooma in) NUMPAD - (MINUS) - Långt (Zooma ut) NUMPAD 4 - Gå till vänster NUMPAD 6 - Flytta åt höger NUMPAD 8 - Flytta upp NUMPAD 2 - Flytta ner SIDA UPP - Vattennivå upp PAGE DOWN - Vattennivå ner Smart (icke-uttömmande) optimering AmiBroker erbjuder nu smart (icke-uttömmande) optimering utöver regelbunden och uttömmande sökning. Icke-uttömmande sökning är användbar om antalet parametrar i ett givet handelssystem är helt enkelt för stort för att vara genomförbart för uttömmande sökning. Uttömmande sökning är helt bra så länge det är rimligt att använda det. Låt oss säga att du har 2 parametrar vardera från 1 till 100 (steg 1). Det är 10000 kombinationer - helt ok för uttömmande sökning. Nu med 3 parametrar har du 1 miljon kombinationer - det är fortfarande OK för uttömmande sökning (men kan vara lång). Med 4 parametrar har du 100 miljoner kombinationer och med 5 parametrar (1..100) har du 10 miljarder kombinationer. I så fall skulle det vara för tidskrävande att kontrollera dem alla, och det här är det område där icke-uttömmande smarta sökmetoder kan lösa det problem som inte är lösbart i rimlig tid med hjälp av uttömmande sökning. Här är absolut den enklaste instruktionen hur man använder ny, icke-uttömmande optimeringsapparat (i detta fall CMA-ES). 1. Öppna din formel i Formula Editor 2. Lägg till den här raden längst upp i din formel: OptimizerSetEngine (quotcmaequot) Du kan också använda quotspsoquot eller quottribquot här 3. (Valfritt) Välj ditt optimeringsmål i Automatisk analys, Inställningar, quotWalk - Forwardquot-fliken, Optimeringsmålfält. Om du hoppar över det här steget kommer det att optimera för CARMDD (sammansatt årlig avkastning dividerad med maximal drawdown). Nu om du kör optimering med hjälp av denna formel, kommer den att använda ny evolutionär (icke-uttömmande) CMA-ES optimizer. Hur fungerar det Optimeringen är processen att hitta minsta (eller maximala) givna funktion. Alla handelssystem kan betraktas som en funktion av ett visst antal argument. Ingångarna är parametrar och citatdata. utmatningen är ditt optimeringsmål (säg CARMDD). Och du letar efter maximal given funktion. Några av smarta optimeringsalgoritmer bygger på natur (djurbeteende) - PSO-algoritm eller biologisk process - Genetiska algoritmer, och vissa är baserade på matematiska begrepp som härrör från människor - CMA-ES. Dessa algoritmer används i många olika områden, inklusive ekonomi. Ange quotPSO financequot eller quotCMA-ES financequot i Google och du hittar mycket information. Icke-uttömmande metoder (eller quotsmartquot) kommer att hitta globala eller lokala optimala. Målet är givetvis att hitta den globala, men om det finns en enda skarp topp ut ur zillionsparameterkombinationer, kan icke-uttömmande metoder misslyckas med att hitta denna enda topp, men om den är en form av handlare, är det inte värt att hitta en enda skarp topp. Handel eftersom det resultatet skulle vara instabilt (för ömtåligt) och inte replikerbart i verklig handel. I optimeringsprocessen letar vi ganska efter platåregioner med stabila parametrar och detta är det område där intelligenta metoder lyser. När det gäller algoritmen som används av icke-uttömmande sökning ser det ut som följande: a) Optimiseraren genererar en del (vanligen slumpmässig) startpopulation av parameteruppsättningar b) Backtest utförs av AmiBroker för varje parameteruppsättning från befolkningen c) Resultaten av backtest är utvärderas enligt algoritmens logik och ny befolkning genereras baserat på utvecklingen av resultaten, d) om det nya bäst finns - spara det och gå till steg b) tills stoppkriterierna är uppfyllda Exempel på stoppkriterier kan innefatta: a) att nå specificerat maximala iterationer b) stoppa om intervallet av de bästa objektivvärdena för de senaste X-generationerna är noll c) sluta om man lägger till 0,1 standardavvikelsevektor i någon huvudaxelriktning ändrar inte värdet av objektivvärdet d) andra För att använda smart (icke - uttömmande) optimator i AmiBroker måste du ange optimeringsmotorn du vill använda i AFL-formeln med OptimizerSetEngine-funktionen. Funktionen väljer extern optimeringsmotor definierad med namn. AmiBroker skickas för närvarande med 3 motorer: Standard Particle Swarm Optimizer (quotspsoquot), Stammar (quottribquot) och CMA-ES (quotcmaequot) - namnen i axlar ska användas i OptimizerSetEngine-samtal. Förutom att välja optimeringsmotor kanske du vill ställa in några av dess interna parametrar. För att göra så använd funktionen OptimizerSetOption. OptimizerSetOption (quotnamequot, value) funktion Funktionen anger ytterligare parametrar för extern optimeringsmotor. Parametrarna är motorberoende. Alla tre optimeringsmedel som skickas med AmiBroker (SPSO, Trib, CMAE) stöder två parametrar: quotRunsquot (antal körningar) och quotMaxEvalquot (maximal utvärdering (test) per enskild körning). Uppförandet av varje parameter är motorberoende, så samma värden kan och brukar ge olika resultat med olika motorer som används. Skillnaden mellan Runs och MaxEval är som följer. Utvärdering (eller test) är enkel backtest (eller utvärdering av objektivt funktionsvärde). RUN är en full körning av algoritmen (att hitta optimalt värde) - vanligtvis med många test (utvärderingar). Varje körning återställer helt enkelt hela optimeringsprocessen från den nya början (ny initial slumpmässig population). Därför kan varje körning leda till att hitta annan lokal maxmin (om den inte hittar global). Så Runs parameter definierar antal efterföljande algoritm körningar. MaxEval är det maximala antalet utvärderingar (bactests) i en enda körning. Om problemet är relativt enkelt och 1000 tester är tillräckliga för att hitta global max, är 5x1000 mer sannolikt att hitta globalt maximalt eftersom det finns mindre chanser att fastna i lokal max eftersom efterföljande körningar kommer att starta från olika initiala slumpmässiga populationer. Val av parametervärden kan Vara knepig. Det beror på problem under testet, dess komplexitet osv. Varje stokastisk icke-uttömmande metod ger dig ingen garanti för att hitta global maxmin, oavsett antal test om det är mindre än uttömmande. Det enklaste svaret är att. Ange så många test som det är rimligt för dig när det gäller den tid som krävs för att slutföra. En annan enkel råd är att multiplicera med 10 antalet tester med att lägga till en ny dimension. Det kan leda till överskattning av antal prov som krävs, men det är ganska säkert. Avsända motorer är konstruerade för att vara enkla att använda, därför används kvotvärdesavvärdena defaulautomatiska värden, så optimering kan vanligtvis köras utan att ange något (accepterar standardinställningar). Det är viktigt att förstå att alla smarta optimeringsmetoder fungerar bäst i kontinuerliga parametrar och relativt smidiga objektivfunktioner. Om parameterutrymme är diskreta evolutionära algoritmer kan ha problem med att hitta optimalt värde. Det är särskilt sant för binära parametrar - de passar inte för någon sökmetod som använder gradienten av objektiv funktionsförändring (som de flesta smarta metoder gör). Om ditt handelssystem innehåller många binära parametrar, bör du inte använda smart optimizer direkt på dem. Istället försöker du optimera endast kontinuerliga parametrar med smart optimizer och byta binära parametrar manuellt eller via externt skript. SPSO - Standard Particle Swarm Optimizer Standard Particle Swarm Optimizer bygger på SPSO2007-kod som ska producera bra resultat förutsatt att korrekta parametrar (dvs Runs, MaxEval) tillhandahålls för ett speciellt problem. Att välja rätt alternativ för PSO optimizer kan vara svårt, därför kan resultaten skilja sig väsentligt från fall till fall. SPSO. dll levereras med fullständiga källkoder i quotADKquot-undermappen. Exempelkod för Standard Particle Swarm Optimizer: (Hitta bästa värde i 1000 test inom sökutrymmet på 10000 kombinationer) OptimizerSetEngine (quotspsoquot) OptimizerSetOption (quotRunsquot, 1) OptimizerSetOption (quotMaxEvalquot, 1000) sl Optimera (quotsquot, 26, 1, 100, 1 ) fa Optimera (quotfquot, 12, 1, 100, 1) Köp Cross (MACD (fa, sl), 0) Sälj Kors (0, MACD (fa, sl)) TRIBES - Adaptiv Parameter-Less Particle Swarm Optimizer Stammar är adaptiva , Parameter-mindre version av PSO (partikel swarm optimering) icke-uttömmande optimizer. För vetenskaplig bakgrund se: particleswarm. infoTribes2006Cooren. pdf I teorin borde det fungera bättre än vanlig PSO, eftersom det automatiskt kan justera svärmstorleken och algoritmstrategin för att problemet ska lösas. Praktiken visar att dess prestanda är ganska lik PSO. Stammen DLL-plugin implementerar quotTribes-Dquot (dvs dimensionell) variant. Baserat på clerc. maurice. free. frpsoTribesTRIBES-D. zip av Maurice Clerc. Ursprungliga källkoder som används med tillstånd från författaren Tribes. DLL levereras med fullständig källkod (inuti quotADKquot-mappen) Stödda parametrar: quotMaxEvalquot - maximalt antal utvärderingar (backtests) per körning (standard 1000). Du bör öka antalet utvärderingar med ökande antal dimensioner (antal optimeringsparametrar). Standard 1000 är bra för 2 eller maximalt 3 dimensioner. quotRunsquot - antal körningar (omstartar). (standard 5) Du kan lämna antalet körningar till standardvärdet på 5. Standard antal körningar (eller omstart) är inställt på 5. För att använda Stammaroptimering behöver du bara lägga till en rad i din kod: OptimizerSetOption (quotMaxEvalquot , 5000) 5000 utvärderingar max CMA-ES - Covariance Matrix Adaptation Evolutionär Strategi Optimizer CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) är avancerad, icke-uttömmande optimizer. För vetenskaplig bakgrund se: bionik. tu-berlin. deusernikocmaesintro. html Enligt vetenskapliga riktmärken överträffar nio andra, mest populära evolutionära strategier (som PSO, Genetisk och Differential evolution). Bionik. tu-berlin. deusernikocec2005.html CMAE. DLL-plugin implementerar quotGlobalquot-variant av sökning med flera omstart med ökande populationstorlek CMAE. DLL levereras med fullständig källkod (inuti quotADKquot-mappen) Som standard är antalet körningar (eller omstartar) inställda till 5. Det rekommenderas att lämna standardnumret för omstart. Du kan variera det med OptimizerSetOption (quotRunsquot, N) call, där N ska ligga inom intervall 1..10. Att ange mer än 10 körningar rekommenderas inte, även om det är möjligt. Observera att varje körning använder TWICE storleken på befolkningen i föregående körning så att den växer exponentiellt. Därför slutar med 10 körningar med befolkningen 210 större (1024 gånger) än första försöket. Det finns en annan parameter quotMaxEvalquot. Standardvärdet är NOLL vilket innebär att plugin automatiskt beräknar MaxEval som krävs. Det rekommenderas att INTE definiera MaxEval själv som standard fungerar bra. Algoritmen är smart nog för att minimera antalet utvärderingar som krävs och det konvergerar mycket snabbt till lösningspunkten, så det hittar ofta lösningar snabbare än andra strategier. Det är normalt att plugin kommer att hoppa över några utvärderingssteg, om det upptäcker att lösningen hittades, därför borde du inte bli förvånad över att optimeringsfältet kan röra sig mycket snabbt vid vissa punkter. Pluggen har också förmåga att öka antalet steg över initialt uppskattat värde om det behövs för att hitta lösningen. På grund av dess adaptiva karaktär är den kvotestimerade tiden kvarvarande kvoten och eller kvoten av stegquot som visas av framdriftsdialogen endast kvot gissning vid timequot och kan variera under optimeringskursen. För att använda CMA-ES optimeringsprogrammet behöver du bara lägga till en rad i din kod: Detta kommer att köra optimeringen med standardinställningarna som är bra för de flesta fall. Det bör noteras, som det är fallet med många continouos-space-sökalgoritmer, att den minskande quotstepquot-parametern i Optimize () funciton-samtal inte signifikant påverkar optimeringstiderna. Det enda som betyder något är problemet quotdimensionquot, dvs antalet olika parametrar (antal optimera funktionssamtal). Antalet quotstepsquot per parameter kan ställas in utan att påverka optimeringstiden, så använd den finaste upplösningen du vill ha. I teorin borde algoritmen kunna hitta lösningar på högst 900 (N3) (N3) backtests där quotNquot är dimensionen. I praktiken konvergerar det en hel del snabbare. Till exempel kan lösningen i 3 (N3) dimensionsparametrarutrymme (säg 100100100 1 miljoner uttömmande steg) hittas i så få som 500-900 CMA-ES-steg. Multi-threaded individuell optimering Börjar från AmiBroker 5.70 utöver multi-symbol multithreading. Du kan utföra multi-threaded single-symbol optimering. För att komma åt den här funktionaliteten klickar du på nedrullningspilen bredvid quotOptimizequot-knappen i fönstret Ny analys och välj Citat för individuell optimering. quotIndividual Optimizequot kommer att använda alla tillgängliga processorkärnor för att utföra enkelsymboloptimering, vilket gör det mycket snabbare än vanlig optimering. I quotCurrent symbolquot läge utförs optimering på en symbol. I alla symboler och quotFilterquot-lägen bearbetas alla symboler i följd, dvs första fullständiga optimering för första symbolen, optimering på andra symbol etc. Begränsningar: 1. Anpassad backtester stöds INTE (ännu) 2. Smart optimeringsmotorer stöds INTE - Endast EXHAUSTIVE optimering fungerar. Så småningom kan vi bli av med begränsning (1) - när AmiBroker ändras så använder inte custom backtester OLE längre. Men (2) är förmodligen här för att stanna länge. 14 oktober 2011 Tillagd 29 februari 2012, ytterligare poäng att tänka på: 1) Systemet beror på att du får korrekta fyllningar vid det öppna priset. För att erhålla sådana fyllningar krävs ett kvalitetsfördröjande dataflöde och avancerad programmeringsförmåga för att genomföra handelsautomatisering. 2) När inmatningspriset ligger något under det öppna priset (försöker förbättra prestanda) misslyckas systemet misslyckat. Att förbättra priset med bara en cent dödar systemet. Detta tyder på att det mesta av vinsten kommer från dagar då det öppna priset var lika med det dagliga Låg, dvs priset gick upp från det öppna och aldrig sjunkit under det. Detta är förstås uppenbart. För att bekräfta detta lade jag till detta testvillkor (det ser framåt) för att utesluta dagar där Open Low: Köp Köp OCH NOT O L Detta dödar systemet och visar att det mesta av vinsten kommer från dagar där OL. För att ytterligare bekräfta detta lade jag till det motsatta villkoret: Köp Köp OCH O L Det ger nästan oändliga vinster och visar att de flesta vinster kommer från dagar då priset flyttas omedelbart från Öppet och aldrig återvänder under det. Att försöka förbättra ingångspriset är ett misstag som man borde ange på en Stop-uppsättning 1-2 ct över det öppna priset, vilket kommer att eliminera dagar när priset sjunker och aldrig vänder tillbaka. Detta förbättrar prestanda betydligt. 3) Detta system handlar knä-jerk trader-responsespatterns. Sådana mönster drunknar vanligtvis med stor volymhandel, vilket innebär att systemet fungerar mycket bättre när du väljer ticker med volymer mellan 500 000 och 5 000 000 aktier. Detta förbättrar också prestanda betydligt. Lägga till ovanstående två egenskaper ger en egenkapitalkurva mycket bättre än den som visas nedan. Tyvärr, jag har ingen tid att dokumentera ovanstående i större detalj. Lycka till Det här inlägget skisserar en mycket enkel långsiktigt handelside som köper till en viss procentandel under yesterday8217s Låg och avslutar nästa dag8217s Öppna. Medan det ibland kan vara svårt att få exakt öppet pris, gör det höga lönsamheten för detta system en bra kandidat för ytterligare experiment. Systemet fungerar bra med klocklistor som N100, SP500, SP1500, Russel 1000 etc. Prestanda på Russel 1000, med max. Öppna positioner som är inställda på 1, för perioden 12102003 till 12102011, ser så här ut: Några av de andra tittlistorna ger mindre exponering (vinst) men det här kommer med lägre DD. Provisionerna fastställdes till 0,005 per aktie. Ingen marginal används. Ingen explicit rankning används tickers handlas baserat på deras alfabetiska sortering i Watchlist. Detta kan tyckas udda men är signifikant: Omvänd denna typ av system misslyckas. Detta kan innebära att på grund av realtidsskanningsproblem kan symboler som listas överst i denna sort handlas annorlunda än de som anges längst ner. Var uppmärksam på Liquidity (du kanske vill handla mer än en position) och släppa (Inträde är ganska riskfritt, men utgångar kan vara problematiska). DD är signifikanta men kan kompenseras med förbättrade realtidshandlade poster och utgångar. När du handlar automatiskt kan det vara möjligt att placera OCA DAY-LMT-postorder för alla signaler och bara vänta och se vad som fyller. Eftersom utgångar är svårare än poster kanske du vill utforska andra exitstrategier. Parametervärdena väljs bara ut ur en hatt. Nästan säkert kan du optimera dem eller justera dem dynamiskt för enskilda tickers. Jag testade detta system kort i Walk-Forward-läget och resultaten var lönsamma för alla testade år. Med undantag för antalet aktier handlas parametrar inte särskilt kritiska. Överoptimering doesn8217t verkar vara ett problem i det här fallet. Koden nedan är väldigt enkel och kräver få förklaringar. Det är dock viktigt att förstå att detta system har en liten kant genom att handla på Open, och genom att beräkna TrendMA med samma Open-pris. Vissa kan tolka detta som framtida läckage, men om du handlar detta system i realtid, så är det inte. Många inser inte att om du handlar på Open, kan du även använda det här priset i dina beräkningar 8212 så länge du utför dem i realtid 8212 här kan AmiBroker och teknik ge dig en kant. Om du Ref () tillbaka TrendMA med en stapel är systemet fortfarande mycket lönsamt, men DDs ökar för vissa Watchlists. Om du använder fasta investeringar är skillnaden försumbar. Handelsförfarandet skulle vara att börja skanna innan marknaden öppnas och ta bort ticker som är prissatta så avlägsna att de osannolikt inte kommer att möta OpenThresh. Således kan du börja skanna 1000 symboler men snabbt kommer det skannade numret att minska till bara ett dussin eller så tickers. När du närmar dig 9:30 kommer din realtidsskanning att bli mycket snabb och du kommer att kunna placera din LMT-order mycket nära Open 8211 du kan till och med kunna förbättra på det öppna priset. Även om ett fåtal personer tittade på koden nedan och inte hittade något fel verkar vinsten ganska hög för ett så enkelt system. Var god rapportera om fel som du kan se. Filed by Herman at 7:03 pm under Ideas (Experimental) Comments Off på EOD Gap-Trading Portfolio-systemet den 1 september 2011 Denna idé publicerades (161332) på den viktigaste AmiBroker-listan den 3 juli 2011. Det fanns många utmärkta kommentarer om listan och om du är intresserad av att arbeta med det här systemet gör du det bra att läsa dem alla innan du börjar. Efter inlägget hittade jag ett antal inlägg på webben som diskuterade denna handelsidee. Några hävdade att de skulle handla ett liknande system med god framgång. Jag hänvisade till detta system ett 8220Gap Trading8221-system men det kan vara lite av en missnöje, 8220Mean reversion8221 kan vara en bättre klassificering. Googling för det kommer att få dig många fler träffar till liknande system. Här är några länkar: Det verkar vara en ganska diskuterad handelside och jag föreslår att du gör några Googling på egen hand för att lära dig det senaste. Som Amibroker-användare har du bättre verktyg än de flesta handlare och du har en bättre chans än de flesta för att komma med en variation som fungerar. Kanske med lite mindre vinst och med en betydande mängd ytterligare kod 8212 vann det8217t ett projekt av 8220quicky8221 :-) Vissa människor kommenterade att detta system inte kommer att fungera i verklig handel, medan de kanske är rättvisa andra säger ordningar som detta arbete. Jag slutade inte systemet och kan göra anspråk på att veta om det kan handlas eller inte. Systemet köper med en viss procentandel under yesterday8217s Låg, på en LMT-order och går ut på samma dag i Stäng. Filed by Herman at 6:53 pm under Ideas (Experimental) Comments Off på en långsiktig EOD Gap-handelside Jag använder ett litet inställningskriterium för att söka efter mina aktier. MACD-standard, jag letar efter Histogram 4 nedåtfält och 1 uppstång för köpsignal (jag har histogrammet satt till rött för ner och blå för att jag kan se klart). MACD över Zero Line RSI ovanför 30 Detta system baserar sig på trendhandel. Köper på pullback när marknaden fortsätter sin trend. Så här söker du efter MACD Trend-inställningar: 1) Sätt följande formel i ett diagram. 2) Kör en skanning i AA med SMACDTrend med alla symboler. n sista dagarna. n 1 och Sync chart på välj som inställningar. Lager som uppfyller kriterierna kommer att rapporteras i resultatlistan. Obs! Vissa varianter av installationsreglerna kan definiera signaler som är ganska sällsynta och i små databaser är det möjligt att det inte finns några inställningar på en given dag (sålunda kommer inga lager att rapporteras av skanningen). 3) Klicka på någon symbol i resultatfönstret för att visa diagrammet, för den symbolen, i bakgrunden. Obs! I det här exemplet användes en träningsdatabas, som bara innehåller data upp till 5112007. Trading idé av protraderinc. Kommentarer och formel enligt Bill 8211 WaveMechanic. Arkiverad av brianz klockan 11:06 under Idéer (Experimentell) Kommentarer Off på MACD Trend System 14 oktober 2007 Filed by brianz at 10:43 pm under Ideas (Experimental) Comments Off på 15 Day Performers Trading System 19 augusti 2007 Detta är Den första i en serie från KISS (håll det enkelt, dumt) handelsideer för att du ska leka med. Alla systemidéer som presenteras här är okända, oavslutade och kan innehålla fel. De är avsedda att visa möjliga mönster för vidare prospektering. Som alltid är du inbjuden att kommentera och eller lägga till egna idéer till den här serien. Jag föredrar realtidssystem som handlar snabbt, är automatiserade och saknar traditionella indikatorer. Företrädesvis bör de inte ha några optimerbara parametrar, men jag kan inte alltid kunna uppfylla detta mål. Inte alla system kommer att vara så enkla kommer det att finnas några som använder enkla medelvärden eller HHVLLV typfunktioner. Det första systemet som visas nedan är en kopia av det demosystem som jag använder för att utveckla handelsautomationsrutiner på andra ställen på denna sida. Real-Time Gap-Trading. För att se hur det fungerar ska du Backtest det på 1 minuters data med en periodicitet inom 5-60 minuter. Ditt första intryck kan vara att dessa vinster helt enkelt beror på en uppåtgående marknad, men det faktum att Lång och Kort vinst är ungefär tyder på att det finns mer till det. Eftersom 98 av alla affärer hamnar mellan 9:30 och 10:30, är ​​denna typ av system trevligt om du bara vill handla en kort tid varje dag. Detta minskar risken med hänsyn till marknadsexponering och ger dig mer tid att njuta av andra aktiviteter. Backtesting detta på NASDAQ-100 bevakningslista (individuella backtests, 15 min. Periodicity) ger vinsten nedan för perioden 1 MAR 2007 till 17 AUG 2007. Ticker namn utelämnas för att hålla diagrammet kompakt diagrammet visar helt enkelt en vinst bar för varje testade tester. Den genomsnittliga exponeringen för det här systemet är cirka 15, och du kanske kan handla portföljer för att öka vinsten och sänka aktiekurvorna. Var försiktig så att rubbningarna är oacceptabla och att det kan finnas volymen begränsningar för många tickers. Eftersom systemet har låg exponering kan det vara en kandidat för marknadssökning och rankad portföljhandel. RAR skulle vara en indikation på den absoluta maximala vinsten som kunde erhållas om man lyckades öka exponeringen för nära 100. Prisrörelsen från olika ticker kan dock korreleras och handel från olika ticker kan överlappa varandra. Om många tickers handlar samtidigt, skulle det vara svårt att öka systemexponeringen. Filed by Herman at 1:49 pm under Ideas (Experimental) Comments Off on KISS-001: Intraday Gap Trading August 17, 2007 You are invited to submit links to system ideas in comments to this post. Gap Trading Strategies 8211 Stockcharts Intraday Moving Average Crossover with Position Sizing 8211 NeoTicker Volatility-Breakout-Systems 8211 Traders Log Ten day HighLow system 8211 StockWeblog Reversion Systems 8211 SeekingAlpha Systems Traders Club . Trader Club Bulletins. July 16, 2007 This category is reserved for real working trading systems, i. e. that you have traded at some point in time or would consider trading. Since the criteria for tradability varies from person to person, and since systems may work or not depending on how they are traded, it will be difficult to screen contributions here. With respect to what is posted here, keep an open mind and consider that the poster considers the system tradable. You can contribute by posting as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:14 am under Practical (Profitable) Comments Off on Introduction to Trading Systems 8211 Practical This is where you can share trading systems that are marginally profitable, i. e. those that should not be traded as they are but that show potential. Typically this would be a basic system that is profitable but experiences draw downs of 50. Such systems can often be improved by adding Stops, Targets, Money Management, Portfolio techniques, etc. The reality is that while you may not have the expertise to make it work someone else may. Almost all of us find trading system ideas in books and magazines that we then code in AFL for evaluation. Some of these systems may have been around for many years while others are new ideas. After coding them, almost always, we are disappointed and chuck out the system (work). Instead of throwing out your work you are invited to post the system here to give another developer a chance to fix it. You are invited to contribute as an author (requires registration ) or in a comment to this post. Filed by Herman at 11:04 am under Ideas (Experimental) Comments Off on Introduction to Trading Systems 8211 IdeasOctober 14, 2011 Added February 29, 2012, additional points to consider: 1) This system depends on getting accurate fills at the Open price. To obtain such fills requires a quality minimum-delay data feed and advanced programming skills to implement trade-automation. 2) When setting the entry price slightly below the Open price (trying to improve performance) the system fails miserably. Even improving the price by just one cent kills the system. This suggests that most of the profit comes from days on which the Open price was equal to the daily Low, i. e. the price moved up from the Open and never dropped below it. This, of course, is obvious. To confirm this I added this test condition (it looks ahead) to exclude days on which Open Low: Buy Buy AND NOT O L This kills the system and proves that most of the profit comes from days where OL. To further confirm this I added the opposite condition: Buy Buy AND O L This gives nearly infinite profits and proves that most profits come from days on which the price moves up immediately from the Open and never returns below it. Trying to improve the entry price is a mistake one should enter on a Stop set 1-2 ct above the Open price, this will eliminate days when the price drops and never turns back. This improves performance significantly. 3) This system trades knee-jerk trader-responsespatterns. Such patterns are usually drowned by large volume trading hence this system works far better when you select tickers with volumes between 500,000 and 5,000,000 sharesday. This also improves performance significantly. Adding the above two features results in an equity curve much better than that shown below. Sorry, I have no time to document the above in greater detail. Good luck This post outlines a very simple Long-only trading idea that Buys at a given percentage below yesterday8217s Low, and exits at the next day8217s Open. While sometimes it may be difficult to get the exact Open price, the high profitability of this system makes it a good candidate for further experimentation. The system works well with Watchlists like the N100, SP500, SP1500, Russel 1000, etc. Performance on the Russel 1000, with max. open positions set to 1, for the period 12102003 to 12102011, looks like this: Some of the other Watchlists give less exposure (profits) but this comes with lower DDs. Commissions were set to 0.005 per share. No margin used. No explicit ranking is used tickers are traded based on their alphabetical sort in the Watchlist. This may seem odd but is significant: reversing this sort the system fails. This might mean that, due to real-time scanning problems, symbols listed at the top of this sort may be traded differently than those listed at the bottom. Pay attention to Liquidity (you might want to trade more than one position) and slippage (Entry is rather risk-free, but exits may be problematic). DDs are significant but may be offset with improved real-time traded entries and exits. When trading automatically it may be possible to place OCA DAY-LMT entry orders for all signals and just wait and see what fills. Since exits are more difficult than entries you may wish to explore other exit strategies. Parameter default values are just picked out of a hat. Almost certainly you can Optimize them or adjust them dynamically for individual tickers. I briefly tested this system in Walk-Forward mode and the results were profitable for all years tested. Except for the number of stocks traded parameters appear not very critical. Over-optimizing doesn8217t seem a problem in this case. The code below is very simple and requires few explanations. However it is important to understand that this system enjoys a small edge by trading at the Open, and by calculating the TrendMA using the same Open price. Some might interpret this as future leak, however if you trade this system in real-time, it is not. Many people do not realize that if you trade at the Open you can also use this price in your calculations 8212 as long as you perform them in real-time 8212 this is where AmiBroker and technology can give you an edge. If you Ref() back the TrendMA by one bar the system is still very profitable however DDs increase for some Watchlists. If you use fixed investments the difference is negligible. The trading procedure would be to start scanning before the market opens and remove tickers that are priced so remote that they are unlikely to meet the OpenThresh. Thus you may start scanning 1000 symbols but very quickly the number scanned will dwindle to just a dozen or so tickers. When you approach 9:30am your real-time scan will be very fast and you will be able to place your LMT order very close to the Open 8211 you may even be able to improve on the Open price. Even though a few people looked at the code below and found nothing wrong, the profits seem rather high for such a simple system. Please report errors you may see. Filed by Herman at 7:03 pm under Ideas (Experimental) Comments Off on EOD Gap-Trading Portfolio systemAmibroker AFL Collection My trading courses now come with complete Amibroker system code for over 20 strategies. Check them out here . The Amibroker trading platform is extremely fast, flexible and is excellent value for money. I8217ve been using the software for around five years now and my Amibroker AFL collection has grown considerably in that time. Whether you8217re interested in building trading systems, trading long term trends, investing in blue-chip companies, or picking penny stocks, you8217ll be able to do that and lots more with Amibroker. Best Amibroker AFL Collection There are two places I go to look for free Amibroker AFL. One is the Amibroker online library and the other is the Yahoo Amibroker forum . I recently came across this collection of 129 Amibroker systems too. I haven8217t delved into it too deeply yet but the systems look simple and easy to use. These are all great places to start learning about Amibroker but as with most sources of free material some hunting is often required in order to get to the good stuff. The other problem with any Amibroker AFL collection, is that any trading system you find online is available for anyone to use. Because of this, you8217re pretty unlikely to find one that works, or at least works well. Nevertheless, Amibroker AFL that you find online can always be adjusted, altered and learnt from for your own means. Don8217t forget the data Another important thing to remember when using Amibroker is that a trading system is only as good as the data you8217re using. It is essential to use high quality, clean stock data. Otherwise you will end up with a flawed trading system that will lose money in real trading. I use the services at Norgate Premium Data and am very happy, especially with the new historical constituents database which comes with the Alpha program. You can get a free trial of the service here . AFL in my courses If you are looking for Amibroker AFL, my courses contain a collection of over 20 trading systems, some trend following and some mean reverting. These are tested on at least ten years of historical stock data, and in the case of my new Trend Following For Stocks course, the system and code has been back-tested over 30 years. The trading systems shown on my courses are the best trading systems I8217ve found from years of back-testing and research. They produce returns ranging from 13 CAR (compound annual return) to over 50 CAR. And they are all simple, straightforward systems that can be easily implemented on a daily or weekly basis. Trading the Noise AFL For example, trading system 4 in my HTBWS course is called 8216Trading the Noise Plus Shorts8217 . It uses a very simple indicator to measure the level of noise in a stock in order to determine when it is trending. It returned 23.93 CAR over 10 years and had only one down year which was 2002. You can get the free Amibroker AFL for the strategy here. RSI with the VIX AFL Likewise, trading system 15, is called 8216RSI with the Vix8217 and returned 25.73 in backtesting. It uses a simple trend following strategy using the RSI indicator and the VIX volatility index as a filter. Get the free Code Here Cherry Picking Penny Stocks Trading system 18, called 8216Cherry Picking Penny Stocks8217, delivers 30.45 CAR over 10 years of stock market data and has a maximum system drawdown of -30.18 . The system picks penny stocks that are moving in strong upward trends using a filter based on the ATR (average true range function). It also has a price filter though to avoid the really illiquid penny stocks. And these trading systems are also mentioned in my book which is available on Amazon. The book, however, does not include any of the new strategies that I have since added to the courses. Such as Trend Following For Stocks, Market Timing with the VIX and the Unusual Volume system. See More Posts Like This One Writing AFL for Amibroker Learn Amibroker with TradingMarkets: Review My stock market book 20 Quantitative Trading Systems How to build a Nifty positional trading system in under 3 minutes using Amibroker 20 Basic Amibroker Buy Arguments How to build profitable mean reversion trading systems This week8217s stock picks 29 April 2014 Can you make money in penny stocks Simple breakout trading system 038 code 16 Best Trading Books Of All Time Best Trading Audiobook (Download Free On Audible) Finding the Next Starbucks by Michael Moe Review Require to create Popup Alert AFL for Amibroker i have draw the horizontaltrend line in so many stocks in multipal time frame (2 min. 5 min. 15min. 30 min. hrs. and daily) and whenever price will cross and close above (selected time candle) of horizontaltrend line then require 8220POPUP8221 alert and same think below the horizontaltrend line and close the price below the horizontaltrend line. input area are as under. Input Area 82128212821282128212- selective stock, selective time frame price close above horizontaltrend line price close below horizontaltrend line Let me know the charges Sorry, I don8217t tend to do custom programming. I8217m sure there are others who can assist you. Tack. sir do you have afl or afl code for the gunners 24 based on gann fan and sq of 9 technique Leave a Reply Cancel reply Categories JB Marwood Independent trader, analyst writer JB Marwood is an independent trader, educator and writer specialising in trading systems and stock trading. He began his career trading the FTSE 100 and German Bund for a trading house in London and now works through his own company. He also writes for Seeking Alpha and other financial publications. Google Please remember financial trading is risky and you could incur significant loss of capital. Nothing on this site is to be construed as personalised investment advice. Please see the full disclaimer .

No comments:

Post a Comment