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 ....
st4 for Amibroker (AFL)
Copy & Paste Friendly
Back
// Supertrend - Translated from Kolier MQ4 // see: http://kolier.li/indicator/kolier-supertrend-indi // translation in Amibroker AFL code by E.M.Pottasch, 2011 SetTradeDelays(0,0,0,0); SetOption("CommissionMode",3); SetOption("CommissionAmount",2.32); SetOption("FuturesMode",True); NumContracts=1; PositionSize=NumContracts*MarginDeposit; SetOption("MaxOpenPositions",4); ATR_Multiplier=Param("ATR_Multiplier",2,0.5,10,0.1); ATR_Period=Param( "ATR_Period",5,2,20,1); TrendMode=ParamToggle("TrendMode","Off|On",1); procedure calcTrend_proc(ATR_Period,tr,ATR_Multiplier,TrendMode,CalcPrice) { global buffer_line_down; global buffer_line_up; buffer_line_down = Null; buffer_line_up = Null; PHASE_NONE = 0; PHASE_BUY = 1; PHASE_SELL = -1; phase=PHASE_NONE; band_upper = 0;band_lower = 0; for(i = ATR_Period + 1; i < BarCount; i++) { band_upper = CalcPrice[i] + ATR_Multiplier * tr[i]; band_lower = CalcPrice[i] - ATR_Multiplier * tr[i]; if(phase==PHASE_NONE) { buffer_line_up[i] = CalcPrice[i]; buffer_line_down[i] = CalcPrice[i]; } if(phase!=PHASE_BUY && Close[i]>buffer_line_down[i-1] && !IsEmpty(buffer_line_down[i-1])) { phase = PHASE_BUY; buffer_line_up[i] = band_lower; buffer_line_up[i-1] = buffer_line_down[i-1]; } if(phase!=PHASE_SELL && Close[i]<buffer_line_up[i-1] && !IsEmpty(buffer_line_up[i-1])) { phase = PHASE_SELL; buffer_line_down[i] = band_upper; buffer_line_down[i-1] = buffer_line_up[i-1]; } if(phase==PHASE_BUY && ((TrendMode==0 && !IsEmpty(buffer_line_up[i-2])) || TrendMode==1) ) { if(band_lower>buffer_line_up[i-1]) { buffer_line_up[i] = band_lower; } else { buffer_line_up[i] = buffer_line_up[i-1]; } } if(phase==PHASE_SELL && ((TrendMode==0 && !IsEmpty(buffer_line_down[i-2])) || TrendMode==1) ) { if(band_upper<buffer_line_down[i-1]) { buffer_line_down[i] = band_upper; } else { buffer_line_down[i] = buffer_line_down[i-1]; } } } } tr = ATR(ATR_Period); CalcPrice=(H+L)/2; calcTrend_proc(ATR_Period,tr,ATR_Multiplier,TrendMode,CalcPrice); TrendUp=buffer_line_up;TrendDown=buffer_line_down; totalTrend=IIf(TrendUp,TrendUp,TrendDown); dtotalTrend=totalTrend-Ref(totalTrend,-1); vtotalTrend=ValueWhen(dtotalTrend,dtotalTrend); if(TrendMode==1) { Buy=vtotalTrend>0 AND Ref(vtotalTrend,-1)<0;BuyPrice=C; Sell=vtotalTrend<0 AND Ref(vtotalTrend,-1)>0;SellPrice=C; Buy=ExRem(Buy,Sell);Sell=ExRem(Sell,Buy); Cover=Buy;CoverPrice=BuyPrice; Short=Sell;ShortPrice=SellPrice; nw_bull=Flip(Buy,Sell); nw_bear=Flip(Short,Cover); } else if(TrendMode==0) { Buy=!IsEmpty(TrendUp) AND !IsEmpty(Ref(TrendUp,-1)) AND !IsEmpty(Ref(TrendDown,-1));BuyPrice=C; Sell=!IsEmpty(TrendDown) AND !IsEmpty(Ref(TrendUp,-1)) AND !IsEmpty(Ref(TrendDown,-1));SellPrice=C; Buy=ExRem(Buy,Sell);Sell=ExRem(Sell,Buy); Cover=Buy;CoverPrice=BuyPrice; Short=Sell;ShortPrice=SellPrice; nw_bull=Flip(Buy,Sell); nw_bear=Flip(Short,Cover); } SetChartOptions(0, chartShowDates); Title="Symbol: "+ Name(); Plot(C,"Close",colorLightGrey,styleCandle); Plot(IIf(nw_bull,1,Null),"",ColorRGB(0,20,0),styleArea|styleOwnScale,0,1,0,-1); Plot(IIf(nw_bear,1,Null),"",ColorRGB(20,0,0),styleArea|styleOwnScale,0,1,0,-1); Plot(buffer_line_up,"\ntu",colorBlue,styleThick); Plot(buffer_line_down,"\ntd",colorRed,styleThick); PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorDarkGreen,0,L,-15); PlotShapes(IIf(Buy,shapeSmallCircle,shapeNone),colorWhite,0,BuyPrice,0); PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-15); PlotShapes(IIf(Sell,shapeSmallCircle,shapeNone),colorWhite,0,SellPrice,0); PlotShapes(IIf(Short,shapeSmallDownTriangle,shapeNone),colorRed,0,H,IIf(Short AND Sell,-30,-15)); PlotShapes(IIf(Short,shapeSmallCircle,shapeNone),colorWhite,0,ShortPrice,0); PlotShapes(IIf(Cover,shapeSmallUpTriangle,shapeNone),colorDarkGreen,0,L,IIf(Cover AND Buy,-30,-15)); PlotShapes(IIf(Cover,shapeSmallCircle,shapeNone),colorWhite,0,CoverPrice,0);