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 varje system finns det några parametrar (som medelvärde) som bestämmer hur givna system beter sig (det vill säga är väl lämpat för långsiktig eller kort sikt, hur reagerar de på mycket flyktiga lager 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: variabeloptimering (quot Description quot, standardminimum maxsteg) variabel - är normal AFL-variabel som tilldelas värdet som returneras genom att optimera funktionen. Med normal backtesting, scanning, exploration och comentary lägen returnerar funktionen optimalt standardvärdet, så ovanstående funktionsanrop motsvarar: variabel standard Optimeringsfunktionen optimerar funktionen avkastning successiva värden från min till max (inklusiv) 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 en gång per variabel i början av din formel, eftersom varje samtal genererar en ny optimeringsslinga. Multipel-symboloptimering 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 (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åoptimering (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 istället 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 köra 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 kommer en färgstark tredimensionell yta att dyka upp i ett 3D-kartfönstret. Ett exempel på 3D-diagram som genereras med ovanstående formel visas nedan. Som standard visar 3D-diagrammen värden på Netto vinst 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 systemparametrarna påverkar handelsprestandan, 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 plötsliga 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 ner 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. NED NUMPAD (PLUS) - Nära (Zooma in) NUMPAD - (MINUS) - Långt (Zooma ut) NUMPAD 4 - Flytta 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 vanlig, 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 nytt, 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. Varje 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 är baserade 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 global en, men om det finns en enda skarp topp ut ur zillionsparametarkombinationer, kan icke-uttömmande metoder misslyckas med att hitta denna enda topp, men om det är en form av handlare, är det enkelt att hitta en enkel skarp topp för 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 det ä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öljer: a) Optimiseraren genererar en del (vanligtvis 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) nå specificerade maximala iterationer b) stoppa om intervallet av de bästa objektivvärdena för de senast 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-formuläret 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 använda motorer. 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 fullständig 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å stort antal tester 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ändda motorer är konstruerade för att vara enkla att använda, därför används kvotvärdesberäkningsvärdena automatiskt, 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 för 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 särskilt 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ökutrymme 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 - Adaptive 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 Teorin ska fungera bättre än vanlig PSO, eftersom den automatiskt kan anpassa svärmstorlekarna och algoritmstrategin så att problemet löses. Övning 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. Om du vill 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 en 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 befolkningsstorlek 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 på 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 den första loppet. 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 hoppa över några utvärderingssteg, om det upptäcker att lösningen hittades, bör 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 sin adaptiva karaktär är den kvotestimerade tiden leftquot andor kvoten av stepquot som visas av framdriftsdialogen endast kvotgissning vid timequot och kan variera under optimeringskursen. För att använda CMA-ES optimeringsprogram behöver du bara lägga till en rad i din kod: Detta kommer att köra optimeringen med standardinställningar 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 denna funktionalitet 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 de andra symbolerna och quotFilterquot-lägena 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.10.2a Val av Flyttande genomsnittliga övergångar Utforska de nyligen lagrade genomsnittliga formlerna för lägre lagring i avsnitt 10.5. Här är de vanliga genomsnittliga perioderna som används för att flytta genomsnittet - MA crossover-indikatorer: 10 perioder - De flesta används mest för trendföljande indikatorer. Om priset ligger över 10 EMA, ses trenden upp och ner, om den ligger under den. 15 perioder - En bra långsam korsning över MA eller EMA för användning med 10-periodens EMA för en trend som följer handelssystem. 21 perioder - Alternativ till 15 period MA eller EMA och indikerar status för medellångtidsutvecklingen. 50 perioder - Medellång sikt trend indikator. Kombinerade med ett lågt förflyttningsgenomsnitt ger ett bra alternativ för ett handelssystem. 200 perioder - Används av långsiktiga näringsidkare att stanna investerade eller avsluta om priset är över eller under detta genomsnitt. Intradag och kortsiktiga återförsäljare kan kombinera flera av dessa medel för att bygga handelssystem som ger goda acceptabla resultat i trender. Använd EMA för signalgenerering och MA som grundlinjens långsamma medelvärde. 10.3 Öppningsrapportering (ORB) I motsats till rörlig genomsnittsbaserad handel, som är inbördes kopplad till priset under hela handelsperioden, använder Openings Trading-metoden den tidiga dagen för att bestämma handelsutbudet. Ursprungligen, avsedd som ett intradag handelssystem, finns det ingen anledning, varför detta inte kan användas för positionell och långsiktig handel med lämpliga justerade regler. Vad som är viktigt är att notera dess viktiga egenskaper: I intradagversionen av Opening Range trading kommer vi att notera högt eller lågt av dagen för de första 5 eller 10 eller 15 eller 20 eller 30 eller 1 timme och ta antingen högt och lågt som upp - och nackdelarna. Den tidsperiod du väljer är en som du kan komma fram till genom experiment. Du får bra resultat, även om du bara använder 5,10 eller 15 minuter då ditt sortiment bryter ut nivåer. Konceptet bakom detta är att marknadens öppningsområde bestämmer hausse och bearish nivåer för handel. Ovanför den höga nivån är marknaden bullish, och under den låga nivån är dess baisse. I en viss bemärkelse är det här en marknadsmedel för handelsperioden. För användning i positionshandeln kan du använda ett intervall som kan sträcka sig till så mycket 1-2 timmar på timmarschema och till och med en dag för långsiktig positionshandel för att beräkna intervallnivån. Långa affärer initieras över den höga nivån, medan korta affärer initieras under den låga nivån i denna period. Se diagrammet nedan, där vi lyckades få en trend bra 122 poäng i 3 branscher. Och se vad det gör inom intervallbundna dagar: 10.4 Särskilda ORB - Använda en enda nivå I ORB-metoden som beskrivs i 8.3 ovan kanske du tror att du förlorar en del av handelsvinsterna baserat på volatiliteten som bestämmer dina öppningsintervallbrytningsnivåer. Tja, det finns ett enkelt svar på det. Växla till en enda nivå som kan vara ett av följande: Genom att helt enkelt ta medeltalet av hög och låg av den valda perioden kan du arbeta med en enda nivå där den långa tiden överstiger medelnivån och kort är under genomsnittsnivån . Detta är som ett marknadsgemensamt för handelsändamål. Enkel nivå ORB 1 (HighLow) 2 av de första n minuterna. n5,10,15,20,30 minuter eller 1 timme baserat på ditt val eller kontinuerligt hela dagen. Läs detta med de andra kommentarer som ges där om att utvidga konceptet för positionshandel där ditt genomsnitt av hög och låg kan vara 1-2 timmar eller till och med en dag och kanske en vecka vid längre perioder. Var förberedd för att sträcka sågar på ORB-nivå när marknaden inte har någon riktning. Se diagrammen nedan: Och se whipsaws som kan uppstå. Dessa kan undvikas genom olika brusreduceringstekniker, som vi diskuterar senare. Skulle du ha några förslag eller bidrag, skriv till mig på abnash1978yahoo. co. uk eller skicka kommentarer till forumet 10.5 Mer Responsivt glidande medelvärde och ljudavlägsnande De traditionella enkla och exponentiella glidande medelvärdena ger handelssignaler som inte är lika lyhörda som handlare skulle vilja, vilket leder till att en betydande del av handeln blir över när man använder dessa medel. Naturligtvis, när det finns en lång trend pågår, kommer alla glidande genomsnittliga handelssystem att fungera bra. Det finns mycket information om underlagets glidande medelvärde, och den som lätt är tillgänglig i det offentliga området är Hull-glidande medelvärde. Jag har läst om Jurik också, men är inte säker på om rätt formler finns tillgängliga. Nedanstående är en AFL som ger ett lågt förskjutande glidande medelvärde som har kombinerats med ett vanligt 50-års glidande medelvärde för att visa hur det kan generera köp - och säljsignaler. Och under det är en annan AFL som gör det möjligt för dig att plotta olika typer av rörliga medelvärden som kan bli en del av ditt handelsarsenal. Båda dessa är från offentliga källor på internet. Du kan enkelt göra ett handelssystem genom att antingen använda som visas nedan med en 50MA överkorsning eller två andra perioder, säga 10 och 15 perioder. HANDELSSYSTEM AFL GRATIS Jag gör denna AFL AR TRADING SYSTEM AFL GRATIS Jag gör denna AFL GRATIS FREEFREE FREEFREE GRATIS FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRI FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT FRITT SK (C-MA (C, NOL)) MA (C, nol)) 100 Graph0sk Graph0BarColorIIf (skgt0,5,4) SECTIONBEGIN (quotemaquot) Lk EMA (Stäng, 22) Plot (lk, citat, colorBrightGreen, styleDots) GfxSelectFont (quottohomaboldquot, Status (quotpxheightquot) 16) GfxSetTextAlign 6) GfxSetTextColor (ColorRGB (10.250.250)) GfxSetBkMode (0) GfxTextOut (Namn (), Status (quotpxwidthquot) 2, Status (quotpxheightquot) 10) cxParam (quotcxposnquot, 1085,0,1200,1) cyParam (quotcyposnotot, 16,0 , 1000,1) Gfx SetBkColor (ColorRGB (200,50,100)) GfxSelectFont (quottohomaboldquot, 20,98, False) GfxSetTextColor (colorYellow) GfxSetTextColor (ColorHSB (100, 10, 400)) GfxTextOut (quotLTP. (quotCquot, inDaily) DLoDay TimeFrameGetPrice (quotLotot, inDaily) gfr TimeFrameGetPrice (quotCquot, inDaily, -1) stäng Titel EncodeColor (colorWhite) ct TRADING SYSTEM quotEncodeColor (quotCquot, inDaily) ColorRGB (220,10,150)) kvotintervall (2) citationstext Datum () EncodeColor (ColorRGB (200,150,120)) citationstecken O quot, High. citat H quot, Low. quot L EncodeColor (colorGreen) citationstecken Dag Stäng. quot EncodeColor (colorGreen) gfr EncodeColor (colorYellow) kvot ToDay Open. citationstecken DDayO citationstecken Hög. citationstecken DHiDay citationstecken Low. Citat DLoDay SEKTIONEND () Colcci IIf (CCI (8) gt 5, colorBrightGreen, IIf (CCI (8) lt-5, colorRed, IIf (CCI (8) gt Ref (CCI (8), - 1), färgBrightGreen, colorDarkRed ))) HaClose EMA ((OHLLC) 5,3) HaOpen AMA (Ref (HaClose, -1), 0,5) HaHigh Max (H, Max (HaClose, HaOpen)) HaLow Min (L, Min (HaClose, HaOpen)) PlotOHLC (haOpen, HaHigh, HaLow, HaClose, kvot. Colcci, StyleCandle StyleNoLabel) BKswitch ParamToggle (quotQackground Colorquot, quotOn, Offquot) Utfärgad ParamColor (quotOuter Panel Colorquot, colorBlack) INUPfärg ParamColor (quotInner Panel Upperquot, colorGrey40) INDNcolor ParamColor (quotInner Panel LowerColor, colorBlack) TitleColor ParamColor (quotTitle Färg citat, färg Svart) om (NOT BKswitch) SetChartBkColor (OUTcolor) Färg på yttergränsen SetChartBkGradientFill (INUPfärg, INDNfärg, TitleCo lor) Färg på inre panel AVSNITTSEND () SECTIONBEGIN (kvot) SetBarsRequired (100000, 0) GraphXSpace 15 ea EMA (C, 10) eb EMA (C, 20) SetBarFillColor (IIf (ea gt eb, colorGreen, colorRed)) Köp e en gt eb OCH TimeNum () gt 092000 OCH TimeNum () lt 150000 Sälj eb gt ea ELLER TidNum () gt 150000 Kort 0 Omslag 0 Köp ExRem (Köp, Sälj) Sälj ExRem (Sälj, Köp) Kort ExRem (Kort, Omslag) Cover ExRem (Cover, Short) FactorParam (quotFactorquot, 4,1,10,1) PdParam (quotATR Periodsquot, 10,1,100,1) Up (HL) 2 (FactorATR (Pd)) Dn (HL) 2- (FactorATR Pd)) iATRATR (Pd) TrendUpTrendDownNull trend01 changeOfTrend0 flagflagh0 för (i 1 i ltBarCount i) TrendUpi Null TrendDowni Null om (CloseigtUpi-1) trendi1 om (trendi-1 -1) changeOfTrend 1 annat om (CloseiltDni-1) trendi-1 om (trendi-1) ändraOfTrend 0 Köp trend1 Säljtrend-1 KöpExRem (Köp, Sälj) SellExRem (Sälj, Köp) Om (Trendi-11) Trendi1 ChangeOfTrend 0 Om (Trendi-1-1) Trendi-1 ChangeOfTrend 0 ShortSell CoverBuy BuyPriceValueWhen (Köp, C) SäljPrisValue När (Sälj, C) ShortPriceValueWhen (Short, C) CoverPriceValueWhen (Cover, C) PlotShapes (IIf (Köp, shapeSquare, shapeNone), colorGreen, 0, L, Offset-40) PlotShapes (Köp, shapeSquare, shapeNone), colorLime, 0, L, Offset-50) PlotShapes (IIf (Köp, shapeUpArrow, shapeNone), colorWhite, 0, L, Offset-45) PlotShapes (IIf (Short, shapeSquare, shapeNone), colorRed, 0, H, Offset40) PlotShapes IIf (Kort, shapeSquare, shapeNone), colorOrange, 0, H, Offset50) PlotShapes (IIf (Short, shapeDownArrow, shapeNone), colorWhite, 0, H, Offset-45) för (iBarCount-1igt1i--) om ) inträde Ci sig quotBUYquot sl TrendSLi tar1 post (entry .0050) tar2 entry (entry .0092) tar3 entry (entry .0179) bars ii 0 if (Selli 1) sig quotSELLquot inmatning Ci sl TrendSLi tar1 entry - (post .0050) tar2 entry (entry .0112) tar3 entry - (entry .0212) bars ii 0 Offset 20 Clr IIf (sig quotBUYquot, colorLime, colorRed) ssl IIf (staplar BarCount-1, TrendSLBarCount-1, Ref (TrendSL, -1) ) Sl sslBarCount-1 Plot (LineArray (Bars-Offset, Tar1, BarCount, Tar1,1), Kvot, Clr, StyleLinestyleDots, Null, Null, Offset) Plot (LineArray (Bars-Offset, Tar2, BarCount, Tar2,1) , kvot, Clr, StyleLinestyleDots, Null, Null, Offset) Plot (LineArray (Line-Offset, Sl, BarCount, Sl, 1), Citquot, ColorDarkRed, StyleLinestyleLine, Null, Null, Offset) för (ibars i ltBarCounti) PlotText (quotquotsigquotquotentry, BarCount1, entry, Null, colorBlue) PlotText(quotT1quottar1,BarCount3,tar1,Null, Clr)Plot Text(quotT2quottar2,BarCount3,tar2,Null, Clr)PlotText (quotT3quottar3,BarCount3,tar3,Null, Clr) messageboard ParamToggle(quotMessage Boardquot, quotShowHidequot, 1) if (messageboard 1 ) GfxSelectFont( quotTahomaquot, 13, 100 ) GfxSetBkMode( 1 ) GfxSetTextColor( colorWhite ) if ( sig quotBUYquot) GfxSelectSolidBrush( colorGreen ) this is the box background color else GfxSelectSolidBrush( colorRed ) this is the box background color pxHeight Status( quotpxchartheightquot ) xx Status( quotpxchartwidthquot) Lef t 1100 width 310 x 5 x2 290 GfxSelectPen( colorWhite, 4) broader color GfxRoundRect( x, y - 165, x2, y. 160, 90 ) GfxTextOut( ( quot AR TRADING SYSTEM quot),141,y-160) GfxTextOut( (quot quot),130,y-160) GfxTextOut( (quotLast quot sig quot Signal came quot (BarCount-bars-1) Interval()60 quot mins agoquot), 148, y-140) The text format location GfxTextOut( (quotquot WriteIf(sig quotBUYquot, sig quot quot, sig quot quot) quot. quot entry), 130, y-120) GfxTextOut( (quotSTOP LOSS. quot sl quot (quot WriteVal(IIf(sig quotSELLquot, entry-sl, sl-entry), 2.2) quot)quot), 130, y-100) GfxTextOut( (quotTGT:1. quot tar1), 130, y -80) GfxTextOut( (quotTGT:2. quot tar2), 130,y-60) GfxTextOut( (quotTGT:3. quot tar3), 130,y-40) GfxTextOut( (quotCurrent PL . quot WriteVal(IIf(sig quotBUYquot,(C-entry),(entry-C)),2.2)), 130, y-22) Buy ExRem(Buy, Sell) Sell ExRem(Sell, Buy) shape Buy shapeUpArrow Sell shapeDownArrow PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset-40) PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset-50) PlotShapes(IIf(Buy, sha peUpArrow, shapeNone),colorWhite, 0,L, Offset-45) PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset40) PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset50) PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset-45) PlotShapes( shape, IIf( Buy, colorGreen, colorRed ),0, IIf( Buy, Low, High ) ) dist 2.5ATR(5) for( i 0 i lt BarCount i ) if( Buyi ) PlotText( quotBuynquot Closei, i, Lowi - disti, colorWhite ) if( Selli ) PlotText( quotsellnquot Closei, i, Lowi disti, colorWhite ) SECTIONBEGIN(quotemaquot) P ParamField(quotFieldquot) Type ParamList(quotTypequot, quotWeighted, Simple, Exponential, Double Exponential, Tripple Exponential, Wildersquot) Periods89 Param(quotPeriods180quot, 180, 2, 300 ) Displacement2 Param(quotDisplacement2quot, 2, -50, 50 ) Plot( EMA( P, Periods89 ), DEFAULTNAME(), colorWhite, styleDots, 0, 0, Displacement2 ) SECTIONEND() rjlCross(Lk, tar1) golCross(tar1,Lk ) PlotShapes(shapeHollowStarrjl, colorAqua,0,H,- 20) PlotShapes(shapeHollowStargol, colorViolet,0,L,20) SECTIONEND() for( i 0 i lt BarCount i ) if( bvei ) PlotText( quotABnquot. i, L i - disti, colorWhite, colorDarkBlue ) if( rfwi ) PlotText( quotASnquot. i, H i disti, colorWhite, colorRed ) SECTIONBEGIN(quotdayquot) TimeFrameSet( inDaily ) switch now to dayily TimeFrameRestore() restore time frame to original Plot( TimeFrameExpand( Oo, inDaily),quotquot, colorYellow,10304 styleNoLabel) cx Param(quotcxposnquot,476,0,1200,1) cy Param(quotcyposnquot, 500,0,1000,10 ) GfxSelectFont( quot Arial quot, 14, 98, False ) GfxSetTextColor(ColorRGB(10,250,250)) GfxTextOut(quotVolume. quot Volume quotquot, cx 20,cy 50) SECTIONBEGIN(quottomquot) function GetSecondNum() Time Now( 4) Seconds int( Time 100 ) Minutes int( Time 100 100 ) Hours int( Time 10000 100 ) SecondNum int( Hours 60 60 Minutes 60 Seconds ) return SecondNum RequestTimedRefresh( 1 ) TimeFrame Interval() SecNumber GetSecondNum() Newperiod SecNumber TimeFrame 0 SecsLeft SecNumber - int( SecNumber TimeFrame ) TimeFrame SecsToGo TimeFrame - SecsLeft xParam(quotxposnquot,99,0,1000,1) yP aram(quotyposnquot,40,0,1000,1) GfxRoundRect( x615, y530, x738, y499, 0,0 ) GfxSelectSolidBrush( ColorRGB( 230, 230, 230 ) ) GfxSelectPen( ColorRGB( 203, 25, 23 ), 3 ) if ( NewPeriod ) GfxSelectSolidBrush( colorYellow ) GfxSelectPen( colorYellow, 2 ) Say( quotNew periodquot ) GfxSetBkMode(1) GfxSelectFont( quotArialquot, 13, 800, False ) GfxSetTextColor(ColorRGB(220,10,150) ) GfxTextOut( quotTimeleftquotquot. quotNumToStr( SecsToGo, 1.0 ), x674, y507 ) GfxSetTextColor(ColorRGB(10,250,250)) GfxTextOut( ( quot Develop By quot),1150,y-45) GfxSetTextColor(ColorRGB(10,250,250)) GfxTextOut( ( quotAR Trading SYSTEM quot),1150,y-25) SECTIONBEGIN(quotRibbonquot) uptrendPDI()gtMDI()AND Signal()ltMACD() downtrendMDI()gtPDI()AND Signal()gtMACD() Plot( 1, efines the height of the ribbon in percent of pane width quotribbonquot, IIf( uptrend, colorLime, IIf( downtrend, colorRed, IIf(Signal()ltMACD(), colorLightGrey, colorLightGrey ))), choose color styleOwnScalestyleAreastyleNoLabel, -.05,50 ) SECTIONEND() Last edited by skumar4545 3rd January 2014 at 11:22 AM. Reason: add img
Välja mycket Storlek Uppdaterad 02 februari 2017 Vad är mycket Mycket refererar till den minsta tillgängliga handelsstorleken som du kan placera när du handlar Forex marknaden. Typiskt kommer mäklare att hänvisa till partier med inkrement på 1000 eller en mikrosats. Det är viktigt att notera att lotstorlek direkt påverkar risken du tar. Att hitta den bästa partikelstorleken med ett verktyg som en riskhanteringsräknare eller något med en önskad utgång kan därför hjälpa dig att bestämma önskad lotstorlek baserat på storleken på dina aktuella konton, oavsett träning eller levande, samt hjälpa dig att förstå belopp som du skulle vilja riskera. Många storlekar påverkar direkt hur mycket marknadsförflyttningar påverkar dina konton, så att 100 pip flyttar på en liten handel inte kommer att märkas nästan lika mycket som samma hundra pip flyttar sig på en mycket stor handelsstorlek. Här är en definition av olika partier storlekar du kommer att stöta på i din handels karriär samt en hjälpsam ana...
Comments
Post a Comment