Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Fibonacci Lucas Time Series : Forward and Reverse for Amibroker (AFL)
Fibonacci Lucas Time Series modified
to enable plotting both forward and backward series.
You can find a future focus bar also (blue dashed line).
Measurer included.
Play with Parameters in various time frames.
Enjoy the beauty of Time Golden Ratio !
Screenshots
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 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | // Fibonacci Lucas Time Series : Forward and Backward // Please choose Peaks or Troughs of a Zigzag // Adjust the Start Bar by selecting a peak or trough as a begining of Time Series // While choosing Backward Time Series adjust the future StartBar _SECTION_BEGIN ( "ZIGZAG PK TR" ); xx = Barindex (); // Actual Bar Number BIL = LastValue ( Barindex () ); // Last Bar Number ZigPerc = Param ( "ZIGZAG % CHANGE" , 0.5, 0.05, 1, 0.05); shift = Param ( "SHIFT FORWARD" , 10,-20,50,1); PK_OR_TR = ParamToggle ( "PEAKS / TROUGHS CHOICE" , "TROUGHS|PEAKS" , 1 ); FORWARD = ParamToggle ( "<< BACKWARD / FORWARD >>" , "<< BACKWARD|FORWARD >>" , 1 ); PK = PeakBars ( H , ZigPerc)==0; TR = TroughBars ( L , ZigPerc)==0; zzHi= Zig ( H , ZigPerc); zzLo= Zig ( L , ZigPerc); Avg=(zzHi + zzLo)/2; ZZ = IIf (PK, zzHi, IIf (TR, zzLo, IIf ( Avg > Ref (Avg,-1), H , L ))); zzHiLo= Zig (zz, ZigPerc); Rev_Zig = Ref ( Reverse( zzHiLo, first = 0, last = BarCount -1 ), -shift); For_Zig = Reverse( Rev_Zig, first = 0, last = BarCount -1 ); PKBar = ValueWhen ( PK, xx ); TRBar = ValueWhen ( TR, xx ); ALLPKs = LastValue ( Cum (PK) ) ; ALLTRs = LastValue ( Cum (TR) ) ; PK_Nr = Param ( "Nr of PEAKS LOOKBACK" , 44, 2, 150, 1); // Number of Peaks analysed counting from End TR_Nr = Param ( "Nr of TROUGHS LOOKBACK" , 44, 2, 150, 1); // Number of Troughs analysed counting from End PK_Nr_StartBar = BIL - LastValue ( PeakBars ( H , ZigPerc, Min ( ALLPKs - 1, PK_Nr ) + 1) ); // FIRST PK BAR in THE LAST PK_Nr RANGE TR_Nr_StartBar = BIL - LastValue ( TroughBars ( L , ZigPerc, Min ( ALLTRs - 1,TR_Nr ) + 1) ); // FIRST TR BAR in THE LAST TR_Nr RANGE PK_Nr_StartBar_shifted = ( PK_Nr_StartBar - shift ); TR_Nr_StartBar_shifted = (TR_Nr_StartBar - shift ); PLOTZIG = ParamToggle ( "PLOT ZIGZAG" , "PRICE ONLY|PLOT ZIGZAG" , 1 ); _SECTION_END (); //////////////////////////////////////////////////// _SECTION_BEGIN ( "DATES" ); // Function changes DateNum ex:1040928 to String ddmmyyyy ex:28/09/2004 function sDate( nDate ) { string = StrFormat ( "%07.07g" , nDate ); //extract string part aa = StrLeft ( string, 3 ); mm = StrMid ( string, 3, 2 ); dd = StrRight ( string, 2 ); //transform year en num aa1 = StrToNum ( aa ) + 1900; yyyy = NumToStr ( aa1, 1, False ); result = yyyy + "-" + mm + "-" + dd; return result; } PKStartDate = sDate( LastValue ( ValueWhen ( PK_Nr_StartBar ==xx, DateNum () ) ) ); TRStartDate = sDate( LastValue ( ValueWhen ( TR_Nr_StartBar ==xx, DateNum () ) ) ); LastStartBar = Ref ( BIL, shift); // LAST BAR SHIFTED = FOCUS OF REVERSE SERIES LastStartDate = DateTimeAdd( LastValue ( DateTime () ), shift, inDaily ); _SECTION_END (); //////////////////////////////////////////////////// _SECTION_BEGIN ( "FIBONACCI LUCAS TIME SERIES" ); if ( FORWARD ) { if ( PK_OR_TR ) { start = PK_Nr_StartBar_shifted; StartDate = PKStartDate; } else { start = TR_Nr_StartBar_shifted; StartDate = TRStartDate; } } else { StartDate = Null ; } ///////////////////////////////////////////////////////////////////////////////////////////////////////// function DrawSeries( start, series, Color ) { x = BarsSince ( start == xx ); result = 0; Plot ( x == 0, "" , colorBlue , styleHistogram | styleDashed | styleOwnScale | styleNoLabel | 2048, 0, 1, shift ); for ( k = 1; ( bar = StrToNum ( StrExtract ( series, k ) ) ) != 0; k++ ) { result += x == bar; } Plot ( result, "" , Color, styleHistogram | styleOwnScale | styleNoLabel | 2048, 0, 1, shift ); } function DrawBackSeries( startback, series, Color ) { Plot ( LastStartBar==xx, "" , colorBlue , styleHistogram | styleDashed | styleOwnScale | styleNoLabel | 2048, 0, 1, shift); x = BarsSince ( 0 == xx ); result = 0; for ( k = 0; ( bar = StrToNum ( StrExtract ( series, k ) ) ) != 0; k++ ) { result += x == bar; } result = Reverse( result, first = 0, last = BarCount -1 ); Plot ( result, "" , Color, styleHistogram | styleOwnScale | styleNoLabel | 2048, 0, 1, shift ); } FibSeries = "5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657" ; LucSeries = "3,4,7,11,18,29,47,76,123,199,322,521,843,1364,2207,3571,5778,9349,15127,24476" ; FIB = ParamToggle ( "FIBON Series" , "OFF|ON" , 1 ); fibcolor = ParamColor ( "FIBON Color" , colorRed ); LUC = ParamToggle ( "LUCAS Series" , "OFF|ON" , 1 ); luccolor = ParamColor ( "LUCAS Color" , colorGreen ); ////////////////////////////////////////////// Plot ( C , "PRICE" , colorBlack , styleCandle ); if ( PLOTZIG ) { Plot ( For_Zig, "" , colorLightBlue , styleLine | styleThick | styleNoLabel , 0, 1, shift ); } if ( FORWARD ) { if ( FIB ) DrawSeries( start, FibSeries, fibcolor ); if ( LUC ) DrawSeries( start, LucSeries, luccolor ); } else { if ( FIB ) DrawBackSeries( shift, FibSeries, fibcolor ); if ( LUC ) DrawBackSeries( shift, LucSeries, luccolor ); } _SECTION_END (); ////////////////////////////////////////////////////////////////////////////////////////// _SECTION_BEGIN ( "Measurer" ); if ( ParamToggle ( "MEASURER ENABLED" , "No|Yes" , 1)) { EnableTextOutput ( False ); what = ParamList ( "Object" , "Bar count|Price change (close)|Price change (high/low)|Average volume|Total volume|Average BW MFI" , 0); mColor = ParamColor ( "Color" , colorBlue ); mStyle = ParamStyle ( "Style" , styleLine | styleDashed , styleDashed | styleThick ); mbgColor = ParamColor ( "Label Bg Color" , colorWhite ); showInTitle = ParamToggle ( "Show in title" , "No|Yes" , 1); SelectedBar = SelectedValue ( BarIndex ()); StartRangeBar = BeginValue ( BarIndex ()); FinishRangeBar = EndValue ( BarIndex ()); // determine start & end of range if (StartRangeBar > 0 AND FinishRangeBar < BarCount - 1) // range defined by markers { start = StartRangeBar; end = FinishRangeBar; } else { if (StartRangeBar > 0) // range defined by start marker & selection { start = StartRangeBar; end = SelectedBar; } else // range defined by selected bar and end { start = SelectedBar; end = FinishRangeBar; } } if (start > end) { tmp = start; start = end; end = tmp; } // measuring switch (what) { // bar count case "Bar count" : Value = end - start; Label = WriteVal (Value, 1.0); if (showInTitle) Title = "\n" + EncodeColor (mColor) + "Measuring bars: " + WriteVal (Value, 1.0); break ; // price change (close) case "Price change (close)" : Value = Close [end] - Close [start]; Label = WriteVal (Value, 1.3); if (showInTitle) Title = "\n" + EncodeColor (mColor) + "Measuring price change (close): " + WriteVal (Value, 1.3); if (start != end) Plot ( LineArray (start, Close [start], end, Close [end]), "" , mColor, mStyle | styleNoLabel ); break ; // price change (high/low) case "Price change (high/low)" : if ( H [end] >= H [start]) Value = H [end] - L [start]; else Value = -( H [start] - L [end]); Label = WriteVal (Value, 1.3); if (showInTitle) Title = "\n" + EncodeColor (mColor) + "Measuring price change (high/low): " + WriteVal (Value, 1.3); if (start != end) { if ( H [end] >= H [start]) Plot ( LineArray (start, L [start], end, H [end]), "" , mColor, mStyle | styleNoLabel ); else Plot ( LineArray (start, H [start], end, L [end]), "" , mColor, mStyle | styleNoLabel ); } break ; // Average volume case "Average volume" : Bars = end - start + 1; // (inclusive) Value = 0; for (i = start; i <= end AND i < BarCount ; i++) Value += Volume [i]; Value = Value / Bars; Label = WriteVal (Value, 1.0); if (showInTitle) Title = "\n" + EncodeColor (mColor) + "Measuring average volume: " + WriteVal (Value, 1.0); break ; // Total volume case "Total volume" : Value = 0; for (i = start; i <= end AND i < BarCount ; i++) Value += Volume [i]; Value = Value; Label = WriteVal (Value, 1.0); if (showInTitle) Title = "\n" + EncodeColor (mColor) + "Measuring total volume: " + WriteVal (Value, 1.0); break ; // Average BW MFI case "Average BW MFI" : Bars = end - start + 1; // (inclusive) Value = 0; for (i = start; i <= end AND i < BarCount ; i++) Value += 100000 * ( High [i] - Low [i]) / Volume [i]; Value = Value / Bars; fmt = 1; if ( log10 (Value) < 0) fmt += (- floor ( log10 (Value)) + 2) / 10; Label = WriteVal (Value, fmt); if (showInTitle) Title = "\n" + EncodeColor (mColor) + "Measuring average BW MFI: " + WriteVal (Value, fmt); break ; } if (start != end) { // get highest visible value Hh = -1e8; for (i = Status ( "firstvisiblebarindex" ); i < Status ( "lastvisiblebarindex" ) AND i < BarCount ; i++) { if ( H [i] > Hh) Hh = H [i]; } VGrid = ( Status ( "axismaxy" ) - Status ( "axisminy" )) * 0.01; VH = Hh; Plot ( LineArray (start, VH, end, VH), "" , mColor, mStyle | styleNoLabel ); PlotText (Label, start + (end - start) / 2 - 2, VH + VGrid, mColor, mbgColor); } EnableTextOutput ( True ); } _SECTION_END (); ////////////////////////////////////////////////////////////////////////////////////////////////////// Title = "\\c18" + FullName () + " " + "\\c29" + WriteIf ( Interval ()/60==1440, "Daily " , WriteIf ( Interval ()/60==60, "Hourly " , WriteIf ( Interval ()/60==15, "15 Min " , WriteIf ( Interval ()/60==5, "5 Min " , WriteIf ( Interval ()/60==1, "1 Min " , WriteIf ( Interval ()/60==5*1440, "Weekly " , WriteIf ( Interval ()/60== 25 *1440, "Monthly " , "" ) ) ) ) ) ) ) + " " + "\\c16" + Date () + " " + "\n" + "\\c17" + WriteIf ( PK_OR_TR AND FORWARD, "PEAK StartDate = " , WriteIf ( FORWARD, "TROUGH StartDate = " , "" ) ) + WriteIf ( FORWARD, " " + StartDate, "" ) + "\\c28" + WriteIf ( NOT FORWARD AND Interval ( 0 ) >= 3600, WriteIf ( shift > 0, "Future " , "" ) + "StartDate = " + shift + WriteIf ( Interval () == inHourly , " Trading Hours" , "" ) + WriteIf ( Interval () == inDaily , " Trading Days" , "" ) + WriteIf ( Interval () == inWeekly , " Weeks" , "" ) + WriteIf ( Interval () == inMonthly , " Months" , "" ) + " from Now" , "" ) ; |
2 comments
Leave Comment
Please login here to leave a comment.
Back
how to use this afl?
loads of syntax errors :(