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 ....
Moving Averages, Pivots and Signals for Amibroker (AFL)
Rating:
3 / 5 (Votes 2)
Tags:
trading system, amibroker, stop loss, pivots
Moving Averages, Pivots and Signals
Similar Indicators / Formulas
Simple Intraday System
Submitted
by nikh0024 about 14 years ago
lincons pivot with swing trading
Submitted
by vijapar about 12 years ago
CAMARILLA S1-R1 (tiger)
Submitted
by tigernifty almost 13 years ago
Visual ATR Stop Loss System
Submitted
by siivaramm over 14 years ago
MPLite--KAKA & Heinkin Ashi & NickMA
Submitted
by pharaoh about 14 years ago
ATR Stop Loss System
Submitted
by esnataraj over 14 years ago
Indicator / Formula
Copy & Paste Friendly
_SECTION_BEGIN("BAB 18 for analysis"); SetChartOptions(0,chartShowArrows|chartShowDates); _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )); Plot( C, "Close", ParamColor("Color", colorWhite ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); MinBars = 200; MinBarsOK = IIf(BarCount >= MinBars, True, False); if (MinBarsOK) { ; /* ********************************** Code to automatically identify pivots ********************************** */ // -- what will be our lookback range for the hh and ll? farback=Param("How Far back to go",200,1,50,1); nBars = Param("Number of bars", 100, 0, 50, 1); // -- Create 0-initialized arrays the size of barcount aHPivs = H - H; aLPivs = L - L; // -- More for future use, not necessary for basic plotting aHPivHighs = H - H; aLPivLows = L - L; aHPivIdxs = H - H; aLPivIdxs = L - L; nHPivs = 0; nLPivs = 0; lastHPIdx = 0; lastLPIdx = 0; lastHPH = 0; lastLPL = 0; curPivBarIdx = 0; // -- looking back from the current bar, how many bars // back were the hhv and llv values of the previous // n bars, etc.? aHHVBars = HHVBars(H, nBars); aLLVBars = LLVBars(L, nBars); aHHV = HHV(H, nBars); aLLV = LLV(L, nBars); // -- Would like to set this up so pivots are calculated back from // last visible bar to make it easy to "go back" and see the pivots // this code would find. However, the first instance of // _Trace output will show a value of 0 aVisBars = Status("barvisible"); nLastVisBar = LastValue(Highest(IIf(aVisBars, BarIndex(), 0))); _TRACE("Last visible bar: " + nLastVisBar); // -- Initialize value of curTrend curBar = (BarCount-1); curTrend = ""; if (aLLVBars[curBar] < aHHVBars[curBar]) { curTrend = "D"; } else { curTrend = "U"; } // -- Loop through bars. Search for // entirely array-based approach // in future version for (i=0; i<farback; i++) { curBar = (BarCount - 1) - i; // -- Have we identified a pivot? If trend is down... if (aLLVBars[curBar] < aHHVBars[curBar]) { // ... and had been up, this is a trend change if (curTrend == "U") { curTrend = "D"; // -- Capture pivot information curPivBarIdx = curBar - aLLVBars[curBar]; aLPivs[curPivBarIdx] = 1; aLPivLows[nLPivs] = L[curPivBarIdx]; aLPivIdxs[nLPivs] = curPivBarIdx; nLPivs++; } // -- or current trend is up } else { if (curTrend == "D") { curTrend = "U"; curPivBarIdx = curBar - aHHVBars[curBar]; aHPivs[curPivBarIdx] = 1; aHPivHighs[nHPivs] = H[curPivBarIdx]; aHPivIdxs[nHPivs] = curPivBarIdx; nHPivs++; } // -- If curTrend is up...else... } // -- loop through bars } // -- Basic attempt to add a pivot this logic may have missed // -- OK, now I want to look at last two pivots. If the most // recent low pivot is after the last high, I could // still have a high pivot that I didn't catch // -- Start at last bar curBar = (BarCount-1); candIdx = 0; candPrc = 0; lastLPIdx = aLPivIdxs[0]; lastLPL = aLPivLows[0]; lastHPIdx = aHPivIdxs[0]; lastHPH = aHPivHighs[0]; if (lastLPIdx > lastHPIdx) { // -- Bar and price info for candidate pivot candIdx = curBar - aHHVBars[curBar]; candPrc = aHHV[curBar]; if ( lastHPH < candPrc AND candIdx > lastLPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aHPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j<nHPivs; j++) { aHPivHighs[nHPivs-j] = aHPivHighs[nHPivs- (j+1)]; aHPivIdxs[nHPivs-j] = aHPivIdxs[nHPivs-(j+1)]; } aHPivHighs[0] = candPrc ; aHPivIdxs[0] = candIdx; nHPivs++; } } else { // -- Bar and price info for candidate pivot candIdx = curBar - aLLVBars[curBar]; candPrc = aLLV[curBar]; if ( lastLPL > candPrc AND candIdx > lastHPIdx AND candIdx < curBar) { // -- OK, we'll add this as a pivot... aLPivs[candIdx] = 1; // ...and then rearrange elements in the // pivot information arrays for (j=0; j<nLPivs; j++) { aLPivLows[nLPivs-j] = aLPivLows[nLPivs-(j+1)]; aLPivIdxs[nLPivs-j] = aLPivIdxs[nLPivs-(j+1)]; } aLPivLows[0] = candPrc; aLPivIdxs[0] = candIdx; nLPivs++; } } // -- Dump inventory of high pivots for debugging /* for (k=0; k<nHPivs; k++) { _TRACE("High pivot no. " + k + " at barindex: " + aHPivIdxs[k] + ", " + WriteVal(ValueWhen(BarIndex()==aHPivIdxs[k], DateTime(), 1), formatDateTime) + ", " + aHPivHighs[k]); } */ // -- OK, let's plot the pivots using arrows PlotShapes(IIf(aHPivs==1, shapeDownTriangle, shapeNone), colorCustom12, 0, High, Offset=-20); PlotShapes(IIf(aLPivs==1, shapeUpTriangle , shapeNone), colorCustom11, 0, Low, Offset=-20); Sell = aHPivs == 1 ; Buy = aLPivs == 1 ; Filter=Buy OR Sell; Sell=ExRem(Sell,Buy); Buy=ExRem(Buy,Sell); _SECTION_END(); } _SECTION_BEGIN("Plot Monthly,Weekly and Daily Moving average"); //Plot Monthly, Weekly and Daily Moving Average on Daily Price Chart //Ver.1.01 revision //3/02/02, coded by Anthony Faragasso //e-mail: ajf1111@epix.net MaxGraph=7; //Input Time periods for Monthly,Weekly and Daily Moving Averages MonthlyPds=2;//Months WeeklyPds=2;//Weeks DailyPds=1;//Days /***********************************/ //Input Price Variable ( open, high ,low, close); Price=C; MonthlyPrice=Price; WeeklyPrice=Price; DailyPrice=Price; /**********************************/ /***Colors***/ //Set to your Preference Color=6;//Price chart MthAvgColor=3;//Monthly AverageLine WklyAvgColor=4;//weekly AverageLine DlyAvgColor=5;//Daily AverageLine /**********************************/ Weekly=ValueWhen(DayOfWeek() > Ref( DayOfWeek(),1),WeeklyPrice); Monthly=ValueWhen(Day() > Ref( Day(), 1 ),MonthlyPrice); MonthlyAvg=EMA(Monthly,MonthlyPds); WeeklyAvg=EMA(Weekly,WeeklyPds); DailyAvg=EMA(DailyPrice,DailyPds); x = DailyAvg; y = WeeklyAvg; Buy=Cross(x,y); PlotShapes(shapeUpArrow*Buy,colorCustom11, 0, L, -5 ); Sell=Cross(y,x); PlotShapes(shapeDownArrow*Sell,colorCustom12, 0, H, -5 ); AlertIf( Buy, "SOUND C:\\Windows\\Media\\notify.wav", "Audio alert", 2 ); AlertIf( Sell, "SOUND C:\\Windows\\Media\\chord.wav", "Audio alert", 2 ); Graph0=C; Graph0Style=64; Graph0Color=Color; Graph1=WeeklyAvg; Graph1Style=1+4;//Thick line Graph1Color=WklyAvgColor; Graph2=DailyAvg; Graph2Style=1; Graph2Color=DlyAvgColor; Graph3=MonthlyAvg; Graph3Style=1; Graph3Color=MthAvgColor; Title=Name()+" "+"("+WriteVal(WeeklyPds,1)+")"+" Week Moving Average= "+"("+WriteVal(WeeklyAvg,1.2)+")"+" :: "+"("+WriteVal(DailyPds,1)+")"+" Period Moving Average= "+"("+WriteVal(DailyAvg,1.2)+")"+" :: "+"("+WriteVal(MonthlyPds,1)+")"+" Month Moving Average= "+"("+WriteVal(MonthlyAvg,1.2)+")"; _SECTION_END();
0 comments
Leave Comment
Please login here to leave a comment.
Back