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 ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

TREND for Amibroker (AFL)

Copy & Paste Friendly
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
SetChartOptions(0, chartShowArrows | chartShowDates);
SetChartBkColor(ParamColor("Outer Panel", colorBlack));
SetChartBkGradientFill(ParamColor("Upper Chart", colorDarkGrey), ParamColor("Lower Chart", colorDarkGrey));
GraphXSpace = Param("GraphXSpace", 10, 0, 100, 1);
 
colorHighliter = IIf(C >= O, ColorRGB(0, 128, 0), ColorRGB(128, 0, 0));
 
//Demand Point
colorDemandPoint = ParamColor("Demand Line", ColorRGB(0, 128, 255));
DemandPoint = (Ref(L, -1) < Ref(L, -2)) & (L < Ref(L, -1)) & (L < Ref(L, 1)) & (Ref(L, 1) < Ref(L, 2));
 
//Supply Point
colorSupplyPoint = ParamColor("Supply Line", ColorRGB(255, 128, 0));
SupplyPoint = (Ref(H, -1) > Ref(H, -2)) & (H > Ref(H, -1)) & (H > Ref(H, 1)) & (Ref(H, 1) > Ref(H, 2));
 
CountTrendBars = 0;
CurrentBar = BarCount - 1;
dx0 = dx1 = dy0 = dy1 = 0;
sx0 = sx1 = sy0 = sy1 = 0;
for (i = 0; i < BarCount; i++) {
    CurrentBar = (BarCount - 1) - i;
    if (DemandPoint[CurrentBar]) {
        if (dx1 == 0 & dy1 == 0) {
            dx1 = CurrentBar;
            dy1 = L[CurrentBar];
        } else {
            dx0 = CurrentBar;
            dy0 = L[CurrentBar];
        }
        if (dx0 != 0 & dx1 != 0 & dy0 != 0 & dy1 != 0) {
            if (dy0 < dy1) {
                a = (-dy0 + dy1) / (-dx0 + dx1);
                b = dy0 - dx0 * a;
                for (j = dx1; j < BarCount; j++) {
                    if (j != dx1) {
                        y2 = a * j + b;
                        if (C[j] < y2) {
                            dy1 = y2;
                            dx1 = j;
                            colorHighliter[j] = ColorRGB(128, 0, 128);
                            CountTrendBars[j] = dx1 - dx0 - 1;
                            break;
                        }
                    }
                }
                if (dy1 != y2) {
                    dy1 = y2;
                    dx1 = BarCount - 1;
                }
                Plot(LineArray(dx0, dy0, dx1, dy1, 0), "", colorDemandPoint, styleLine, Null, Null, 0, 0, 2);
            }
            dx1 = dx0;
            dy1 = dy0;
            dx0 = dy0 = 0;
        }  
    }
    if (SupplyPoint[CurrentBar]) {
        if (sx1 == 0 & sy1 == 0) {
            sx1 = CurrentBar;
            sy1 = H[CurrentBar];
        } else {
            sx0 = CurrentBar;
            sy0 = H[CurrentBar];
        }
        if (sx0 != 0 & sx1 != 0 & sy0 != 0 & sy1 != 0) {
            if (sy0 > sy1) {
                a = (-sy0 + sy1) / (-sx0 + sx1);
                b = sy0 - sx0 * a;
                for (j = sx1; j < BarCount; j++) {
                    if (j != sx1) {
                        y2 = a * j + b;
                        if (C[j] > y2) {
                            sy1 = y2;
                            sx1 = j;
                            colorHighliter[j] = ColorRGB(128, 128, 0);
                            CountTrendBars[j] = sx1 - sx0 - 1;
                            break;
                        }
                    }
                }
                if (sy1 != y2) {
                    sy1 = y2;
                    sx1 = BarCount - 1;
                }
                Plot(LineArray(sx0, sy0, sx1, sy1, 0), "", colorSupplyPoint, styleLine, Null, Null, 0, 0, 2);
            }
            sx1 = sx0;
            sy1 = sy0;
            sx0 = sy0 = 0;
        }  
    }  
}
 
