Sunday, 19 November 2017

Mtf Moving Average Strategi


MTF Moving Average MT4 Indikator MTF MA plotter alle typer bevegelige gjennomsnitt på en hvilken som helst tidsramme. Du kan spore daglige glidende gjennomsnitt på 30m diagram for eksempel. Dette lar deg spore alt på ett diagram. Du vil ha mer plass til andre valutapar. Flytte gjennomsnitt er mye brukt i forex trading. De er vant til å identifisere trendretningen, så vel som å finne støtteresistrasoner. MTF Moving Average MT4 Indikator 8211 er basert på bevegelige gjennomsnitt, du kan bruke den til stopptap eller vanlig handel. Pris over indikator 8211 opp trend, under ned trend. tf 8211 tidsramme kildeperiode 8211 perioden med glidemetode 8211 metoden for å beregne datasettet skift 8211 skift henholdsvisMTF SuperTrend Trading System - Forex Strategier - Forex Resources - Forex Trading-frie forex trading signaler og FX Forecast 444MTF SuperTrend Trading System MTF Supertrend indikator combo MTF Supertrend trading system er et rent trendsystem, det er en kombinasjonsstrategi basert på Supertrend-indikator og eksponentiell glidende gjennomsnittlig 5-periode. Denne mal er innstillingen i 15 min tidsramme. Valutapar: majors, EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDJPY, GBPJPY. Metatrader indikator innstilling: Supertrend clear (er nødvendig for MTF Supertrend) MTF Supertrend (TF 60, CCI 60, ATR -1) UP Down Indicator (HL 4 Dette er pris handling indikator og repaint) Eksponentiell glidende gjennomsnitt 5 periode (median pris). Regler for MTF Supertrend trading System SuperTrend MTF i undervindu linje farge grønn SuperTrend klart på kartlinjen farge grønn opp ned indikator prikk farge grønn Hvis disse forholdene er enige, er lang inngangsposisjon når prisen refreserer på 5EMA. SuperTrend MTF i undervindu linje farge lilla SuperTrend klart på kartlinjen farge rød opp ned indikator punktfarge rød Hvis disse betingelsene er enige, er kort inngangsposisjon når prisen refreserer på 5EMA. De samme forholdene, men bruk Supertrend på diagrammet, UP ned og 5 Ema. Innledende stoppfall på forrige highlow swing. Profit Mål 20-30 pips eller tjene penger på pivot points level. How å bruke Moving Averages i Forex Trading Enkel, men effektiv Multi Time Frames strategi. Den Moving Averages (MAs) i Forex trading er den mest enkle, men effektive handelsstrategien. Og hvis du vil bruke den på Multi Time Frame (MTF), vil du alltid ha det høyeste sannsynlighetskonfigurasjonen. Men hva er et Moving Average? Den Moving Average er en trend pekende indikator. fordi er basert på de siste prisene. Tatt i betraktning en viss tidsperiode for MA, betyr at etter hver lukk, vil MA posisjon og verdi endres. Dette er grunnen til at MA betraktes som en forsinkende indikator (repainting). Simple Moving Average (SMA) vs. eksponentiell Moving Average (EMA) Det er mange Moving Average-typer, men disse to er de mest populære: 1. The Simple Moving Average (SMA). representerer den matematiske gjennomsnittsprisen for en bestemt historisk periode. Vanligvis brukes dette til 8220close8221-prisene, men det er mange andre alternativer (åpne, høye, lave osv.). 2. Formelen for eksponensiell flytende gjennomsnitt (EMA) reduserer litt forsinkelsen, ved å gi mer vekt til de siste prisene. Spesielt hvis du bruker en stor verdi for din EMA. Ie 200 EMA på Daily 8211 siste daglige priser gir mer vekt i Moving Average formel enn de eldste prisene. Flytte gjennomsnitt som pekende indikator (Klokkepunkt) Siden prisene på et diagram er malt fra venstre til høyre, har vi i utgangspunktet 2 potensielle retninger og 1 for utvalgsmarkedet: 1. 82201-2 o8217clock8221 bullish trend 2. 82203 o8217clock8221 rekkevidde eller en flat MA 3. 82204-5 o8217clock8221 bearish trend Eksponentiell Moving Average (EMA) på Multi Time Frame Trading (MTF) I handel regner vi med de høyeste sannsynlighetssettingene. Ingen kan forutse neste prisverdi. Men hvis du vurderer retningen for høyere tidsramme (HTF) og legger inn oppføringen på lavere tidsramme (LTF), i samme retning, vil du få flere matematiske sjanser til å være riktig. Hvorfor Fordi som en hvilken som helst forsinkende indikator, vil MA, lagre mindre på HTF. Hvordan plassere handler ved hjelp av EMA Vel, avhenger av hvilken type handel du er. De fleste handelsfolk foretrekker å handle i Breakouts (BO), slik at de plasserer BuySell Stop Pending Orders. Mens andre venter på at SupportResistance (SR) retest, så plasserer de Limit Pending Orders. Ved å plassere handler som dette, er Stop Loss (SL) vanligvis på neste SR-nivå. Eller bare under Støtte for lange handler (eller over motstand for korte handler). Personlig bruker jeg Fibonacci Retracement 50 andor 61.8 nivåene, for å plassere mine Pending Orders, i retningen BO. Og jeg bruker som Stop Loss (SL), 100-nivået. Selvfølgelig, ved å måle swing som bekreftet EMA8217s BO. For Take Profit-nivået (TP) bruker de fleste handelsmenn det motsatte signalet på oppføringen TF (PA krysser tilbake 200 EMA), eller det neste SR-nivået. Men dette gir deg ikke en min 1: 3 som R: R-forhold. Bruke HTF8217s 200 EMA crosingretest kan gjøre jobben. Jeg bruker fibonacci retracement lagt til på den siste motortrenden. Så min TP kan være 127,4, 161,8 og eller 261,8, og ser etter min 1: 3 som mitt R: R-forhold (RiskReward Ratio). Hvis min TP ikke er minst 3xSL, senker jeg min oppføring TF til H1 og handler neste sving der. På denne måten vil jeg få en jevnere oppføring, med en mindre SL, mens jeg holder HTF8217s TP. Så min mindre TF-oppføring vil være et forsøk. Og jeg har råd til å miste mange oppføringer som dette for å utjevne H48217s SL. Dette vil gi meg senere en R: R vanligvis mer enn 1: 5 eller 1: 8 eller høyere. Hvis du er en Posisjonshandler, kan du på denne måten bruke HTF8217s-trendstrenden fibonacci retracement. Men for denne ideen, anbefaler jeg deg å skifte din første SL minst én gang, med fortjeneste (for å låse fortjenesten). Og så kan du la din lønnsomme stilling kjøre, til HTF8217s TP utløses. Slik unngår du feilbrudd Hver gang et verktøy er ødelagt, må den første highlow også brytes for å bekrefte Breakout (BO). Ellers må vi vurdere den første BO 8220false BO8221 på MA8217s retest. Og det highlow vil senere bli en Ross Hook (Rh) eller Fractal. Som bygger på disse teoriene, må det også brytes for å vurdere utviklingen i trenden. På HTFs testes MAs med en falsk BO, vanligvis8217t endrer vanligvis MA-punktet. På LTFs kan MA8217s BO bekreftes først ved å skape et nytt highlow, som senere kan bli ugyldiggjort. Og etter det kan prisaksjonen (PA) fortsette HTF8217s retning. Selv om LTF8217s BO vil bli bekreftet, i utgangspunktet. Case studier. Oppsetteksempler for EMA på MTF. Bare for å forstå denne enkle, men effektive handelsstrategien basert på eksponentielle flytende gjennomsnitt på Multi Time Frame, vil jeg gi deg få oppsett (scenarier): Dette er AUDJPY-paret, på Weekly, Daily og H4-diagrammer. Basert på 200 EMA peker bullish, på alle 3 diagrammer, tar vi kun lange stillinger. 8211 Ukentlig lang 8211 Daglig lang (selv ved 200 EMA retest, e-posten pekte fortsatt bullish) 8211 H4 lang (selv ved 200 EMA retest, med falsk Breakout, markerte EMA fortsatt bullish) Dette er AUDUSD-paret på Ukentlig, Daglig og H4 diagrammer. På Weekly-diagrammet har vi prisaksjonen (PA), under 200 EMA, slik at den langsiktige trenden fortsatt er bearish. Men på H4 og Daily kartene er PA over 200 EMA. Så vi kan enten vente på H4, for PA skal gå under 200 EMA (bucking Weekly trend) og handel kort. I dette tilfellet, etter krysset, må 200 EMA peke oss bearish, også på H4. Eller vi kan vente på Ukentlige diagrammet for å bekrefte samme lange retning, senere. Vi gikk over 200 EMA på H4, deretter på Daily. Så vi kan anta at PA vil gå over 200 EMA på Ukentlig også. 8211 Ukentlig kort 8211 Daglig lang (selv ved 200 EMA retest, EMA pekte fortsatt bullish) 8211 H4 lang Dette er EURUSD-paret på Weekly, Daily og H4 diagrammer. Basert på 200 EMA peker bullish, på alle 3 diagrammer, tar vi kun lange stillinger. Hvis på H4 vil PA gå under 200 EMA, vil vi slutte å handle dette paret. Hvis senere, vil PA gå under 200 EMA på Daily, og vi venter på H4 for at PA skal kjøre under 200 EMA, for å kunne ta korte stillinger, forventer minst en ukes 200 EMA retest (det vi ser på H4, skal ses på Daily, senere og etterpå, også på Ukentlig). 8211 Ukentlig lang 8211 Daglig lang (etter å ha en flat 200 EMA, brøt PA den og skapte en ny høy bucking Ukentlig trend) 8211 H4 lang (selv ved 200 EMA retest, med en falsk Breakout of Support, var EMA fortsatt peker bullish) Moving Averages trading på Multi Time Frame, kan være en svært lønnsom strategi, fordi du alltid vil bytte de høyeste sannsynligheten oppsett, i retning av høyere tidsrammer. Ved å bruke det med et godt Money Management-system og en R: R-ratio på minst 1: 3, bør du alltid være på den lønnsomme siden. Og selvfølgelig, som en ansvarsfraskrivelse, anbefaler jeg deg å teste denne strategien på en DEMO-konto, i noen måneder på rad, for å se om dette fungerer for deg. Men hvis du senere bestemmer deg for å bruke denne ideen på din ekte penger konto, bør du forstå at all risiko involvert vil bli din. Håper dette hjelper. Koden nedenfor viser hvordan jeg for tiden genererer et glidende gjennomsnitt for bruk i en strategi. Imidlertid er dette glidende gjennomsnittet standardisert i strategi tidsrammen. Det jeg vil gjerne gjøre er å endre dette glidende gjennomsnittet for å ha sin egen tidsramme separat (større) enn den som brukes for resten av strategien. Jeg har fiddling med forskjellige ideer for å gjøre dette, men ingenting fungerer, jeg vil gjerne sette pris på om noen kunne vise meg hvordan du gjør dette med eksempelkoden nedenfor: nb vær så snill å ta med eventuelle endringer som trengs for de første () beregningene. strategi. parametre: addString (quotTrendMAMethodquot, quotTrendMAMethodquot, quotot, quotMVAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotMVAquot, quotot, quotMVAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotEMAquot, quotot, quotEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategi. parametere: addStringAlternative (quotTrendMAMethodquot, quotLSMAquot, quototot, quotLSMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotSMMAquot, quotot, quotSMMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotHMAquot, quote, quotHMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotZeroLagEMAquot, quototot, quotZeroLagEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotDEMAquot, quotot, quotDEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotT3quot, quotot, quotT3quot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotMedianquot, quotquot, quotMedianquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotGeoMeanquot, quotquot, quotGeoMeanquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotREMAquot, quotquot, quotREMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotILRSquot, quotot, quotILRSquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotIE2quot, quotot, quotIE2quot) strategy. parameters: addStringAlternativ (quotTrendMamethodquot, quotTriMAgenquot, quototot, quotTriMAgenquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters: addInteger (quotTrendMAPeriodquot, quotTrendMAPeriodquot, quotquot, 200) strategy. parameters: addString (quotTypequot, quotPrice Typequot, kvot , quotCquot) strategy. parameters: addStringAlternative (quotTypequot, quotOPENquot, quototot, quotOquot) strategy. parameters: addStringAlternative (quotTypequot, quotHighquot, quotquot, quotHquot) strategy. parameters: addStringAlternative (quotTypequot, quotLOWquot, quotquot, quotLquot) strategy. parameters: addStringAlternative (quotTypequot, quotCLOSEquot, quotot, quotCquot) strategy. parameters: addStringAlternative (quotTypequot, quotMEDIANquot, quotot, quotMquot) strategy. parameters: addStringAlternative (quotTypequot, quotTYPICALquot, quototot, quotTquot) strategy. parameters: addStringAlternative (quotTypequot, quotEQUENTEDquot, quotquot, quotWquot ) strate gy. parameters: addGroup (quotPricequot) strategy. parameters: addString (quotPTquot, quotPrice Typequot, quotot, quotBidquot) strategy. parameters: addStringAlternative (quotPTquot, quotBidquot, quotot, quotBidquot) strategy. parameters: addStringAlternative (quotPTquot, quotAquot, quotquot, quotAquot ) strategy. parameters: addGroup (quotTimeFramequot) strategy. parameters: addString (quotTFquot, quotTime Framequot, quotot, quotm5quot) strategy. parameters: setFlag (quotTFquot, core. FLAGPERIODS) avslutte lokal gSource - streamer lokal TrendMAMethod lokal TrendMAPeriod lokal TrendMA lokal P1 TrendMAMethodinstance. parameters. TrendMAMethod TrendMAPeriodinstance. parameters. TrendMAPeriod Typeinstance. parameters. Type gSource ExtSubscribe (1, null, instance. parameters. TF, instance. parameters. Type quotBidquot, quotbarquot) hvis Type1 quotOquot deretter P1 gSource. open elseif Type1 quotHquot deretter P1 gSource. high elseif Type1 quotLotot deretter P1 gSource. low elseif Type1 quotMotot deretter P1 gSource. median elseif Type1 quotTquot deretter P1 gSource. typical elseif Type1 quotWquot deretter P1 gSource. weighted else P1 gSource. close end TrendMA core. indicators: opprett (quotAVERAGESquot, P1, TrendMAMethod, TrendMAPeriod, false) - og få den eldste indeksen til linjen vi kan arbeid først math. max (TrendMA. DATA:first (). etc.) sluttfunksjon ExtUpdate (id, kilde, periode) - hvis vi har nok barer i historien til å fungere hvis periode gt først 1 så nå kan jeg bruke MA Abonner på en annen tidsramme Kode: Velg all gBTFSource ExtSubscribe (BTFID, nil, instance. parameters. BTF, instance. parameters. Type quotBidquot, quotbarquot) og bruk den i indikatoren i stedet for gSource Code: Velg alle P1 gBTFSource. open. For å få indeksen for den første verdien må du quotconvertquot indeksen for hovedtidsrammen til indeksen for den større tidsrammen slik: Kode: Velg alle først TrendMA. DATA:first (). lokal btfPeriod core. findDate (gBTFSource, gSource: dato (periode), sant) hvis btfPeriod gt først 1 da har jeg inkludert disse fixene her: Kode: Velg all funksjon Init () strategy. parameters: addString (quotTrendMAMethodquot, quotTrendMAMethodquot, quototot, quotMVAquot ) strategi. parametre: addStringAlternative (quotTrendMAMethodquot, quotMVAquot, quototot, quotMVAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotEMAquot, quot, quotEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotWilderquot, quotot, quotWilderquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot , quotLWMAquot, quotquot, quotLWMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategi. param eters: addStringAlternative (quotTrendMAMethodquot, quotSMMAquot, quotquot, quotSMMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotHMAquot, quotquot, quotHMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotZeroLagEMAquot, quotquot, quotZeroLagEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotDEMAquot, quote, quotDEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotT3quot, quot, quotT3quot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotITrendquot, quototot, quotITrendquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotMedianquot, quotot, quotMedianquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotGeoMeanquot, quototot, quotGeoMeanquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quoteREMAquot, quotquot, quoteREMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotILrrquot , quotquot, quotILRSquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotIE2quot, quotot, quotIE2quot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotTriMAgenquot, quotot, quotTriMAgenquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters : addInteger (quotTrendMAPeriodquot, quotTrendMAPeriodquot, quototot, 200) strategy. parameters: addString (quotTypequot, quotPrice Typequot, quotot, quotCquot) strategy. parameters: addStringAlternative (quotTypequot, quotOPENquot, quotot, quotOquot) strategy. parameters: addStringAlternative (quotTypequot, quotHighquot, quot. quot, quotHquot) strategy. parameters: addStringAlternative (quotTypequot, quotLOWquot, quototot, quotLquot) strategy. parameters: addStringAlternative (quotTypequot, quotCLOTquot, quotot, quotCquot) strategy. parameters: addStringAlternative (quotTypequot, quotMEDIANquot, quotot, quotMquot) strategy. parameters: addStrin gAlternative (quotTypequot, quotTYPICALquot, quotot, quotTquot) strategy. parameters: addStringAlternative (quotTypequot, quotEVIEWEDquot, quotot, quotWquot) strategy. parameters: addGroup (quotPricequot) strategy. parameters: addString (quotPTquot, quotPrice Typequot, quotot, quotBidquot) strategy. parameters : addStringAlternative (quotPTquot, quotBidquot, quotot, quotBidquot) strategy. parameters: addStringAlternative (quotPTquot, quotAquot, quotot, quotAquot) strategy. parameters: addGroup (quotTimeFramequot) strategy. parameters: addString (quotTFquot, quotTime Framequot, quototot, quotm5quot) strategi. parametere: setFlag (quotTFquot, core. FLAGPERIODS) strategy. parameters: addString (quotBTFquot, quotBigger Time Framequot, quotquot, quotH1quot) strategy. parameters: setFlag (quotBTFquot, core. FLAGPERIODS) avslutte lokal gSource - streams lokal gBTFSource - streams local TrendMAMethod lokal TrendMAPeriod lokal TrendMA lokal P1 lokal MAINTFID 1 lokal BTFID 2 TrendMAMethodinstance. parameters. TrendMA Metode TrendMAPeriodinstance. parameters. TrendMAPeriod Typeinstance. parameters. Type gSource ExtSubscribe (MAINTFID, null, instance. parameters. TF, instance. parameters. Type quotBidquot, quotbarquot) gBTFSource ExtSubscribe (BTFID, null, instance. parameters. BTF, instance. parameters. BTF, instance. parameters. Skriv quotBidquot, quotbarquot) hvis Type1 quotOquot deretter P1 gBTFSource. open elseif Type1 quotHquot deretter P1 gBTFSource. high elseif Type1 quotLquot deretter P1 gBTFSource. low elseif Type1 quotMquot deretter P1 gBTFSource. median elseif Type1 quotTquot deretter P1 gBTFSource. typical elseif Type1 quotWquot deretter P1 gBTFSource. weighted else P1 gBTFSource. close end TrendMA core. indicators: opprett (quotAVERAGESquot, P1, TrendMAMethod, TrendMAPeriod, false) - og få den eldste indeksen til linjen vi kan jobbe først TrendMA. DATA :first () endfunksjon ExtUpdate (id, kilde, periode) hvis id MAINTFID og gBTFSource: size () gt 0 deretter TrendMA: update (core. UpdateLast) lokal btfPeriod core. findDate (gBTFSource, gSource: dato (periode), t rue) - hvis vi har nok barer i historien til å fungere hvis btfPeriod gt først 1 da - nå kan jeg bruke MA-enden på slutten Det er bare tre sport: tyrefekting, motorsport og fjellklatring resten er bare spill . (c) Ernest Hemingway Hei Victor. Tereschenko, tusen takk Victor som har vært en god hjelp, men jeg er fortsatt fast som følger: - Den komplette koden er under, jeg har lagt noen Signal (Testpoeng) for å overvåke fremdriften gjennom logikken og funnet at koden ikke var på linjen: 284 hvis btfPeriod gt først 1 så viste verdiene seg som følger: - EURUSD LONNY02SIGNAL, EURUSD, cci20, m1, Begge 2 TP0 - START: btfPeriod (-1) gt først (199) 1 08252011 10:08:00 1.44073 Problemet er åpenbart btfPeriod på -1 som indikerer at jeg har gjort en blooper et sted mest sannsynlig, er du i stand til å se problemet. Mange takk Peter Newton-kode: Velg alle - Intoduce strategien til vertsprogram (for eksempel Marketscope). - Funksjonen kalles en gang når vertsapplikasjonen først laster strategien. funksjon Init () strategi: navn (quotLonNY02Signalquot) strategi: beskrivelse (quotLonNY02 Signaling Strategyquot) - Raske og sakte bevegelige gjennomsnittlige parametere strategy. parameters: addGroup (quotMain Controlsquot) strategy. parameters: addString (quotTFquot, quotStrategy Time Framequot, quotot, quotm5quot ) strategy. parameters: setFlag (quotTFquot, core. FLAGPERIODS) strategy. parameters: addString (quotALLOWEDSIDEquot, quotAllowed sidequot, quotAllowed side for handel eller signalering, kan være Selg, Kjøp eller Bothquot, quotBothquot) strategy. parameters: addStringAlternative (quotALLOWEDSIDEquot, quotBothquot , quotquot, quotBothquot) strategy. parameters: addStringAlternative (quotALLOWEDSIDEquot, quotequot, quotquot, quotUpquot) strategy. parameters: addStringAlternative (quotALLOWEDSIDEquot, quotDnquot, quototot, quotDnquot) strategy. parameters: addBoolean (quotSquot, quotSetup Alertquot, quotot, true) strategi. parametere: addBoolean (quotTquot, quotTrigger Alertquot, quotot, true) strategy. parameters: addBoolean ( quotCTquot, quotConfirmed Trigger Alertquot, kvotering, falsk) strategy. parameters: addGroup (quotAlertsquot) strategy. parameters: addBoolean (quotShowAlertquot, quotShowAlertquot, quotquot, true) strategy. parameters: addBoolean (quotPlaySoundquot, quotPlay Soundquot, quotot, true) strategy. parameters : addFile (quotSoundFilequot, quotSound Filequot, quotot, quotot) strategy. parameters: setFlag (quotSoundFilequot, core. FLAGSOUND) strategy. parameters: addBoolean (quotRecurrentSoundquot, quotRecurrent Soundquot, quotot, true) strategy. parameters: addBoolean (quotSendEmailquot, quotSend Emailquot, quotSend Emailquot, quot. kvot quotquot, 20, 2, 200) strategy. parameters: addGroup (quotBigger Tidsramme MA Parameterquot) strategy. parameters: addBoolean (quotBTFMAFl agquot, quotBigger tidsramme MA Trend onquot, quotot, true) strategy. parameters: addString (quotBTFTrendMAMethodquot, quotBTFTrendMAMethodquot, quotot, quotMVAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotMVAquot, quotot, quotMVAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotEMAquot , quotquot, quotEMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters : addStringAlternative (quotBTFTrendMAMethodquot, quotTriMAquot, quototot, quotTriMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotSMMAquot, quotquot , quotSMMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotHMAquot, quotquot, quotHMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotZeroLagEMAquot, quotquot, quotZeroLagEMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotDEMAquot, quotquot, quotDEMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotT3quot, quotquot, quotT3quot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotMedianquot, quotquot, quotMedianquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotGeoMeanquot, quotquot, quotGeoMeanquot ) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quoteREMAquot, quotquot, quotREMAquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotILRSquot, quotot, quotILRSquot) strategy. parameters : AddStringAlternative (quotBTFTrendMAMethodquot, quotIE2quot, quotquot, quotIE2quot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotTriMAgenquot, quotquot, quotTriMAgenquot) strategy. parameters: addStringAlternative (quotBTFTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters: addstring (quotBTFTypequot, quotBTFPrice Typequot, quote, quotCquot) strategy. parameters: addStringAlternative (quotBTFTypequot, quotOPENquot, quotot, quotOquot) strategy. parameters: addStringAlternative (quotBTFTypequot, quotHIGHquot, quotquot, quotequot) strategy. parameters: addStringAlternative (quotBTFTypequot, quotLOWquot, quotquot, quotLquot) strategy. parameters: addStringAlternative (quotBTFTypequot, quotCLOSEquot, quotot, quotCquot) strategy. parameters: addStringAlternative (quotBTFTypequot, quotMEDIANquot, quotot, quotMquot) strategy. parameters: addStringAlternative (quotBTFTypequot, quotTYPICALquot, quotot, quotTquot) strategy. parameters: addStringAlternativ (quotBTFTypequot, quotewextedquot, quotquot, quotWquot) strategy. parameters: addInteger (quotBTFTrendMAPeriodquot, quotBTFTrendMAPeriodquot, quotquot, 200) strategy. parameters: addString (quotBTFquot, quotBigger Time Framequot, quotquot, quotm30quot) strategy. parameters: setFlag (quotBTFquot, core. FLAGPERIODER) strategy. parameters: addGroup (quotStrategy Tidsramme MA Parameterquot) strategy. parameters: addBoolean (quotStrategyMAFlagquot, quotStrategy MA Trend onquot, quotot, true) strategy. parameters: addString (quotTrendMAMethodquot, quotTrendMAMethodquot, quotot, quotMVAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotMVAquot, quotquot, quotMVAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotEMAquot, quotquot, quotEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAquot ) strategy. para meter: addStringAlternative (quotTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotSMMAquot, quote, quotSMMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotHMAquot, quotot, quotHMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotZeroLagEMAquot, quot, quotZeroLagEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotDEMAquot, quotot, quotDEMAquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotT3quot, quototot, quotT3quot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotMedianquo t, quot, quotMedianquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotGeoMeanquot, quotot, quotGeoMeanquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quoteREMAquot, quotot, quotROTotquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotIrquot, quot, quotILRSquot) strategi. parametere: addStringAlternative (quotTrendMAMethodquot, quotIE2quot, quotquot, quotIE2quot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotTriMAgenquot, quotquot, quotTriMAgenquot) strategy. parameters: addStringAlternative (quotTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters: addstring (quotTypequot, quotPrice Typequot , quotquot, quotCquot) strategy. parameters: addStringAlternative (quotTypequot, quotOPENquot, quotot, quotOquot) strategy. parameters: addStringAlternative (quotTypequot, quotHighquot, quotquot, quotHquot) strategy. parameters: addStringAlternative (quotTypequot, quotLOWquot, quotquot , quotLquot) strategy. parameters: addStringAlternative (quotTypequot, quotCLOSEquot, quot, quotCquot) strategy. parameters: addStringAlternative (quotTypequot, quotMEDIANquot, quotot, quotMquot) strategy. parameters: addStringAlternative (quotTypequot, quotTYPICALquot, quotot, quotTquot) strategy. parameters: addStringAlternative (quotTypequot, quoteweightedquot, quotquot, quotWquot) strategy. parameters: addInteger (quotTrendMAPeriodquot, quotTrendMAPeriodquot, quotquot, 200) strategy. parameters: addGroup (quotLevelsquot) strategy. parameters: addInteger (quotOBquot, quotOverbought Levelquot, quotquot, 100) strategy. parameters: addInteger (quotOSquot, quote Oversold Levelquot, quotquot, -100) strategy. parameters: addInteger (quotOBCquot, quotOverbought Confirmation Levelquot, quotot, 150) strategy. parameters: addInteger (quotOSCquot, quote Oversold Bekreftelse Levelquot, kvot, -150) - Pris abonnementsparametere (bud eller spørspris, tidsramme) strategy. parameters: addGroup (quotPricequot) strategi. parametere: addString (quotPTquot, quotPrice Typequot, quotot, quotBidquot) strategy. parameters: addStringAlternative (quotPTquot, quotBidquot, quototot, quotBidquot) strategy. parameters: addStringAlternative (quotPTquot, quotAquot, quotquot, quotAquot) - De globale variablene lokale BAR nil - - Prisoversikten vi abonnementet på lokal først - indeksen for den eldste perioden der vi kan sjekke om glidende gjennomsnitt har blitt krysset lokalt OB, OS, OBC, OSC lokal CCI lokal Topp, Bunn lokal gBTFSource - strømmer lokal BTFTrendMAMethod lokal BTFTrendMAPeriod lokal BTFTrendMA lokal gSource - streams lokal TrendMAMethod lokal TrendMAPeriod lokal TrendMA lokal upArrow nil lokal nedArrow nil lokal MAINTFID 1 lokal BTFID 2 lokal BTFP1 lokal BTFType lokal SoundFile nil lokal TilbakevendendeSound falsk lokal ALLOWEDSIDE lokal S - Oppsett lokal T - Trigger lokal CT - - Bekreftet Trigger lokal lookBack lokal ShowAlert lokal Email lokal SendEmail lokal BaseSize funksjon Forbered () - Forbered alle d ata. -- The function is called once when the strategy is about to be started. -- check moving average parameters OBinstance. parameters. OB OS instance. parameters. OS OBC instance. parameters. OBC OSC instance. parameters. OSC CCIP instance. parameters. CCIP Sinstance. parameters. S Tinstance. parameters. T CTinstance. parameters. CT --downArrow instance:createTextOutput (quotUpquot, quotUpquot, quotWingdings 3quot, 20, core. HCenter, core. VTop, instance. parameters. Bottom, 0) --upArrow instance:createTextOutput (quotDownquot, quotDownquot, quotWingdings 3quot, 20, core. HCenter, core. VBottom, instance. parameters. Top, 0) quott1quot, quotThe strategy cannot be applied on ticks. quot) -- name the indicator local name profile:id(). quot, quot. instance. bid:name(). quot, cciquot. CCIP. quot, quot. instance. parameters. TF. quot, quot. ALLOWEDSIDE. quot quot instance:name(name) -- setup the signal. pay attention, we pass quotShowAlertquot (value initially taken from the instance. parameters. ShowAlert) -- here, so, we dont check whether alerts are requested anymore. -- and finally subscribe for the ticks of the instrument the user initially chosen to run the strategy for to -- have our strategy activated once. BAR ExtSubscribe(1, nil, instance. parameters. TF, true, quotbarquot) -- create indicators CCI core. indicators:create(quotCCIquot, BAR, CCIP) BTFTrendMAMethodinstance. parameters. BTFTrendMAMethod BTFTrendMAPeriodinstance. parameters. BTFTrendMAPeriod BTFTypeinstance. parameters. BTFType TrendMAMethodinstance. parameters. TrendMAMethod TrendMAPeriodinstance. parameters. TrendMAPeriod Typeinstance. parameters. Type gSource ExtSubscribe(MAINTFID, nil, instance. parameters. TF, instance. parameters. Type quotBidquot, quotbarquot) gBTFSource ExtSubscribe(BTFID, nil, instance. parameters. BTF, instance. parameters. BTFType quotBidquot, quotbarquot) if BTFType quotOquot then BTFP1 gBTFSource. open elseif BTFType quotHquot then BTFP1 gBTFSource. high elseif BTFType quotLquot then BTFP1 gBTFSource. low elseif BTFType quotMquot then BTFP1 gBTFSource. median elseif BTFType quotTquot then BTFP1 gBTFSource. typical elseif BTFType quotWquot then BTFP1 gBTFSource. weighted else BTFP1 gBTFSource. close end if Type quotOquot then P1 gSource. open elseif Type quotHquot then P1 gSource. high elseif Type quotLquot then P1 gSource. low elseif Type quotMquot then P1 gSource. median elseif Type quotTquot then P1 gSource. typical elseif Type quotWquot then P1 gSource. weighted else P1 gSource. close end BTFTrendMA core. indicators:create(quotAVERAGESquot, BTFP1, BTFTrendMAMethod, BTFTrendMAPeriod, false) TrendMA core. indicators:create(quotAVERAGESquot, P1, TrendMAMethod, TrendMAPeriod, false) -- and get the oldest index of the bar we can work at first math. max(CCI. DATA:first(), TrendMA. DATA:first(), BTFTrendMA. DATA:first()) end -- the function is called every time when any subscribed price is changed. For tick subscribtions the function is called -- for every tick, for the bar subscribtions the function is called when the candle is closed (in other words, when -- the first tick of the next candle appears). function ExtUpdate(id, source, period) if id 1 then -- on the user chosen subscription (can be either tick or bar subscribtion). -- update indicators CCI:update(core. UpdateLast) TrendMA:update(core. UpdateLast) -- if we have enough bars in the history to work if id MAINTFID and gBTFSource:size() gt 0 then TrendMA:update(core. UpdateLast) local btfPeriod core. findDate(gBTFSource, gSource:date(period), true) -- if we have enough bars in the history to work Signal (quotTP0 - START: btfPeriod(quot. tostring(btfPeriod). quot) gt first(quot. tostring(first). quot) 1quot ) if btfPeriod gt first 1 then Signal (quotTP0a - quot. quotbtfPeriod gt first 1quot) -- This bit added for signalling only if BTFMAFlag then if gBTFSource. close91period93 lt BTFTrendMA. DATA91period93 then Signal (quotTP1 - BTFtrend Downquot) BTFtrendDir quotDownquot elseif gBTFSource. close91period93 lt BTFTrendMA. DATA91period93 then Signal (quotTP2 - BTFtrend Upquot) BTFtrendDir quotUpquot end else BTFdir quotOffquot Signal (quotTP3 - BTFtrend Offquot) end if MAFlag then if gSource. close91period93 lt TrendMA. DATA91period93 then Signal (quotTP4 - trend Downquot) trendDdir quotDownquot elseif gBTFSource. close91period93 lt BTFTrendMA. DATA91period93 then Signal (quotTP5 - trend Upquot) trendDdir quotUpquot end else trendDdir quotOffquot Signal (quotTP6 - trend Offquot) end if S and core. crossesOver(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then Signal ( quotSell Setup: Crossing above OverBoughtquot) elseif S and core. crossesUnder(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then Signal (quotBuy Setup: Crossing Below OverSoldquot) end if T and core. crossesOver(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWE DSIDE quotUpquot) then Signal (quotBuy Trigger: Crossing above OverSoldquot) elseif T and core. crossesUnder(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then Signal (quotSell Trigger: Confirmed Crossing below OverBoughtquot) end if core. crossesOver(CCI. DATA, OBC, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then TOP true end if core. crossesUnder(CCI. DATA, OSC, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then BOTTOM true end if CT and core. crossesOver(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and BOTTOM and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then BOTTOM false Signal (quotBuy Trigger: Confirmed Crossing above OverSoldquot) elseif CT and core. crossesUnder(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and TOP and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then TOP false Signal (quotSell Trigger: Confirmed Crossing below OverBoughtquot) end -- end of confirmation trigger signalling end end end end -- eof function ExtUpdate function Initialization() AllowMultiple instance. parameters. AllowMultiple ALLOWEDSIDE instance. parameters. ALLOWEDSIDE --local S instance. parameters. S --local T instance. parameters. T --local CT instance. parameters. CT local PlaySound instance. parameters. PlaySound if PlaySound then SoundFile instance. parameters. SoundFile else SoundFile nil end assert(not(PlaySound) or (PlaySound and SoundFile quotquot), quotSound file must be chosenquot) ShowAlert instance. parameters. ShowAlert RecurrentSound instance. parameters. RecurrentSound SendEmail instance. parameters. SendEmail if SendEmail then Email instance. parameters. Email else Email nil end assert(not(SendEmail) or (SendEmail and Email quotquot), quotE-mail address must be specifiedquot) end function Signal (Label) if ShowAlert then terminal:alertMessage(instance. bid:instrument(), instance. bid91NOW93, Label, instance. bid:date(NOW)) end nil then terminal:alertSound(SoundFile, RecurrentSound) end nil then terminal:alertEmail(Email, Label, profile:id(). quot(quot. instance. bid:instrument(). quot)quot. instance. bid91NOW93..quot, quot. Label..quot, quot. instance. bid:date(NOW)) end end You have sent id into subscribe: BAR ExtSubscribe(1. ) When update is called with id 1, the period is valid for the BAR source only. gBTFSource has different timeframe and the period with id 1 is not valid to it. You should use converted period (btfPeriod) to access gBTFSourceBTFTrendMA values. Code: Select all gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 instead of Code: Select all gBTFSource. close91period93 lt BTFTrendMA. DATA91period93 first value should be quotsplittedquot into two: Code: Select all first math. max(CCI. DATA:first(), TrendMA. DATA:first()) btfFirst BTFTrendMA. DATA:first() . if period gt first then . -- and if btfPeriod gt btfFirst then And Ive made a misprint over here: Code: Select all --local btfPeriod core. findDate(gBTFSource, BAR:date(period), true) local btfPeriod core. findDate(gBTFSource, BAR:date(period), false) Corrected code: Code: Select all -- Intoduce the strategy to the host application (for example, Marketscope). -- The function is called once when the host application initially loads the strategy. function Init() strategy:name(quotLonNY02Signalquot) strategy:description(quotLonNY02 Signalling Strategyquot) -- Fast and slow moving average parameters strategy. parameters:addGroup(quotMain Controlsquot) strategy. parameters:addString(quotTFquot, quotStrategy Time Framequot, quotquot, quotm5quot) strategy. parameters:setFlag(quotTFquot, core. FLAGPERIODS) strategy. parameters:addString(quotALLOWEDSIDEquot, quotAllowed sidequot, quotAllowed side for trading or signaling, can be Sell, Buy or Bothquot, quotBothquot) strategy. parameters:addStringAlternative(quotALLOWEDSIDEquot, quotBothquot, quotquot, quotBothquot) strategy. parameters:addStringAlternative(quotALLOWEDSIDEquot, quotUpquot, quotquot, quotUpquot) strategy. parameters:addStringAlternative(quotALLOWEDSIDEquot, quotDnquot, quotquot, quotDnquot) strategy. parameters:addBoolean(quotSquot, quotSetup Alertquot, quotquot, true) strategy. parameters:addBoolean(quotTquot, quotTrigger Alertquot, quotquot, true) strategy. parameters:addBoolean( quotCTquot, quotConfirmed Trigger Alertquot, quotquot, false) strategy. parameters:addGroup(quotAlertsquot) strategy. parameters:addBoolean(quotShowAlertquot, quotShowAlertquot, quotquot, true) strategy. parameters:addBoolean(quotPlaySoundquot, quotPlay Soundquot, quotquot, true) strategy. parameters:addFile(quotSoundFilequot, quotSound Filequot, quotquot, quotquot) strategy. parameters:setFlag(quotSoundFilequot, core. FLAGSOUND) strategy. parameters:addBoolean(quotRecurrentSoundquot, quotRecurrent Soundquot, quotquot, true) strategy. parameters:addBoolean(quotSendEmailquot, quotSend Emailquot, quotquot, false) strategy. parameters:addString(quotEmailquot, quotEmailquot, quotquot, quotquot) strategy. parameters:setFlag(quotEmailquot, core. FLAGEMAIL) strategy. parameters:addGroup(quotCCI Parameterquot) strategy. parameters:addInteger(quotCCIPquot, quotCCI periodquot, quotquot, 20, 2, 200) strategy. parameters:addGroup(quotBigger Time Frame MA Parameterquot) strategy. parameters:addBoolean(quotBTFMAFl agquot, quotBigger Time Frame MA Trend onquot, quotquot, true) strategy. parameters:addString(quotBTFTrendMAMethodquot, quotBTFTrendMAMethodquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotMVAquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotEMAquot, quotquot, quotEMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotSMMAquot, quotquot , quotSMMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotHMAquot, quotquot, quotHMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotZeroLagEMAquot, quotquot, quotZeroLagEMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotDEMAquot, quotquot, quotDEMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotT3quot, quotquot, quotT3quot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotMedianquot, quotquot, quotMedianquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotGeoMeanquot, quotquot, quotGeoMeanquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotREMAquot, quotquot, quotREMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotILRSquot, quotquot, quotILRSquot) strategy. parameters :addStringAlternative(quotBTFTrendMAMethodquot, quotIE2quot, quotquot, quotIE2quot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotTriMAgenquot, quotquot, quotTriMAgenquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters:addString(quotBTFTypequot, quotBTFPrice Typequot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotOPENquot, quotquot, quotOquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotHIGHquot, quotquot, quotHquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotLOWquot, quotquot, quotLquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotCLOSEquot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotMEDIANquot, quotquot, quotMquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotTYPICALquot, quotquot, quotTquot) strategy. parameters:addStringAlternativ e(quotBTFTypequot, quotWEIGHTEDquot, quotquot, quotWquot) strategy. parameters:addInteger(quotBTFTrendMAPeriodquot, quotBTFTrendMAPeriodquot, quotquot, 200) strategy. parameters:addString(quotBTFquot, quotBigger Time Framequot, quotquot, quotm30quot) strategy. parameters:setFlag(quotBTFquot, core. FLAGPERIODS) strategy. parameters:addGroup(quotStrategy Time Frame MA Parameterquot) strategy. parameters:addBoolean(quotStrategyMAFlagquot, quotStrategy MA Trend onquot, quotquot, true) strategy. parameters:addString(quotTrendMAMethodquot, quotTrendMAMethodquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotMVAquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotEMAquot, quotquot, quotEMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAquot) strategy. para meters:addStringAlternative(quotTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotSMMAquot, quotquot, quotSMMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotHMAquot, quotquot, quotHMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotZeroLagEMAquot, quotquot, quotZeroLagEMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotDEMAquot, quotquot, quotDEMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotT3quot, quotquot, quotT3quot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotMedianquo t, quotquot, quotMedianquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotGeoMeanquot, quotquot, quotGeoMeanquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotREMAquot, quotquot, quotREMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotILRSquot, quotquot, quotILRSquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotIE2quot, quotquot, quotIE2quot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotTriMAgenquot, quotquot, quotTriMAgenquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters:addString(quotTypequot, quotPrice Typequot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotTypequot, quotOPENquot, quotquot, quotOquot) strategy. parameters:addStringAlternative(quotTypequot, quotHIGHquot, quotquot, quotHquot) strategy. parameters:addStringAlternative(quotTypequot, quotLOWquot, quotquot , quotLquot) strategy. parameters:addStringAlternative(quotTypequot, quotCLOSEquot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotTypequot, quotMEDIANquot, quotquot, quotMquot) strategy. parameters:addStringAlternative(quotTypequot, quotTYPICALquot, quotquot, quotTquot) strategy. parameters:addStringAlternative(quotTypequot, quotWEIGHTEDquot, quotquot, quotWquot) strategy. parameters:addInteger(quotTrendMAPeriodquot, quotTrendMAPeriodquot, quotquot, 200) strategy. parameters:addGroup(quotLevelsquot) strategy. parameters:addInteger(quotOBquot, quotOverbought Levelquot, quotquot, 100) strategy. parameters:addInteger(quotOSquot, quot Oversold Levelquot, quotquot, -100) strategy. parameters:addInteger(quotOBCquot, quotOverbought Confirmation Levelquot, quotquot, 150) strategy. parameters:addInteger(quotOSCquot, quot Oversold Confirmation Levelquot, quotquot, -150) -- Price subscription parameters (bid or ask price, time frame) strategy. parameters:addGroup(quotPricequot) strategy. parameters:addString(quotPTquot, quotPrice Typequot, quotquot, quotBidquot) strategy. parameters:addStringAlternative(quotPTquot, quotBidquot, quotquot, quotBidquot) strategy. parameters:addStringAlternative(quotPTquot, quotAskquot, quotquot, quotAskquot) -- The global variables local BAR nil -- the price history we subscribed for local first -- the index of the oldest period where we can check whether moving averages has been crossed local btfFirst local OB, OS, OBC, OSC local CCI local Top, Bottom local gBTFSource -- streams local BTFTrendMAMethod local BTFTrendMAPeriod local BTFTrendMA local TrendMAMethod local TrendMAPeriod local TrendMA local upArrow nil local downArrow nil local STRATTFID 1 local BTFID 2 local BTFP1 local BTFType local SoundFile nil local RecurrentSound false local ALLOWEDSIDE local S -- Setup local T -- Trigger local CT -- Confirmed Trigger local lookBack local ShowAlert local Email local SendEmail local BaseSize function Prepare() -- Prepare all the data. -- The function is called once when the strategy is about to be started. -- check moving average parameters OBinstance. parameters. OB OS instance. parameters. OS OBC instance. parameters. OBC OSC instance. parameters. OSC CCIP instance. parameters. CCIP Sinstance. parameters. S Tinstance. parameters. T CTinstance. parameters. CT --downArrow instance:createTextOutput (quotUpquot, quotUpquot, quotWingdings 3quot, 20, core. HCenter, core. VTop, instance. parameters. Bottom, 0) --upArrow instance:createTextOutput (quotDownquot, quotDownquot, quotWingdings 3quot, 20, core. HCenter, core. VBottom, instance. parameters. Top, 0) quott1quot, quotThe strategy cannot be applied on ticks. quot) -- name the indicator local name profile:id(). quot, quot. instance. bid:name(). quot, cciquot. CCIP. quot, quot. instance. parameters. TF. quot, quot. ALLOWEDSIDE. quot quot instance:name(name) -- setup the signal. pay attention, we pass quotShowAlertquot (value initially taken from the instance. parameters. ShowAlert) -- here, so, we dont check whether alerts are requested anymore. -- and finally subscribe for the ticks of the instrument the user initially chosen to run the strategy for to -- have our strategy activated once. BAR ExtSubscribe(STRATTFID, nil, instance. parameters. TF, true, quotbarquot) -- create indicators CCI core. indicators:create(quotCCIquot, BAR, CCIP) BTFTrendMAMethodinstance. parameters. BTFTrendMAMethod BTFTrendMAPeriodinstance. parameters. BTFTrendMAPeriod BTFTypeinstance. parameters. BTFType TrendMAMethodinstance. parameters. TrendMAMethod TrendMAPeriodinstance. parameters. TrendMAPeriod Typeinstance. parameters. Type gBTFSource ExtSubscribe(BTFID, nil, instance. parameters. BTF, instance. parameters. BTFType quotBidquot, quotbarquot) if BTFType quotOquot then BTFP1 gBTFSource. open elseif BTFType quotHquot then BTFP1 gBTFSource. high elseif BTFType quotLquot then BTFP1 gBTFSource. low elseif BTFType quotMquot then BTFP1 gBTFSource. median elseif BTFType quotTquot then BTFP1 gBTFSource. typical elseif BTFType quotWquot then BTFP1 gBTFSource. weighted else BTFP1 gBTFSource. close end if Type quotOquot then P1 BAR. open elseif Type quotHquot then P1 BAR. high elseif Type quotLquot then P1 BAR. low elseif Type quotMquot then P1 BAR. median elseif Type quotTquot then P1 BAR. typical elseif Type quotWquot then P1 BAR. weighted else P1 BAR. close end BTFTrendMA core. indicators:create(quotAVERAGESquot, BTFP1, BTFTrendMAMethod, BTFTrendMAPeriod, false) TrendMA core. indicators:create(quotAVERAGESquot, P1, TrendMAMethod, TrendMAPeriod, false) -- and get the oldest index of the bar we can work at first math. max(CCI. DATA:first(), TrendMA. DATA:first()) btfFirst BTFTrendMA. DATA:first() end -- the function is called every time when any subscribed price is changed. For tick subscribtions the function is called -- for every tick, for the bar subscribtions the function is called when the candle is closed (in other words, when -- the first tick of the next candle appears). function ExtUpdate(id, source, period) if id STRATTFID and period gt first then -- on the user chosen subscription (can be either tick or bar subscribtion). -- update indicators CCI:update(core. UpdateLast) TrendMA:update(core. UpdateLast) -- if we have enough bars in the history to work if gBTFSource:size() gt 0 then local btfPeriod core. findDate(gBTFSource, BAR:date(period), false) -- if we have enough bars in the history to work Signal (quotTP0 - START: btfPeriod(quot. tostring(btfPeriod). quot) gt first(quot. tostring(first). quot)quot ) if btfPeriod gt btfFirst then Signal (quotTP0a - quot. quotbtfPeriod gt btfFirstquot) -- This bit added for signalling only if BTFMAFlag then if gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 then Signal (quotTP1 - BTFtrend Downquot) BTFtrendDir quotDownquot elseif gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 then Signal (quotTP2 - BTFtrend Upquot) BTFtrendDir quotUpquot end else BTFdir quotOffquot Signal (quotTP3 - BTFtrend Offquot) end if MAFlag then if BAR. close91period93 lt TrendMA. DATA91period93 then Signal (quotTP4 - trend Downquot) trendDdir quotDownquot el seif gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 then Signal (quotTP5 - trend Upquot) trendDdir quotUpquot end else trendDdir quotOffquot Signal (quotTP6 - trend Offquot) end if S and core. crossesOver(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then Signal ( quotSell Setup: Crossing above OverBoughtquot) elseif S and core. crossesUnder(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then Signal (quotBuy Setup: Crossing Below OverSoldquot) end if T and core. crossesOver(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then Signal (quotBuy Trigger: Crossing above OverSoldquot) elseif T and core. crossesUnder(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then Signal (quotSell Trigger: Confirmed Crossing below OverBoughtquot) end if core. crossesOver(CCI. DATA, OBC, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then TOP true end if core. crossesUnder(CCI. DATA, OSC, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then BOTTOM true end if CT and core. crossesOver(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and BOTTOM and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then BOTTOM false Signal (quotBuy Trigger: Confirmed Crossing above OverSoldquot) elseif CT and core. crossesUnder(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and TOP and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then TOP false Signal (quotSell Trigger: Confirmed Crossing below OverBoughtquot) end -- end of confirmation trigger signalling end end end end -- eof function ExtUpdate function Initialization() AllowMultiple instance. parameters. AllowMultiple ALLOWEDSIDE instance. parameters. ALLOWEDSIDE --local S instance. parameters. S --local T instance. parameters. T --local CT instance. parameters. CT local PlaySound instance. parameters. PlaySound if PlaySound then SoundFile instance. parameters. SoundFile else SoundFile nil end assert(not(PlaySound) or (PlaySound and SoundFile quotquot), quotSound file must be chosenquot) ShowAlert instance. parameters. ShowAlert RecurrentSound instance. parameters. RecurrentSound SendEmail instance. parameters. SendEmail if SendEmail then Email instance. parameters. Email else Email nil end assert(not(SendEmail) or (SendEmail and Email quotquot), quotE-mail address must be specifiedquot) end function Signal (Label) if ShowAlert then terminal:alertMessage(instance. bid:instrument(), instance. bid91NOW93, Label, instance. bid:date(NOW)) end nil then terminal:alertSound(SoundFile, RecurrentSound) end nil then terminal:alertEmail(Email, Label, profile:id(). quot(quot. instance. bid:instrument(). quot)quot. instance. bid91NOW93..quot, quot. Label..quot, quot. instance. bid:date(NOW)) end end There are only three sports: bullfighting, motor racing, and mountaineering all the rest are merely games. (c) Ernest Hemingway Hi Victor, Ive been correcting some of my typose too. This is getting really close now but problems still persist, this is now with line 295 as follows if gBTFSource. closebtfPeriod lt BTFTrendMA. DATAbtfPeriod then. the error is quotindex out of rangequot the values are as follows:- gBTFSource. close299 (1.44306) lt BTFTrendMA. DATA299 ( ) (btfFirst 199) I separated the two sides out into 2 lines as follows:- -- This works ok local y gBTFSource. closebtfPeriod -- this one gives ERROR INDEX OUT OF RANGE (does this line look right to you) local x BTFTrendMA. DATAbtfPeriod BTFTrendMA is created as follows: BTFTrendMA core. indicators:create(quotAVERAGESquot, BTFP1, BTFTrendMAMethod, BTFTrendMAPeriod, false) Is there something wrong with this line if not Im Now out of ideas to track this further Full code here Code: Select all -- Intoduce the strategy to the host application (for example, Marketscope). -- The function is called once when the host application initially loads the strategy. function Init() strategy:name(quotLonNYBTFsignalquot) strategy:description(quotLonNY Bigger Time Frame Signalling Strategyquot) -- Fast and slow moving average parameters strategy. parameters:addGroup(quotMain Controlsquot) strategy. parameters:addString(quotTFquot, quotStrategy Time Framequot, quotquot, quotm5quot) strategy. parameters:setFlag(quotTFquot, core. FLAGPERIODS) strategy. parameters:addString(quotALLOWEDSIDEquot, quotAllowed sidequot, quotAllowed side for trading or signaling, can be Sell, Buy or Bothquot, quotBothquot) strategy. parameters:addStringAlternative(quotALLOWEDSIDEquot, quotBothquot, quotquot, quotBothquot) strategy. parameters:addStringAlternative(quotALLOWEDSIDEquot, quotUpquot, quotquot, quotUpquot) strategy. parameters:addStringAlternative(quotALLOWEDSIDEquot, quotDnquot, quotquot, quotDnquot) strategy. parameters:addBoolean(quotSquot, quotSetup Alertquot, quotquot, false) strategy. parameters:addBoolean(quotTquot, quotTrigger Alertquot, quotquot, true) strategy. param eters:addBoolean(quotCTquot, quotConfirmed Trigger Alertquot, quotquot, false) strategy. parameters:addGroup(quotAlertsquot) strategy. parameters:addBoolean(quotShowAlertquot, quotShowAlertquot, quotquot, true) strategy. parameters:addBoolean(quotPlaySoundquot, quotPlay Soundquot, quotquot, true) strategy. parameters:addFile(quotSoundFilequot, quotSound Filequot, quotquot, quotquot) strategy. parameters:setFlag(quotSoundFilequot, core. FLAGSOUND) strategy. parameters:addBoolean(quotRecurrentSoundquot, quotRecurrent Soundquot, quotquot, true) strategy. parameters:addBoolean(quotSendEmailquot, quotSend Emailquot, quotquot, false) strategy. parameters:addString(quotEmailquot, quotEmailquot, quotquot, quotquot) strategy. parameters:setFlag(quotEmailquot, core. FLAGEMAIL) strategy. parameters:addGroup(quotCCI Parameterquot) strategy. parameters:addInteger(quotCCIPquot, quotCCI periodquot, quotquot, 20, 2, 200) strategy. parameters:addGroup(quotBigger Time Frame MA Parameterquot) strategy. parameters:addBo olean(quotBTFMAFlagquot, quotBigger Time Frame MA Trend onquot, quotquot, true) strategy. parameters:addString(quotBTFTrendMAMethodquot, quotBTFTrendMAMethodquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotMVAquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotEMAquot, quotquot, quotEMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotS MMAquot, quotquot, quotSMMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotHMAquot, quotquot, quotHMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotZeroLagEMAquot, quotquot, quotZeroLagEMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotDEMAquot, quotquot, quotDEMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotT3quot, quotquot, quotT3quot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotMedianquot, quotquot, quotMedianquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotGeoMeanquot, quotquot, quotGeoMeanquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotREMAquot, quotquot, quotREMAquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotILRSquot, quotquot, quotILRSquot) st rategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotIE2quot, quotquot, quotIE2quot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotTriMAgenquot, quotquot, quotTriMAgenquot) strategy. parameters:addStringAlternative(quotBTFTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters:addString(quotBTFTypequot, quotBTFPrice Typequot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotOPENquot, quotquot, quotOquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotHIGHquot, quotquot, quotHquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotLOWquot, quotquot, quotLquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotCLOSEquot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotMEDIANquot, quotquot, quotMquot) strategy. parameters:addStringAlternative(quotBTFTypequot, quotTYPICALquot, quotquot, quotTquot) strategy. parameters:ad dStringAlternative(quotBTFTypequot, quotWEIGHTEDquot, quotquot, quotWquot) strategy. parameters:addInteger(quotBTFTrendMAPeriodquot, quotBTFTrendMAPeriodquot, quotquot, 200) strategy. parameters:addString(quotBTFquot, quotBigger Time Framequot, quotquot, quotm30quot) strategy. parameters:setFlag(quotBTFquot, core. FLAGPERIODS) strategy. parameters:addGroup(quotStrategy Time Frame MA Parameterquot) strategy. parameters:addBoolean(quotStrategyMAFlagquot, quotStrategy MA Trend onquot, quotquot, true) strategy. parameters:addString(quotTrendMAMethodquot, quotTrendMAMethodquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotMVAquot, quotquot, quotMVAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotEMAquot, quotquot, quotEMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotWilderquot, quotquot, quotWilderquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotLWMAquot, quotquot, quotLWMAqu ot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotSineWMAquot, quotquot, quotSineWMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotTriMAquot, quotquot, quotTriMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotLSMAquot, quotquot, quotLSMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotSMMAquot, quotquot, quotSMMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotHMAquot, quotquot, quotHMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotZeroLagEMAquot, quotquot, quotZeroLagEMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotDEMAquot, quotquot, quotDEMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotT3quot, quotquot, quotT3quot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotITrendquot, quotquot, quotITrendquot) strategy. parameters:addStringAlternative(quotTrendMAMethodqu ot, quotMedianquot, quotquot, quotMedianquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotGeoMeanquot, quotquot, quotGeoMeanquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotREMAquot, quotquot, quotREMAquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotILRSquot, quotquot, quotILRSquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotIE2quot, quotquot, quotIE2quot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotTriMAgenquot, quotquot, quotTriMAgenquot) strategy. parameters:addStringAlternative(quotTrendMAMethodquot, quotJSmoothquot, quotquot, quotJSmoothquot) strategy. parameters:addString(quotTypequot, quotPrice Typequot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotTypequot, quotOPENquot, quotquot, quotOquot) strategy. parameters:addStringAlternative(quotTypequot, quotHIGHquot, quotquot, quotHquot) strategy. parameters:addStringAlternative(quotTypequot, quot LOWquot, quotquot, quotLquot) strategy. parameters:addStringAlternative(quotTypequot, quotCLOSEquot, quotquot, quotCquot) strategy. parameters:addStringAlternative(quotTypequot, quotMEDIANquot, quotquot, quotMquot) strategy. parameters:addStringAlternative(quotTypequot, quotTYPICALquot, quotquot, quotTquot) strategy. parameters:addStringAlternative(quotTypequot, quotWEIGHTEDquot, quotquot, quotWquot) strategy. parameters:addInteger(quotTrendMAPeriodquot, quotTrendMAPeriodquot, quotquot, 200) strategy. parameters:addGroup(quotLevelsquot) strategy. parameters:addInteger(quotOBquot, quotOverbought Levelquot, quotquot, 100) strategy. parameters:addInteger(quotOSquot, quot Oversold Levelquot, quotquot, -100) strategy. parameters:addInteger(quotOBCquot, quotOverbought Confirmation Levelquot, quotquot, 150) strategy. parameters:addInteger(quotOSCquot, quot Oversold Confirmation Levelquot, quotquot, -150) -- Price subscription parameters (bid or ask price, time frame) strategy. parameters:addGroup(quotPri cequot) strategy. parameters:addString(quotPTquot, quotPrice Typequot, quotquot, quotBidquot) strategy. parameters:addStringAlternative(quotPTquot, quotBidquot, quotquot, quotBidquot) strategy. parameters:addStringAlternative(quotPTquot, quotAskquot, quotquot, quotAskquot) -- The global variables local BAR nil -- the price history we subscribed for local first -- the index of the oldest period where we can check whether moving averages has been crossed local btfFirst local OB, OS, OBC, OSC local CCI local Top, Bottom local gBTFSource -- streams local BTFTrendMAMethod local BTFTrendMAPeriod local BTFTrendMA local BTFtrendDir local TrendMAMethod local TrendMAPeriod local TrendMA local trendDir local STRATTFID 1 local BTFID 2 local BTFP1 local BTFType local SoundFile nil local RecurrentSound false local ALLOWEDSIDE local S -- Setup local T -- Trigger local CT -- Confirmed Trigger local lookBack local ShowAlert local Email local SendEmail local BaseSize function Prepare() -- Prepare all the data. -- The function is called once when the strategy is about to be started. -- check moving average parameters OBinstance. parameters. OB OS instance. parameters. OS OBC instance. parameters. OBC OSC instance. parameters. OSC CCIP instance. parameters. CCIP Sinstance. parameters. S Tinstance. parameters. T CTinstance. parameters. CT quott1quot, quotThe strategy cannot be applied on ticks. quot) -- name the indicator local name profile:id(). quot, quot. instance. bid:name(). quot, cciquot. CCIP. quot, quot. instance. parameters. TF. quot, quot. ALLOWEDSIDE. quot quot instance:name(name) -- setup the signal. pay attention, we pass quotShowAlertquot (value initially taken from the instance. parameters. ShowAlert) -- here, so, we don-t check whether alerts are requested anymore. -- and finally subscribe for the ticks of the instrument the user initially chosen to run the strategy for to -- have our strategy activated once. BAR ExtSubscribe(STRATTFID, nil, instance. parameters. TF, true, quotbarquot) -- create indicators CCI core. indicators:create(quotCCIquot, BAR, CCIP) BTFTrendMAMethodinstance. parameters. BTFTrendMAMethod BTFTrendMAPeriodinstance. parameters. BTFTrendMAPeriod BTFTypeinstance. parameters. BTFType BTFMAFlag instance. parameters. BTFMAFlag TrendMAMethodinstance. parameters. TrendMAMethod TrendMAPeriodinstance. parameters. TrendMAPeriod Typeinstance. parameters. Type MAFlag instance. parameters. MAFlag gBTFSource ExtSubscribe(BTFID, nil, instance. parameters. BTF, instance. parameters. BTFType quotBidquot, quotbarquot) if BTFType quotOquot then BTFP1 gBTFSource. open elseif BTFType quotHquot then BTFP1 gBTFSource. high elseif BTFType quotLquot then BTFP1 gBTFSource. low elseif BTFType quotMquot then BTFP1 gBTFSource. median elseif BTFType quotTquot then BTFP1 gBTFSource. typical elseif BTFType quotWquot then BTFP1 gBTFSource. weighted else BTFP1 gBTFSource. close end if Type quotOquot then P1 BAR. open elseif Type quotHquot then P1 BAR. high elseif Type quotLquot then P1 BAR. low elseif Type quotMquot then P1 BAR. median elseif Type quotTquot then P1 BAR. typical elseif Type quotWquot then P1 BAR. weighted else P1 BAR. close end BTFTrendMA core. indicators:create(quotAVERAGESquot, BTFP1, BTFTrendMAMethod, BTFTrendMAPeriod, false) TrendMA core. indicators:create(quotAVERAGESquot, P1, TrendMAMethod, TrendMAPeriod, false) -- and get the oldest index of the bar we can work at first math. max(CCI. DATA:first(), TrendMA. DATA:first()) btfFirst BTFTrendMA. DATA:first() end -- the function is called every time when any subscribed price is changed. For tick subscribtions the function is called -- for every tick, for the bar subscribtions the function is called when the candle is closed (in other words, when -- the first tick of the next candle appears). function ExtUpdate(id, source, period) if id STRATTFID and period gt first then -- on the user chosen subscription (can be either tick or bar subscribtion). -- update indicators CCI:update(core. UpdateLast) TrendMA:update(core. UpdateLast) -- if we have enough bars in the history to work if gBTFSource:size() gt 0 then local btfPeriod core. findDate(gBTFSource, BAR:date(period), false) -- if we have enough bars in the history to work if btfPeriod gt btfFirst then -- This works ok local y gBTFSource. close91btfPeriod93 -- this one gives ERROR INDEX OUT OF RANGE local x BTFTrendMA. DATA91btfPeriod93 -- This bit added for signalling only if BTFMAFlag true then Signal(quotgBTFSource. close91quot. tostring(btfPeriod). quot93 (quot. tostring(gBTFSource. close91btfPeriod93). quot) lt BTFTrendMA. DATA91quot. tostring(btfPeriod). quot93 ( ) (btfFirst quot. tostring(btfFirst)) if gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 then --Signal (quotTP1 - BTFtrend Downquot) BTFtrendDir quotDownquot elseif gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 then --Signal (quotTP2 - BTFtrend Upquot) BTFtrendDir quotUpquot end el se BTFdir quotOffquot --Signal (quotTP3 - BTFtrend Offquot) end if MAFlag then if BAR. close91period93 lt TrendMA. DATA91period93 then -- Signal (quotTP4 - trend Downquot) trendDdir quotDownquot elseif gBTFSource. close91btfPeriod93 lt BTFTrendMA. DATA91btfPeriod93 then -- Signal (quotTP5 - trend Upquot) trendDdir quotUpquot end else trendDdir quotOffquot --Signal (quotTP6 - trend Offquot) end if S and core. crossesOver(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then Signal ( quotSell Setup: Crossing above OverBoughtquot) elseif S and core. crossesUnder(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then Signal (quotBuy Setup: Crossing Below OverSoldquot) end if T and core. crossesOver(CCI. DATA , OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then Signal (quotBuy Trigger: Crossing above OverSoldquot) elseif T and core. crossesUnder(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then Signal (quotSell Trigger: Confirmed Crossing below OverBoughtquot) end if core. crossesOver(CCI. DATA, OBC, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then TOP true end if core. crossesUnder(CCI. DATA, OSC, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then BOTTOM true end if CT and core. crossesOver(CCI. DATA, OS, period) and (BTFtrendDir quotUpquot or BTFtrendDir quotOffquot) and (trendDir quotUpquot or trendDir quotOffquot) and BOTTOM and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotUpquot) then BOTTOM false Signal (quotBuy Trigger: Confirmed Crossing above OverSoldquot) elseif CT and core. crossesUnder(CCI. DATA, OB, period) and (BTFtrendDir quotDownquot or BTFtrendDir quotOffquot) and (trendDir quotDownquot or trendDir quotOffquot) and TOP and (ALLOWEDSIDE quotBothquot or ALLOWEDSIDE quotDnquot) then TOP false Signal (quotSell Trigger: Confirmed Crossing below OverBoughtquot) end -- end of confirmation trigger signalling end end end end -- eof function ExtUpdate function Initialization() AllowMultiple instance. parameters. AllowMultiple ALLOWEDSIDE instance. parameters. ALLOWEDSIDE --local S instance. parameters. S --local T instance. parameters. T --local CT instance. parameters. CT local PlaySound instance. parameters. PlaySo und if PlaySound then SoundFile instance. parameters. SoundFile else SoundFile nil end assert(not(PlaySound) or (PlaySound and SoundFile quotquot), quotSound file must be chosenquot) ShowAlert instance. parameters. ShowAlert RecurrentSound instance. parameters. RecurrentSound SendEmail instance. parameters. SendEmail if SendEmail then Email instance. parameters. Email else Email nil end assert(not(SendEmail) or (SendEmail and Email quotquot), quotE-mail address must be specifiedquot) end function Signal (Label) if ShowAlert then terminal:alertMessage(instance. bid:instrument(), instance. bid91NOW93, Label, instance. bid:date(NOW)) end nil then terminal:alertSound(SoundFile, RecurrentSound) end nil then terminal:alertEmail(Email, Label, profile:id(). quot(quot. instance. bid:instrument(). quot)quot. instance. bid91NOW93..quot, quot. Label..quot, quot. instance. bid:date(NOW)) end end

No comments:

Post a Comment