Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
3TF Candlestick Bar Chart for Amibroker (AFL)
Specially designed for use in day trading AND to save chart space. This chart will display 3 sets of candlestick bars. One for the time Interval set for your chart- for example 1 Minute. The higher timeframe candlestick bars are created by using gfx Low-level graphics and will display according to the parameters you set- for example 5 and 15 minutes. This code can be very much improved and made faster, but I provide it as it is.
Author: Jorgen Wallgren – jorgen.wallgren [at] gmail.com
Similar Indicators / Formulas
Indicator / Formula
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | _SECTION_BEGIN ( "3 TF Candlestick Bar Chart" ); //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // 3 TIMEFRAMES CANDLESTICK CHART //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Version (5.21); SetChartOptions (2, chartShowDates ); Title = Name (); //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // PARAMETERS AND SETTINGS: //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ChartLum = Param ( "Chart Background Color Intensity" , 0, 0, 1, 0.01); TFMinShort = Param ( "Short Timeframe (Minutes)" , 1, 1, 60, 1); TFMinMedium = Param ( "Medium Timeframe (Minutes)" , 5, 1, 60, 1); TFMinLong = Param ( "Long Timeframe (Minutes)" , 15, 1, 60, 1); OnSTFBars = ParamToggle ( "Short TF Bars" , "Off, On" , 1); OnMTFBars = ParamToggle ( "Medium TF Bars" , "Off, On" , 1); OnLTFBars = ParamToggle ( "Long TF Bars" , "Off, On" , 1); BarLum1 = Param ( "Short TF Bar Color Intensity" , 0, 0, 1, 0.01); BarLum2 = Param ( "Medium TF Bar Color Intensity" , 0.70, 0, 1, 0.01); LTFLine = Param ( "Long TF Bar Line Thickness" , 3, 0, 10, 1); BarLum3 = Param ( "Long TF Bar Color Intensity" , 0.50, 0, 1, 0.01); // Bar Colors for the Short Timeframe candlestick bars: LineColor = ColorBlend( colorBlack , colorWhite , BarLum1); UpBarColor = ColorBlend( colorBrightGreen , colorWhite , BarLum1); DnBarColor = ColorBlend( colorRed , colorWhite , BarLum1); SetChartBkColor (ColorBlend( colorLightBlue , colorWhite , ChartLum)); //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // FUNCTIONS: //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX function GetVisibleBarCount() { lvb = Status ( "lastvisiblebar" ); fvb = Status ( "firstvisiblebar" ); return Min ( Lvb - fvb, BarCount - fvb ); } function GfxConvertBarToPixelX( bar ) { lvb = Status ( "lastvisiblebar" ); fvb = Status ( "firstvisiblebar" ); pxchartleft = Status ( "pxchartleft" ); pxchartwidth = Status ( "pxchartwidth" ); return pxchartleft + bar * pxchartwidth / ( Lvb - fvb + 1 ); } function GfxConvertValueToPixelY( Value ) { local Miny, Maxy, pxchartbottom, pxchartheight; Miny = Status ( "axisminy" ); Maxy = Status ( "axismaxy" ); pxchartbottom = Status ( "pxchartbottom" ); pxchartheight = Status ( "pxchartheight" ); return pxchartbottom - floor ( 0.5 + ( Value - Miny ) * pxchartheight/ ( Maxy - Miny ) ); } //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // MAIN PROGRAM: //XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX if ( Interval () != TFMinShort * 60) { Title = Title + "\n" + "\n" + "ALERT, ALERT, ALERT!!!" + "\n" + "Set the chart time interval to: " + NumToStr (TFMinShort, 1.0, 1) + " Minute(s) or change the Short Timeframe Parameter setting." ; OnSTFBars = 0; OnMTFBars = 0; OnLTFBars = 0; SetChartBkColor ( colorRose ); } if (TFMinShort >= TFMinLong) { Title = Title + "\n" + "\n" + "ALERT, ALERT, ALERT!!!" + "\n" + "The Long Timeframe setting must be longer than the Short Timeframe!" ; OnSTFBars = 0; OnLTFBars = 0; OnLTFBars = 0; SetChartBkColor ( colorRose ); } if (OnSTFBars) { BarColor = IIf ( Close > Open , UpBarColor, DnBarColor); SetBarFillColor (BarColor); Plot ( Close , "" , LineColor, styleCandle ); } else Plot ( Close , "" , colorBlack , styleCandle | styleNoDraw ); function PlotBars(TFMinLong, BarLum, Style) { // Bar Colors For The Medium and Long Timeframe candlestick bars: TFLineColor = ColorBlend( colorBlack , colorWhite , BarLum - 0.1); TFUpBarColor = ColorBlend( colorBrightGreen , colorWhite , BarLum); TFDnBarColor = ColorBlend( colorRed , colorWhite , BarLum); TFSec = in1Minute * TFMinLong; TimeFrameSet (TFSec); TFOpen = Open ; TFHigh = High ; TFLow = Low ; TFClose = Close ; TFBarIndex = BarIndex (); TFLastBarIndex = LastValue ( BarIndex ()); TimeFrameRestore (); TFOpen = TimeFrameExpand (TFOpen, TFSec, expandFirst); TFHigh = TimeFrameExpand (TFHigh, TFSec, expandFirst); TFLow = TimeFrameExpand (TFLow, TFSec, expandFirst); TFClose = TimeFrameExpand (TFClose, TFSec, expandFirst); TFBarIndex = TimeFrameExpand (TFBarIndex, TFSec, expandLast + 1); TFLastBarIndex = TimeFrameExpand (TFLastBarIndex, TFSec, expandLast + 1); CandleTop = Max (TFOpen, TFClose); CandleBottom = Min (TFOpen, TFClose); //============================================================================ // GFX LOW-LEVEL GRAPHICS SECTION. // DRAWING THE LONG TIMEFRAME CANDLESTICK BARS: //============================================================================ GfxSetOverlayMode (1); AllVisibleBars = GetVisibleBarCount(); fvb = Status ( "firstvisiblebar" ); ChartWidth = GfxConvertBarToPixelX(AllVisibleBars ); PixBar = ChartWidth / AllVisibleBars; Adjust = Pixbar * 0.35; TFMinutes = TFMinLong / TFMinShort; NewTFBar = IIf (TFBarIndex != Ref (TFBarIndex, -1), 1, 0); BarInd = BarIndex (); TFLastBarIndex = LastValue (TFLastBarIndex); // DRAW BAR HISTORY AND THE CURRENT BAR: for (i = 0; i < AllVisibleBars; i++) { x1 = GfxConvertBarToPixelX(i) * NewTFBar[i + fvb] - Adjust; if (BarInd[i + fvb] < TFLastBarIndex AND NewTFBar[i + fvb] == 1) { Counter = 0; for (n = i + 1; NewTFBar[n + fvb] == 0 AND n + fvb < BarCount -1; n++) Counter++; x2 = GfxConvertBarToPixelX(i + Counter) * NewTFBar[i + fvb] + 1 + Adjust; } if (TFBarIndex[i + fvb] == TFLastBarIndex) x2 = GfxConvertBarToPixelX(i + TFMinutes - 1) * NewTFBar[i + fvb] + 1 + Adjust; y1 = GfxConvertValueToPixelY(CandleTop[i + fvb]); y2 = GfxConvertValueToPixelY(CandleBottom[i + fvb]); yH = GfxConvertValueToPixelY(TFHigh[i + fvb]); yL = GfxConvertValueToPixelY(TFLow[i + fvb]); // Candle Body: FillColor = IIf (TFOpen[i + fvb] < TFClose[i + fvb], TFUpBarColor, TFDnBarColor); if (Style == "Fill" ) { GfxSelectPen (TFLineColor, 1); GfxSelectSolidBrush (FillColor); } else { GfxSelectPen (FillColor, LTFLine); GfxSelectSolidBrush (ColorBlend( colorLightBlue , colorWhite , ChartLum)); } if (y1 == y2){y1 = y1 - Adjust; y2 = y2 + Adjust; GfxSelectSolidBrush (TFLineColor);} if (x1 > 0){ GfxRectangle ( x1, y1, x2, y2); // Candle High and Low: GfxSelectPen (TFLineColor, 2); GfxMoveTo (x2+(x1-x2)/2, y1); GfxLineTo (x2+(x1-x2)/2, yH); GfxMoveTo (x2+(x1-x2)/2, y2); GfxLineTo (x2+(x1-x2)/2, yL); RequestTimedRefresh (0); } } } if (OnLTFBars) PlotBars(TFMinLong, BarLum3, "Line" ); if (OnMTFBars) PlotBars(TFMinMedium, BarLum2, "Fill" ); _SECTION_END (); |
8 comments
Leave Comment
Please login here to leave a comment.
Back
Thanx Kaiji for the afl but its not working, giving an error, plz have a look at the error. thanx
I want this.thanks..
Jorgen, thanks for this excellent piece of code.
It took some time to understand the results… once understood, the chart revealed a masterpiece.
Appreciate your effort.
Dear administration
I dont find any candlestick in it. the chart is total blank.
Plz help
You need to apply it to an existing chart I believe.
how to download this indicators
Dear Author or Adminstrator,
This indicator is not working in Version 5.6. Could someone please give the solution for this? Not able to see 5min and 15min candles. Could able to see only 1 min candles.
Please help.
dear mehmudd
this will work , just replace last 5lines of original with mentioned below ..