Multicharts-handledning 8211 Lektion 04: Om uttalanden och villkorlig förgrening Lär dig att utföra koduttryck baserat på förhållanden I dagens8217-lektion lär du dig att kontrollera ditt programflöde och gör det endast att utföra delar när vissa villkor är uppfyllda. Det här är var om uttalanden används. Du kan hitta dem i i princip alla högnivå programmeringsspråk och de är motorn som driver varje program. Om uttalanden exempelvis kan användas för att färglägga ett rörligt medelvärde annorlunda baserat på dess relation till stängningen av en stapel. Om du vill stänga alla öppna positioner efter en viss tid, kommer ett if-uttalande att spelas in. Om du vill utlösa en varning när ett fördefinierat villkor är uppfyllt, kommer du också att använda ett if-förklaring för det. Denna lista kan fortsätta under en längre tid, men jag tror att du redan förstår det om uttalanden inte bara är mycket användbara men också mycket viktiga. Ingen programmeringstutorial kan vara komplett utan att gå över dem och en god förståelse är nödvändig innan vi kan flytta till mer komplexa saker. if8230then8230 8220if8230then82308221 uttalandet är den enklaste formen av ett villkorligt uttalande. Villkoret testas och om det är sant, kommer följande koddeklaration att utföras. Om testet är felaktigt kommer ingenting att göras eftersom följande koddeklaration inte kommer att utföras. När jag säger testet är sant, blir don8217t förvirrad och tror att du är begränsad till testvillkor som endast omfattar 8220true8221. I fall 8220ii8221 är en numerisk variabel och 8220MyCondition18221 och 8220MyCondition28221 är boolesiska variabler är dessa tre giltiga 8220if8230then82308221 uttalanden. Om det första uttalandet kontrollerar koden för 8220MyCondition1 false8221. Om 8220MyCondition18221 verkligen är falskt blir testresultatet faktiskt 8220true8221 (eftersom uttrycket som ska kontrolleras matchas). Det här kan vara lite förvirrande först, men om du kommer ihåg har vi gjort liknande kontroller i den sista lektionen som arbetar med 8220-tiden loop8221. Du kan skriva ut resultatet för ett test till utmatningsfältet PL Editor med utskriftskommandot. Kodsdeklarationen enligt 8220if8230then82308221-satsen kommer endast att utföras när kontrollläget matchas. Om testet returneras felaktigt fortsätter koden med nästa del. Om du vill att din kod ska utföra ett uttalande om testvillkoret är sant och ett annat om it8217s är felaktigt kan du använda två 8220if8230then82308221 uttalanden eller använda en annan typ av uttalande. if8230then8230else8230 8220if8230then8230else82308221 uttalandet kommer att exekvera en koddeklaration om kontrolltestet är sant och ett andra uttalande om testet är felaktigt. Gå tillbaka till vårt glidande medelexempel kan vi ändra medelvärdet enligt förhållandet mellan slutkursen och genomsnittet. Om stängningen är över genomsnittet ska medelvärdet vara grönt, om det inte borde vara rött. Observera att det här betyder att medlet också skulle bli färgat rött om det närmaste matchar medeltalet. Använda 8220if8230then8230else8221 uttalandet och det reserverade ordet 8220SetPlotColor8221 kommer göra tricket här. SetPlotColor har två parametrar: Den första är numret på det diagram du vill ändra färgen för (it8217s 1 för Plot1 och 5 for Plot5 etc.) och den andra är för den färg du vill använda plot. Som planerat ändras medelvärdet nu enligt färgen i förhållande till baren nära genomsnittet. Som jag nämnde var fallet är lika med medelvärdet skulle det också vara färgat i rött. En mycket användbar funktion för 8220if82308221 uttalanden är att du kan kombinera eller boa dem för att skapa mer komplexa logiska träd. Vi kan något ändra 8220if8230then8230else8221 uttalandet som används i koden ovan och lägg till en tredje färg för det fall där matchen motsvarar genomsnittet. Kodstycket grupperar ett 8220if8230then82308221 och ett 8220if8230then8230else82308221 uttalande för att utföra uppgiften. Observera att endast den sista kodlinjen i en enda 8220if8221 eller flera grupperade 8220if8221 uttalanden måste följas av en semikolon. if8230then begin8230end 8220if8230then8221 och 8220if8230then8230else82308221 uttalandena är bra om du bara har ett koduttryck som ska utföras. För mer komplexa kodblock måste du använda blockdeklarationer. 8220if8230then begin8230end8221 blockdeklarationen liknar 8220if8230then8221 uttalandet, men tillåter flera koduttryck mellan 8220begin8221 och 8220end8221. 8220begin8221 och 8220end8221 är vanliga för blockdeklarationer, så börjar och slutar de. När man jämför dem med de vanliga 8220if8230then8230if8230then8230else8221 uttalandena i en 8220if8230then begin8230end8221 blockera alla kompletta uttalanden inom 8220begin8230end8221 måste följas av en semikolon. Let8217s lägger till ett enkelt blockdeklaration till vårt medelvärde som plottar ett kors (för det här måste du ändra plottstilen för att korsa i egenskaperna) och ger oss en varning när hela fältet ligger under genomsnittet. if8230then begin8230end Naturligtvis finns det också ett 8220if8230then start8230end annat start8230end8221 block uttalande om du vill använda fler koddeklarationer inom en villkorlig filial. Med den här och den andra 8220begin8230end annars. 8221 Det finns en sak att notera: 8220end8221 efter den första 8220begin8221 följs inte av en semikolon, bara den sista 8220end8221 som kompletterar uttalandet behöver semikolon. Du kan också använda två 8220if8230then begin8230end8221 uttalanden tillsammans så här, för att markera staplarna som ligger helt över genomsnittet. once8230begin8230end För resten av today8217s session har vi ytterligare två uttalanden att gå över. Vi har använt ett av dessa uttalanden ett par gånger innan så du är bekant med det redan. Som du kanske har gissningar är det 8220s 8220once8230begin8230end8221 uttalandet. Vi har även använt det i början av denna session, bara utan ett utvärderingsvillkor. Fördelen med detta uttalande är, när det booleska uttrycket blir sant för första gången, testades det aldrig igen. Det kommer bara att hoppas över i koden efter att det har utförts en gång. Det här är till exempel bra att initiera variabler och göra några beräkningar som du bara behöver göra en gång. I allmänhet startar 8220once8221 ett uttalande som ser ut så här: Det booleska uttrycket som följer 8220once8221 är valfritt och kan lämnas som you8217ll se i nästa exempel. Om du bara har ett uttalande som ska utföras en gång, kan du också lämna 8220begin8221 och 8220end8221 reserverade ord. Bilden nedan innehåller tre exempel på hur 8220once8221 skulle kunna användas. Det första exemplet kommer att rensa utmatningsfältet och radera eventuell gammal utskriftsinformation där. Den andra koddeklarationen kommer att göra detsamma, men eftersom koden kontrollerar 8220if CurrentBar 18221 utförs denna kontroll igen med varje kodkörning. Med 8220once8221 uttalandet kommer koden att utföras en gång och då inte markeras igen. Med andra ord ger detta också en något bättre prestanda. Det andra exemplet visar hur man beräknar kryssrörelsen och decimalområdena i en symbol och lagrar resultaten i två variabler. Det sista exemplet som visas kontrollerar om dagen på diagrammet är en måndag. När detta är sant raderas utskriftsloggen, och en ny text kommer att skrivas ut. omkopplare 8220switchcase8221 uttalandet är det slutliga uttalandet vi kommer att titta på idag. Omkopplaren och fallet är användbart för hantering av mer komplexa villkorade förgreningsoperationer. I stället för att näsa flera 8220if8230else8221 eller andra uttalanden kan flera fallsektioner utföras baserat på switchuttrycket. Det här låter mycket svårare än det verkligen är. Let8217s ta en titt på ett enkelt kodexempel som hjälper till att klargöra 8220switchcase8221-satsen. Skapa indikatorn nedan och ladda den till ett diagram. Kontrollera sedan olika siffror för inmatningen och utskriftsresultatet i utmatningsfältet. Utskriftsversionerna delas bara över två linjer för bättre läsbarhet här, normalt skulle jag lämna dem i en rad om de inte blir för långa. Koden passerar inmatningen 8220Number8221 via omkopplingsdeklarationen till det första matchande fallet uttryck och utför följande uttalande. Om ett matchande falluttryck hittas, exekveras alla uttalanden för detta uttryck och sedan fortsätter koden efter 8220switchcase8221-satsen. That8217s varför uttalandet för fallet 2 till 5 aldrig exekveras 8211 är fallet inkluderat i 2 till 10 redan. Byt plats för de två fallen och båda kan utföras beroende på antalet ingångar. 8220default8221-satsen är valfri och du kan använda den för att se till att ett uttalande utförs även om det inte matchas något falluttryck. Du kan också använda flera olika påståenden för varje enskilt fall, jag använde bara en utskrift för varje fall i det här exemplet. De uttalanden vi tittade på under den här lektionen har gemensamt att du kan bo och gruppera dem för en mer komplex logik. Ibland måste du bli ganska kreativ för att uppnå det du har i åtanke. That8217 varför en bra översikt av din logik är så viktig. Ta lite tid innan du börjar med kodningen, kanske rita ett flödesschema eller ett logiskt träd. Det kan verkligen hjälpa dig att spara mycket tid i slutändan. Jag vet att jag har stressat detta tidigare och jag kommer att säga det igen som det är viktigt. Att lära sig något nytt är mycket lättare än att lära upp en dålig vana. Om du börjar med att lära dig hur man kodar i EasyLanguage eller PowerLanguage gör det din goda vana att planera programmeringen ordentligt innan du börjar. Detta avslutar lektionen om uttalanden och villkorlig förgrening. Det markerar också slutet på de första grundläggande lektionerna och med följande lektioner kommer vi att dyka mer in i programmeringen och titta på nya idéer och teorier längs vägen. EasyLanguage amp PowerLanguage-handledning 8211 Lektion 02: Kodning Ett rörligt medelvärde Skapa den första riktiga indikator och utöka grunderna När du har bekantat dig med PowerLanguage Editor i den tidigare PowerLanguage-handledningen 8211 lektion 01 kommer vi nu att bygga upp på den här grunden. Om du inte har läst den sista lektionen, skulle jag föreslå att du gör det först eftersom det också kan hjälpa dig att förstå den här lektionen. Let8217s börjar med today8217s lektion nu. Öppna PowerLanguage Editor och skapa en ny indikatorstudie. Jag kommer att namnge min ABCPowerLanguage Lesson 02 8211 Moving Average så jag kan hitta den lätt i min redigerare senare. Namnet är helt upp till dig självklart och du kan även ändra det senare. Som den sista delen av indikatornamnet antyder kommer vi att skapa och rita ett glidande medelvärde idag. Du har förmodligen sett ett glidande medelvärde på ett diagram före eller kommer ihåg begreppet medelvärde från matematik. Huvudanvändningen för medelvärden är som ett filter för att jämföra de data du anger. Bilden visar ett 200-tal enkelt glidande medelvärde som ger ett mycket smidigt resultat. Nackdelen med denna jämnhet är att du introducerar mer fördröjning. Det betyder att medeltalet blir mindre mottagligt för prisändringar. Om du tittar på nästa bild ser du hur olika beteendet för ett 200-taligt enkelt glidande medelvärde är när du jämför det med det gröna 10-medeltalet. Den senare är mycket snabbare när man svarar på prisändringar, men i sin tur finns det mycket mer 8220noise8221 i medelvärdet. Det finns många olika typer av medelvärden som huvudsakligen varierar i vilken inverkan varje datapunkt har på resultatet av genomsnittet. Ett 200-taligt enkelt glidande medelvärde beräknar enkelt en summering av de sista 200 datapunkterna och delar upp den med 200. Resultatet är ett medelvärde som ger varje datapunkt samma inflytande (samma värde) på resultatet. Den första fältet och den sista fältet som ingår i medelvärdet är båda viktade samma för resultatet. Två andra framträdande och allmänt använda medelvärden är exponentiella rörliga medelvärdet och det vägda rörliga genomsnittet. Båda har högre viktningsfaktorer för de senaste datapunkterna. I ett vägt rörligt medel minskar vikten i aritmetisk progression. För exponentiellt genomsnitt kommer det att minska exponentiellt, därav namnet. Detta kommer att vara så teoretiskt som det kommer att få för idag. Om du vill läsa några mer detaljer om medelvärden kan du börja med denna Wikipedia-artikeln. För ytterligare förståelse av den här lektionen behövde du8217t denna ytterligare information. Let8217s börjar med att koda vårt genomsnitt. Vår indikator bör inte bara beräkna ett medelvärde, men det ska utföra resultatet till ett diagram. EasyLanguage har 8220Plot8221 reserverat ord för det och vi kommer att använda det för att göra det. Innan du börjar programmera är det alltid en bra idé att ta ett steg tillbaka och tänka på vad du försöker åstadkomma och hur du ska göra det. Eftersom denna studie inte är väldigt komplex, finns det bara några saker att tänka igenom. När studier blir mer komplexa kan du spara mycket tid med bra planering på förhand. Målet är en studie som beräknar och plottar ett enkelt glidande medelvärde. Vi vill kunna ändra längden för genomsnittsvärdet med en inmatning så it8217s enkelt att anpassa. För medelvärdet måste vi summera mängden värden som är korrelerade med längdinmatningen. Vi don8217t vill skriva kod för varje möjlig längd ingång för summeringen. Det betyder att koden måste kunna beräkna alla möjliga längdingångar på egen hand. Har du redan en aning om hur vi kan åstadkomma detta Svaret är att vi behöver ett iterationsförklaring som kan utföras upprepade gånger varje stapel för ett visst antal gånger (längdinsatsen). Jag vet att det här låter komplicerat, men det blir ganska enkelt. Vi kommer att använda 8220for loop8221 för denna uppgift. Denna slinga upprepar en eller flera uttalanden för ett användardefinierat, specifikt antal iterationer. EasyLanguage-koden exekveras från topp till botten och vanligtvis från vänster till höger. När en kodlinje exekveras utförs nästa rad och så vidare. Om kodlinjen är början på en slinga, kommer kodlinjerna i slingan att exekveras för den angivna mängden. Bara när slingan är klar körs nästa kodlinje efter slingan. A for loop ser och fungerar på följande sätt: En numerisk variabel ökas (eller minskas) med varje cykel genom slingan från startvärdet till dess slutvärde. Denna bild visar en grundläggande loop med en numerisk räknare variabel (ii i det här fallet) och initialvärdet på 0. Iterationerna görs tio gånger tills räknaren har uppnått värdet på 9. Därefter körs loopblocket den sista tid och slut. Du behöver inte öka värdet för dig själv, loopkoden tar hand om det. Det aktuella motvärdet kommer att lagras i motvariabeln. Så du kan komma åt den för varje kretslopp och använda den för dina beräkningar. Detta kommer att vara till nytta för att beräkna vårt genomsnitt. För loop kan också minska disken med varje iteration. Det ursprungliga värdet i det här exemplet är 9, men slingan körs tio gånger tills den är avslutad också. Räknaren minskar enkelt med varje iteration med en tills den når 0. I Easylanguage kan du hänvisa datarelaterade reserverade ord, variabler och funktioner från en tidigare stapel mycket enkelt. Med hjälp av ett tal inom ruta parentes efter det reserverade ordet, kommer beräkning eller variabel att returnera värdet för den här fältet. Antalet växer från den aktuella stapeln (som du refererar till med 0) i steg om en. När du vill lagra värdet för föregående bar8217s nära en variabel som heter PrevCloseValue kan du göra så här: Vi vill bygga vårt genomsnitt med hjälp av Stäng för de sista X-staplarna. Där X är en ingång som möjliggör större flexibilitet. Du vet redan att vi vill använda en slinga för det och vi har bara hittat hur vi kan referera Stäng värden för de tidigare staplarna. Detta borde räcka för att skriva koden för huvuddelen av vår indikator. Let8217s fortsätter genom att skapa inmatnings - och variabla sektioner. Du kanske kommer ihåg från den sista lektionen att använda meningsfulla variabla namn är en bra kodningspraxis och kan spara dig mycket problem senare. Vi måste deklarera en inmatning så att vi kan ändra längden för vårt genomsnitt på diagrammet. Dessutom vill vi ha en variabel som innehåller summeringen, en för att hålla motvärdet och en sista för att lagra medelvärdet. För att mata ut värdet på diagrammet använder vi det reserverade ordet Plot. Detta följs av ett nummer så att du kan skilja mellan olika tomter. Vilket behövs som du kan använda upp till 999 tomter i Multicharts. Plot reserverat ord kan ha flera parametrar som färg, plottstorlek och lite mer. Vi kommer att hålla det enkelt här och använda Plot1 med bara två parametrar 8211 den första för det numeriska uttrycket som ska plottas och en andra för det namn vi vill tilldela plottet. Den slutliga koden kommer att se ut så här: Efter att ha sammanställt den här koden är vi nästan redo att ladda vår indikator till ett diagram i Multicharts. Let8217 tar bara en titt på indikatorns egenskaper först. Du kan hitta dem under - gt File - gt Egenskaper eller genom att klicka på Egenskaper-symbolen i menyn (den ska vara den som återstår att kompilera). Under fliken Style kan du ändra färg, linjestil och tjocklek för den graf du skapade. Om du går till fliken Egenskaper finns det flera alternativ att ställa in eller kontrollera, men för närvarande kanske du bara vill se till att alternativet 8220Sam som symbol8221 är markerat. Detta kommer att se till att indikatorn används direkt på diagrammet istället för ett underschema. Nu är du redo att använda indikatorn på ett diagram som du väljer. När du har ett diagram öppet i huvudfönstret Multicharts kan du helt enkelt sätta in indikatorn i det här diagrammet. När indikatorn används ska resultatet likna ovanstående skärmdump. Men det verkar inte som det här gör, det ser inte ut som ett glidande medelvärde alls. Prisserien är nästan en platt linje och tomten som kommer från vår indikator stiger bara. Med E-Mini SampP 500 i området 18217800 är det uppenbarligen inte ett 10 bar glidande medelvärde för denna marknad på 182179528217647. Detta pekar på ett problem i våra beräkningar. Har du en uppfattning om vad koden saknas Det är faktiskt bara en liten men mycket viktig detalj som vi glömde att lägga till. Vi måste lägga till något framför loopbandet. Slingan fortsätter helt enkelt att lägga till värdena för de tidigare tio staplarna med varje ny stapel. Det här är bra och vi vill att det ska göra exakt detta, men vi vill inte att den ska lägga till de nya värdena till de gamla värdena. Med andra ord måste du se till att CloseValueSum doesn8217t fortfarande håller de gamla värdena när förbandet startar. Genom att lägga till en rad i koden är resultatet precis vad vi ville uppnå. Vi kan också ändra indikatorn8217s utseende på diagrammet. Genom att använda stilfliken under 8220Format Study8221 kan vi ändra det visuella resultatet som linjestil, färg och tjocklek. Under fliken 8220Inputs8221 hittar du den inmatning du skapade och standardinställningen för längden. Genom att ladda en andra instans av studien och använda en annan färg och längd kan du bekräfta att studien ger ett annat resultat med en annan längdinsats. Om du har problem med att hitta rätt lösning, kontakta oss gärna med din lösning och vi kommer att försöka hjälpa dig på rätt sätt. Jag är rädd att bara fråga om lösningen vann, men du måste åtminstone kunna visa att du lägger lite ansträngning på att hitta lösningen också. Som ett sista tips kan du titta på andra genomsnittliga indikatorer eller funktioner och hitta lite inspiration för den saknade länken där. Jag hoppas att du haft denna Powerlanguage-lektion och jag ser fram emot att arbeta med dig i nästa. Kopiera och klistra in koden ovan i din utvecklingsmiljö i Tradestation eller MultiCharts as Indicator. Klicka sedan på kompilera, eller verifiera. Denna kod upptäcker om stängningskursen idag är större än eller lägre än slutkursen för igår. (Detta kan läggas på dagliga diagram eller minutdiagram och close1 hänvisar till föregående stapel eller föregående dag) Om du skrev i close2 skulle det referera till de närmaste 2 dagarna eller streckerna i stället istället. Sedan har vi summan av de sista (längd 20) staplarna. För att se hur det fungerar kan du ändra denna rad kodplot1 (summove, quotup-downcountquot) till denna plot1 (flytta, quotup-downcountquot) Klicka sedan på kompilera. Du kan då se dina indikatorplottar en linje som är antingen 1, -1 eller 0. De ingångar som skrivs högst representerar värden som kan ändras av användaren när plottar indikatorn på diagrammet. När du först visar indikatorn i sin ursprungliga form kan du ändra längden till 50 eller 20 eller 100 för att se hur det påverkar diagrammet. Variabler visas här som quotvarsquot och dessa är värden som jag skapade för att lagra värdena som matas ut av de 3 raderna av kod som börjar om det är nära. och summovevariabeln. Summove summation (drag, längd) Det betyder att variabel summove skapas genom att lägga till summan av de sista 20 barerna (eller längdperioden) med alla värdena 1 och -1 och 0. Du kan experimentera genom att leka med olika värden. Nybörjare exempel nr2 (Justerbar viktprocent blandat glidande medelvärde) långsamt genomsnittligt (nära, längd1) snabbt genomsnittligt (nära, längd2) om värde1lt0 då värdet10 om värde1gt1 då värde11 Du kan läsa ovanstående kod först innan du skapar den här indikatorn och ser om du kan se vad det gör Det finns två glidande medelvärden som används med långsam längd på 50 och en snabb längd på 20, den ingående kallade faktorn är inställbar för att tilldela en viktning till var och en. Om faktorn är inställd på 0,5 kommer den att lägga 50 av det långsamma medlet till 50 av det snabba genomsnittet och skapa ett blandat medelvärde av de två perioden. För att se maxvärdena för den långsamma medelfunktionsfaktorn till 1, för att se diagrammet som är konstruerat helt av det snabbare genomsnittet kan du ställa in faktor till 0. Du kan experimentera med värden som 0,1 och 0,9 för att se påverkan av anpassningar till viktningen. Om du använder namnet value1 eller value2 eller value 99 som variabler, behöver du inte deklarera namnen på dessa på överdelen. Value2 1-faktor är ett mycket snyggt sätt att få 2 variabler att automatiskt tilldela 1 av en del och 99 av den andra delen så när de läggs till kommer de alltid 100 Begränsa användarfel genom att begränsa ingångar genom att variablerna läser dem. (Koden för värde1 gör detta efter att ha läst inmatningsfaktorn) Kodtrick att försöka Om du tittar på de långsamma och snabba variablerna ser du att de båda använder medelvärden (medelvärdet är den här koden betyder ett enkelt medelvärde). Du kan försöka göra den långsamma i ett vägt genomsnitt eller ett exponentiellt medelvärde och blanda dem för att skapa din egen blandade genomsnittliga kombination. Nybörjare exempel nr3 (Enkel binär trendindikator) om medelvärde (nära, snabblängd) gt medelvärde (nära, slowlength) och börja binarytrend1 slut annars binarytrend -1 Denna indictor bestämmer den kvadratiska trendquot som betyder att den omvandlar den till ett tal. Således uptrend 1 downtrend -1 och initialvärdet är tilldelat som 0. Om du plottar det 80-glidande genomsnittet och det 12-åriga glidande medlet på diagrammet kan du kontrollera att trendindikatorn fungerar. Använd slutanvändningar för att minska kodlängden. EG ovan förutsätter att om trenden inte är 1 då måste den vara -1. Kodstickor att försöka Om du försöker använda en annan metod för att tilldela trenden är upp eller ner och ersätt koden med din idé. T. EX. Du använder den stokastiska oscillatorn med över 50 är uptrend och under 50 är ned trend. Den lika med 50 kan fångas genom att säga detta. Om stokastisk är gt50, räknas den som uptrend (psuedo code) Nybörjare exempel nr4 (Enkel längdjusteringsalgoritm) om nära högsta (nära, grundläggande längd) eller nära lägsta (nära, grundläggande längd) och börja övervaka monitor1-1 sluta annars monitormonitor10.5 om bildskärm lt minlängd sedan övervaka minlängd om monitor gt maxlength sedan övervaka maxlängd Detta är det första steget att göra en algoritm för att kontrollera längd applicerad på en indikator. Du kan se att om du plottar denna indikator i subgraph 2 ligger det mellan 50 och 10, vilka tillåts max och min längder. (Men dessa är justerbara ingångar) Om priset gör en ny hög eller låg för grundlängdstiden kommer den att sakta ner med 1 längd ökning för varje stapel som villkoret är sant. Om priset inte gör ett nytt högt eller lågt under samma period kommer det att minska längden med 0,5 längd ökning för varje streck villkoret är sant. Kodtrick att försöka Om du försöker ändra värdena på -1 och 0,5 till större eller mindre belopp kan du ställa in det så att det passar dina krav. Nedan kommer jag att visa dig hur du bygger denna kod till en längdbyteindikator. Nybörjare exempel nr5 (Enkel längd justera viktat glidande medelvärde) om nära högsta (nära, grundläggande längd) eller nära lägsta (nära, grundläggande längd) och börja övervaka monitor1-1 sluta annat monitormonitor10.5 om monitor lt minlength sedan övervaka minlängd om monitor gt maxlength då övervaka maxlängd Du kan se att en annan variabel har lagts till, vilket är ett viktat glidande medelvärde och tricket här är att ersätta det vanliga fältet med algoritmmonitorn som justerar längden som appliceras. Kodstickor att prova Om du plottar ett 20-årigt vägt medelvärde bredvid det på delgrafen. Du kan se hur koden ovanför längden ändrar genomsnittet är långsammare under en viss period och snabbare i andra perioder. Ovanstående indikator finns i subgraph no1 överlagrad med priset. Exempelkod no4 placeras i del 2. Du kan observera längdändringsalgoritmen i åtgärd och se hur det påverkar hastigheten på det vägda genomsnittet. Nybörjare exempel nr6 (Hur man förhindrar uppdelning med nollfel) Uppdelning efter noll är ett vanligt problem med programmering. Svaret är alltid oändligt, så vi måste förhindra att någonting delas upp med noll i första hand. Det finns två sätt att göra detta. Om värdet1 0 då värder1value10.0000000001 Så vi lägger helt enkelt till ett litet nummer till det, vilket är så litet det kommer inte att göra för mycket skillnad till utgångarna. Om value1 ltgt 0 då value2 value3 value1 Detta tvingar datorn att fråga om värdet1 är 0 eller inte innan det gör sina beräkningar. Om det är 0 returnerar det standardvärdet som tilldelades värde1 i variablerna när du skapade det. Nybörjare exempel nr7 (Hur man använder Fisher Transform)
No comments:
Post a Comment