//Stop Loss & Targets
for (i = 0; i < BarCount; i++) {
    CurrentBar = (BarCount - 1) - i;
    if (colorHighliter[CurrentBar] == ColorRGB(128, 0, 128)) {
        StopLoss = 0;
        for (j = CurrentBar - CountTrendBars[CurrentBar]; j <= CurrentBar; j++) {
            StopLoss = Max(H[j], StopLoss);
        }
        if (CurrentBar - (BarCount - 1) != 0) {
            t1 = C[CurrentBar] - (StopLoss - C[CurrentBar]);
            t2 = C[CurrentBar] - ((StopLoss - C[CurrentBar]) * 1.272);
            t3 = C[CurrentBar] - ((StopLoss - C[CurrentBar]) * 1.618);
            Plot(LineArray(CurrentBar, StopLoss + 0.01, BarCount - 1, StopLoss + 0.01, 0), "", ColorRGB(255, 0, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, C[CurrentBar], BarCount - 1, C[CurrentBar], 0), "", ColorRGB(255, 255, 0), styleDots, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, t1, BarCount - 1, t1, 0), "", ColorRGB(0, 255, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, t2, BarCount - 1, t2, 0), "", ColorRGB(0, 255, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, t3, BarCount - 1, t3, 0), "", ColorRGB(0, 255, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            PlotText("Stop Loss\n@" + WriteVal(StopLoss + 0.01, 1.2), BarCount, StopLoss + 0.01, ColorRGB(255, 255, 255));
            PlotText("T1 @" + WriteVal(t1, 1.2), BarCount, t1, ColorRGB(255, 255, 255));
            PlotText("T2 @" + WriteVal(t2, 1.2), BarCount, t2, ColorRGB(255, 255, 255));
            PlotText("T3 @" + WriteVal(t3, 1.2), BarCount, t3, ColorRGB(255, 255, 255));
        }
        break;
    }
    if (colorHighliter[CurrentBar] == ColorRGB(128, 128, 0)) {
        StopLoss = 9999;
        for (j = CurrentBar - CountTrendBars[CurrentBar]; j <= CurrentBar; j++) {
            StopLoss = Min(L[j], StopLoss);
        }
        if (CurrentBar - (BarCount - 1) != 0) {
            t1 = C[CurrentBar] + (C[CurrentBar] - StopLoss);
            t2 = C[CurrentBar] + ((C[CurrentBar] - StopLoss) * 1.272);
            t3 = C[CurrentBar] + ((C[CurrentBar] - StopLoss) * 1.618);
            Plot(LineArray(CurrentBar, StopLoss - 0.01, BarCount - 1, StopLoss - 0.01, 0), "", ColorRGB(255, 0, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, C[CurrentBar], BarCount - 1, C[CurrentBar], 0), "", ColorRGB(255, 255, 0), styleDots, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, t1, BarCount - 1, t1, 0), "", ColorRGB(0, 255, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, t2, BarCount - 1, t2, 0), "", ColorRGB(0, 255, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            Plot(LineArray(CurrentBar, t3, BarCount - 1, t3, 0), "", ColorRGB(0, 255, 0), styleDots | styleNoLabel, Null, Null, 0, 0, 1);
            PlotText("Stop Loss\n@" + WriteVal(StopLoss - 0.01, 1.2), BarCount, StopLoss - 0.01, ColorRGB(255, 255, 255));
            PlotText("T1 @" + WriteVal(t1, 1.2), BarCount, t1, ColorRGB(255, 255, 255));
            PlotText("T2 @" + WriteVal(t2, 1.2), BarCount, t2, ColorRGB(255, 255, 255));
            PlotText("T3 @" + WriteVal(t3, 1.2), BarCount, t3, ColorRGB(255, 255, 255));
        }      
        break;
    }
}
 
//Price
SetBarFillColor(colorHighliter);
Plot(C, "Close", IIf(colorHighliter == ColorRGB(128, 0, 128), ColorRGB(255, 0, 255), IIf(colorHighliter == ColorRGB(128, 128, 0), ColorRGB(255, 255, 0), IIf(C > O, ColorRGB(0, 255, 0), IIf(C < O, ColorRGB(255, 0, 0), ColorRGB(255, 255, 255))))), styleCandle, Null, Null, 0, 0, 1);
 
//Volume
/*colorVolume = ParamColor("Volume Area", ColorRGB(0, 0, 0));
Plot(Volume, "", colorVolume, styleArea | styleOwnScale | styleNoLabel, Null, Null, 0, 0, 1);*/
 
Title = Name() + " - {{INTERVAL}} - {{DATE}} - Open = " + NumToStr(O, 1.2) + ", High = " + NumToStr(H, 1.2) + ", Low = " + NumToStr(L, 1.2) + ", Close = " + NumToStr(C, 1.2) + " (" + WriteVal(ROC(C, 1), 1.2) + "%)"; /*, Volume = " + WriteVal(Volume, 1.2);*/
Back