Stock Portfolio Organizer
The ultimate porfolio management solution.
Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Adaptive Bollinger for Amibroker (AFL)
Copy & Paste Friendly
Back
_SECTION_BEGIN("Adaptive BB"); Color = ParamColor("Color", colorLightGrey ); Style = ParamStyle("Style") | styleNoRescale; top20 = BBandTop(C, 20, 2); bot20 = BBandBot(C, 20, 2); top21 = BBandTop(C, 20, 2.1); bot21 = BBandBot(C, 20, 2.1); top22 = BBandTop(C, 20, 2.2); bot22 = BBandBot(C, 20, 2.2); top23 = BBandTop(C, 20, 2.3); bot23 = BBandBot(C, 20, 2.3); top24 = BBandTop(C, 20, 2.4); bot24 = BBandBot(C, 20, 2.4); top25 = BBandTop(C, 20, 2.5); bot25 = BBandBot(C, 20, 2.5); top19 = BBandTop(C, 20, 1.9); bot19 = BBandBot(C, 20, 1.9); top18 = BBandTop(C, 20, 1.8); bot18 = BBandBot(C, 20, 1.8); top17 = BBandTop(C, 20, 1.7); bot17 = BBandBot(C, 20, 1.7); top16 = BBandTop(C, 20, 1.6); bot16 = BBandBot(C, 20, 1.6); top15 = BBandTop(C, 20, 1.5); bot15 = BBandBot(C, 20, 1.5); function getBBBot(SD) { switch(SD) { case 1.5: ret = bot15; case 1.6: ret = bot16; case 1.7: ret = bot17; case 1.8: ret = bot18; case 1.9: ret = bot19; case 2.0: ret = bot20; case 2.1: ret = bot21; case 2.2: ret = bot22; case 2.3: ret = bot23; case 2.4: ret = bot24; case 2.5: ret = bot25; } return ret; } function getBBTop(SD) { switch(SD) { case 1.5: ret = top15; case 1.6: ret = top16; case 1.7: ret = top17; case 1.8: ret = top18; case 1.9: ret = top19; case 2.0: ret = top20; case 2.1: ret = top21; case 2.2: ret = top22; case 2.3: ret = top23; case 2.4: ret = top24; case 2.5: ret = top25; } return ret; } LookBack = 100; threshold = 0.05; StdDevs = 2; CurrStdDev = 2; for(i = LookBack; i < BarCount; i++) { Count = 0; top = getBBTop(CurrStdDev); bot = getBBBot(CurrStdDev); for(j = i - LookBack; j < i; j++) { if(H[j] > top[j]) Count++; if(L[j] < bot[j]) Count++; } if(Count >= (LookBack * threshold)) { CurrStdDev += 0.1; if(CurrStdDev > 2.5) CurrStdDev = 2.5; StdDevs[i] = CurrStdDev; } else { CurrStdDev -= 0.1; if(CurrStdDev < 1.5) CurrStdDev = 1.5; StdDevs[i] = CurrStdDev; } } EMAPrice = EMA(C, 20); StdDevPrice = StDev(C, 20); bandUpper = EMAPrice + StdDevPrice * StdDevs; bandLower = EMAPrice - StdDevPrice * StdDevs; Plot(bandUpper, "BBTop" + _PARAM_VALUES(), Color, Style ); Plot(bandLower, "BBBot" + _PARAM_VALUES(), Color, Style ); _SECTION_END();