Kedua twit ini selisih 1.744 hari ( seribu tujuh ratus empat puluh empat hari ), dan rasa - rasanya aku kok sekarang baru NGEH kalau kedua twit ini sangat cocok buwanget sekuwaleee. Karena setelah beberapa saat di market aku merasa ada posisi yang possibility nya jauh lebih besar di banding yang lain. So kenapa harus diambil semua kan cuman butuh beberapa milyar USD kan ?!
Showing posts with label amibroker. Show all posts
Showing posts with label amibroker. Show all posts
Sunday, July 7, 2019
Pendekatanku Yang Sekarang dan Akan Datang
Kedua twit ini selisih 1.744 hari ( seribu tujuh ratus empat puluh empat hari ), dan rasa - rasanya aku kok sekarang baru NGEH kalau kedua twit ini sangat cocok buwanget sekuwaleee. Karena setelah beberapa saat di market aku merasa ada posisi yang possibility nya jauh lebih besar di banding yang lain. So kenapa harus diambil semua kan cuman butuh beberapa milyar USD kan ?!
Thursday, December 14, 2017
Wednesday, March 1, 2017
Wednesday, February 22, 2017
Wednesday, September 17, 2014
Rainbow AFL
_SECTION_BEGIN( "MA Rainbow");
side = 1;
increment = Param("Increment" ,2, 1, 10, 1 );
for( i = 10; i < 80; i = i + increment )
{
up = MA( C, i );
down = MA( C, i + increment );
if( ParamToggle( "3D effect?", "No|Yes", 1 ) )
side = IIf(up<=down AND Ref( up<=down, 1 ), 1, 0.6 );
PlotOHLC( up,up,down,down, "MA"+i, ColorHSB( 3*(i - 10),
Param("Saturation" , 128, 0, 255 ),
side * Param("Brightness" , 255, 0, 255 ) ), styleCloud |
styleNoLabel );
}
_SECTION_END( );
side = 1;
increment = Param("Increment" ,2, 1, 10, 1 );
for( i = 10; i < 80; i = i + increment )
{
up = MA( C, i );
down = MA( C, i + increment );
if( ParamToggle( "3D effect?", "No|Yes", 1 ) )
side = IIf(up<=down AND Ref( up<=down, 1 ), 1, 0.6 );
PlotOHLC( up,up,down,down, "MA"+i, ColorHSB( 3*(i - 10),
Param("Saturation" , 128, 0, 255 ),
side * Param("Brightness" , 255, 0, 255 ) ), styleCloud |
styleNoLabel );
}
_SECTION_END( );
Thursday, July 17, 2014
MA 200 envelope AFL
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(MA(C,200), "Moving Average 200", colorRed, styleLine );
Plot(0.9*(MA(C,200)), "-10%", colorGreen, styleLine | styleThick);
Plot(0.8*(MA(C,200)), "-20%", colorBlue, styleLine | styleThick);
Plot(0.7*(MA(C,200)), "-30%", colorGreen, styleLine | styleThick);
Plot(0.6*(MA(C,200)), "-40%", colorBlue, styleLine | styleThick);
Plot(0.5*(MA(C,200)), "-50%", colorGreen, styleLine | styleThick);
Plot(1.1*(MA(C,200)), "+10%", colorGreen, styleLine | styleThick);
Plot(1.2*(MA(C,200)), "+20%", colorBlue, styleLine | styleThick);
Plot(1.3*(MA(C,200)), "+30%", colorGreen, styleLine | styleThick);
Plot(1.4*(MA(C,200)), "+40%", colorBlue, styleLine | styleThick);
Plot(1.5*(MA(C,200)), "+50%", colorGreen, styleLine | styleThick);
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_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(MA(C,200), "Moving Average 200", colorRed, styleLine );
Plot(0.9*(MA(C,200)), "-10%", colorGreen, styleLine | styleThick);
Plot(0.8*(MA(C,200)), "-20%", colorBlue, styleLine | styleThick);
Plot(0.7*(MA(C,200)), "-30%", colorGreen, styleLine | styleThick);
Plot(0.6*(MA(C,200)), "-40%", colorBlue, styleLine | styleThick);
Plot(0.5*(MA(C,200)), "-50%", colorGreen, styleLine | styleThick);
Plot(1.1*(MA(C,200)), "+10%", colorGreen, styleLine | styleThick);
Plot(1.2*(MA(C,200)), "+20%", colorBlue, styleLine | styleThick);
Plot(1.3*(MA(C,200)), "+30%", colorGreen, styleLine | styleThick);
Plot(1.4*(MA(C,200)), "+40%", colorBlue, styleLine | styleThick);
Plot(1.5*(MA(C,200)), "+50%", colorGreen, styleLine | styleThick);
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
MA 100 envelope AFL
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(MA(C,100), "Moving Average 100", colorRed, styleLine );
Plot(0.9*(MA(C,100)), "-10%", colorGreen, styleLine | styleThick);
Plot(0.8*(MA(C,100)), "-20%", colorBlue, styleLine | styleThick);
Plot(0.7*(MA(C,100)), "-30%", colorGreen, styleLine | styleThick);
Plot(0.6*(MA(C,100)), "-40%", colorBlue, styleLine | styleThick);
Plot(0.5*(MA(C,100)), "-50%", colorGreen, styleLine | styleThick);
Plot(1.1*(MA(C,100)), "+10%", colorGreen, styleLine | styleThick);
Plot(1.2*(MA(C,100)), "+20%", colorBlue, styleLine | styleThick);
Plot(1.3*(MA(C,100)), "+30%", colorGreen, styleLine | styleThick);
Plot(1.4*(MA(C,100)), "+40%", colorBlue, styleLine | styleThick);
Plot(1.5*(MA(C,100)), "+50%", colorGreen, styleLine | styleThick);
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_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(MA(C,100), "Moving Average 100", colorRed, styleLine );
Plot(0.9*(MA(C,100)), "-10%", colorGreen, styleLine | styleThick);
Plot(0.8*(MA(C,100)), "-20%", colorBlue, styleLine | styleThick);
Plot(0.7*(MA(C,100)), "-30%", colorGreen, styleLine | styleThick);
Plot(0.6*(MA(C,100)), "-40%", colorBlue, styleLine | styleThick);
Plot(0.5*(MA(C,100)), "-50%", colorGreen, styleLine | styleThick);
Plot(1.1*(MA(C,100)), "+10%", colorGreen, styleLine | styleThick);
Plot(1.2*(MA(C,100)), "+20%", colorBlue, styleLine | styleThick);
Plot(1.3*(MA(C,100)), "+30%", colorGreen, styleLine | styleThick);
Plot(1.4*(MA(C,100)), "+40%", colorBlue, styleLine | styleThick);
Plot(1.5*(MA(C,100)), "+50%", colorGreen, styleLine | styleThick);
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Tuesday, October 8, 2013
Candle stick scanner for Amibroker (AFL)
Kuambil dari sini
SetChartOptions(0,chartShowArrows|chartShowDates);
/*Body Colors*/
whiteBody=C>=O;
blackBody=O>C;
Friday, October 4, 2013
Membiasakan Scan dan Explore dengan AFL MA 5 MA 20
Hari ini memilih untuk mengkrabkan diri dengan AFL, memulai dengan Cross MA5 MA20 untuk kepentingan scan dan explore.
Ini adalah awal untuk trading for a living Bursa Efek Indonesia.
1: _SECTION_BEGIN("");
2: SetChartOptions(0,chartShowArrows|chartShowDates);
3: _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g,
4: Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C,
5: SelectedValue( ROC( C, 1 ) ) ));
6: Plot( C, "Close", ParamColor("Color", colorBlack ),
7: styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
8: _SECTION_END();
9:
10:
11: _SECTION_BEGIN("MA5-MA20 Crossover");
12: Buy = Cross( MA( Close, 5 ), MA( Close, 20 ) );
13: Sell = Cross( MA( Close, 20 ), MA( Close, 5 ) );
14: PlotShapes(IIf(Sell==1, shapeDownArrow, shapeNone),
15: colorRed, 0,High, Offset=-15);
16: PlotShapes(IIf(Buy==1, shapeUpArrow , shapeNone),
17: colorGreen, 0,Low, Offset=-15);
18: _SECTION_END();
19:
20:
21: Plot( MA( Close,5 ),"MA5",colorRed,styleLine);
22: Plot( MA( Close,20),"MA20",colorBlue,styleLine);
Ini adalah awal untuk trading for a living Bursa Efek Indonesia.
Monday, June 3, 2013
MA 5 MA 20 afl
_SECTION_BEGIN("Price");
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", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
_SECTION_BEGIN("MA");
P = ParamField("Price field",-1);
Periods1 = Param("Periods1", 5, 2, 300, 1, 10 );
Periods2 = Param("Periods2", 20, 2, 300, 1, 10 );
Plot( MA( P, Periods1 ), StrFormat(_SECTION_NAME()+"(%g)", Periods1), ParamColor( "Color1", colorRed ), ParamStyle("Style") );
Plot( MA( P, Periods2 ), StrFormat(_SECTION_NAME()+"(%g)", Periods2), ParamColor( "Color2", colorBlue ), ParamStyle("Style") );
Buy = Cross( MA( P, Periods1 ), MA( P, Periods2 ) );
Sell = Cross(MA( P,Periods2 ), MA( P, Periods1 ) );
PlotShapes(IIf(Buy==1, shapeHollowUpArrow , shapeNone), colorGreen, 0,Low, Offset=-15);
PlotShapes(IIf(Sell==1, shapeHollowDownArrow, shapeNone), colorRed, 0,High, Offset=-15);
PlotOHLC( Null,MA( P, Periods1 ),MA( P, Periods2 ),Null, "", IIf(MA( P, Periods1 )>MA( P, Periods2 ) ,colorLime,colorRose), styleCloud);
Color = IIf( MA(p,periods1) > MA(p,periods2) , colorLime, IIf( MA(p,periods2) > MA(p,periods1), colorPink, colorGrey50 ));
Plot( 1, "", Color, styleArea | styleOwnScale | styleNoLabel, -0.1, 30 );
_SECTION_END();
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", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();
_SECTION_BEGIN("MA");
P = ParamField("Price field",-1);
Periods1 = Param("Periods1", 5, 2, 300, 1, 10 );
Periods2 = Param("Periods2", 20, 2, 300, 1, 10 );
Plot( MA( P, Periods1 ), StrFormat(_SECTION_NAME()+"(%g)", Periods1), ParamColor( "Color1", colorRed ), ParamStyle("Style") );
Plot( MA( P, Periods2 ), StrFormat(_SECTION_NAME()+"(%g)", Periods2), ParamColor( "Color2", colorBlue ), ParamStyle("Style") );
Buy = Cross( MA( P, Periods1 ), MA( P, Periods2 ) );
Sell = Cross(MA( P,Periods2 ), MA( P, Periods1 ) );
PlotShapes(IIf(Buy==1, shapeHollowUpArrow , shapeNone), colorGreen, 0,Low, Offset=-15);
PlotShapes(IIf(Sell==1, shapeHollowDownArrow, shapeNone), colorRed, 0,High, Offset=-15);
PlotOHLC( Null,MA( P, Periods1 ),MA( P, Periods2 ),Null, "", IIf(MA( P, Periods1 )>MA( P, Periods2 ) ,colorLime,colorRose), styleCloud);
Color = IIf( MA(p,periods1) > MA(p,periods2) , colorLime, IIf( MA(p,periods2) > MA(p,periods1), colorPink, colorGrey50 ));
Plot( 1, "", Color, styleArea | styleOwnScale | styleNoLabel, -0.1, 30 );
_SECTION_END();
Monday, April 15, 2013
AFL ALLIGATOR FOR FREE-Brightspark Swing Volume Tool
1: /* Ord Volume by Peter Bjarheim
2: Rev - 11-12-07
3: Adjust "zig percent change" so that each swing last from 5 to 30 days
4: (the the percentage, the more sigificant the swing is).
5: Peak Volume Extreme Detection:
6: ->Sometimes several days around the true swing price extreme, a higher volume
7: extreme has been encountered.
8: Back testing suggests that these swing volumes while rare, do occur and are
9: significant.
10: ----> Rules For Trading from http://www.ord-oracle.com/
11: This software is designed to pick out the swings in a stock and then measure
12: the force between the swings. The
13: force is the amount of volume between the swings that pushes the stock in an
14: up-mode or down-mode. Stocks trend
15: in the direction of the highest volume. Stocks correct or consolidate on
16: lighter volume. By measuring the volume
17: between the swings and comparing to previous swings, one can "See" the force of
18: a particular move developing in the
19: stock. In an uptrend the stock should have higher volume on the rally phase
20: than the correction phase. In a
21: downtrend the stock should have higher volume on the declining phase than the
22: up correction phase. With that in
23: mind, we have developed this software to do just that. Keep in mind that this
24: software measures volume force in a
25: stock and is not implied to be a stand-alone tool to pick every turn in a
26: stock. The Ord-volume software is designed
27: to help identify the probable direction by the volume flow the stock has. Other
28: factors of the stock may push it in a
29: different direction.
30: 1. To pick the strongest stock (in up-trend), average daily volume should
31: shrink near 50% on correction phase
32: compared to the rally phase.
33: 2. To pick the weakest stocks (in down-trend) average daily volume should
34: shrink near 50% on up phase compared to
35: the declining phase.
36: Definition of a "Swing". A "Swing" is a price high or low where the stock
37: changes direction.
38: Definition of "Ord-Volume". "Ord-volume" measures the average volume between
39: "Swings".
40: Definition of "Ord-Volume Low". "Ord-Volume Low" is a down-leg in a stock.
41: Definition of "Ord-Volume High". "Ord-Volume High" is an up-leg in a stock.
42: 3. A buy signal is triggered when a stock closes above a previous important
43: "Ord-Volume low" where the current
44: "Ord-volume low" shrinks near 50% or greater against the "Important "Ord-volume
45: low"". An "Important
46: "Ord-volume Low" is when that low marks a bottom where the equity starts a
47: sideways consolidation.
48: 4. A sell signal is triggered when a stock closes below a previous important
49: "Ord-Volume High" where the current
50: "Ord-Volume High" shrinks near 50% or greater against the "Important
51: "Ord-Volume High"". An "Important
52: "Ord-Volume High"" is when that high marks a top where the equity starts a
53: sideways consolidation.
54: 5. Target price Projections:
55: 5.1 An upside target for a buy signal will be the previous "Swing High". If
56: volume is equal or greater on the test of the
57: previous high then the next higher swing high will be the target and so on.
58: 5.2 A downside target after a sell signal will be the previous "Swing Low". If
59: volume is equal or greater than the
60: previous "Swing Low" then the next lower swing will be the target and so on.
61: */
62: swingDays = 0;
63: swingVol = 0;
64: ordVol = 0;
65: upswingSignal = 0;
66: downswingSignal = 0;
67: accumulatedVolume = 0;
68: accumulatedDays = 0;
69: arrayHasSignal = 0;
70: zigPercentage = Param("ZigZag Percent", 10, 2, 50);
71: trendZig = Zig(C, zigPercentage);
72: action = Status("action");
73: midPointY = 0;
74: midPointValue = 0;
75: peakVolumeExtremeDetectionDays = Param("Peak Vol. Days", 6, 1, 20); //3 days
76: before and 3 days after a peak
77: daysBeforeAndAfterForPeakVolume = round(peakVolumeExtremeDetectionDays/2);
78: peakVolume = 0;
79: colorOrdVolume = ParamColor("Ord Vol. Info.", colorGrey50);
80: colorZig = ParamColor("ZigZag", colorGold);
81: colorPeakUp = ParamColor("Support Info.", colorGreen);
82: colorPeakDown = ParamColor("Resistance Info.", colorRed);
83: scalingFactor = 0.1;
84: function volumeInMillions(inVolume)
85: {
86: volInM = inVolume/1000000;
87: return NumToStr(volInM, 1.2, False) + " m";
88: }
89: function getPeakVolume(daysToCheck, nowDay)
90: {
91: returnPeakVolume = V[nowDay];
92: dayNumberBefore = (nowDay) - daysToCheck;
93: dayNumberAfter = (nowDay) + daysToCheck;
94: //find Max swing Volume
95: if( dayNumberBefore > 0 AND dayNumberAfter < BarCount )
96: {
97: returnPeakVolume = V[dayNumberBefore];
98: //_TRACE("Start returnPeakVolume = " + returnPeakVolume);
99: for( j = dayNumberBefore; j < dayNumberAfter; j++ )
100: {
101: if(returnPeakVolume < V[j])
102: {
103: returnPeakVolume = V[j];
104: }
105: //_TRACE("returnPeakVolume = " + returnPeakVolume);
106: }
107: }
108: else if( dayNumberBefore > 0 AND dayNumberAfter >= BarCount )
109: {
110: returnPeakVolume = V[dayNumberBefore];
111: //_TRACE("Start returnPeakVolume = " + returnPeakVolume);
112: for( j = dayNumberBefore; j < BarCount; j++ )
113: {
114: if(returnPeakVolume < V[j])
115: {
116: returnPeakVolume = V[j];
117: }
118: //_TRACE("returnPeakVolume = " + returnPeakVolume);
119: }
120: }
121: else
122: {
123: peakVolume = V[i-1];
124: }
125: return returnPeakVolume;
126: }
127: for( i = 3; i < BarCount; i++)
128: {
129: //initialize parameters
130: arrayHasSignal[i] = 0;
131: //Then we check which way the price goes
132: swingVol = swingVol + V[i-1];//Don't add today since price may have changed
133: direction
134: swingDays = swingDays + 1;
135: if( (trendZig[i] < trendZig[i-1]) AND (trendZig[i-1] > trendZig[i-2]) AND i >
136: 10 )//Changes from up swing to down swing
137: {
138: /*_TRACE("Changes from up swing to down swing, i = " + i);
139: _TRACE("trendZig[i-2] = " + trendZig[i-2]);
140: _TRACE("trendZig[i-1] = " + trendZig[i-1]);
141: _TRACE("trendZig[i] = " + trendZig[i]);*/
142: downswingSignal[i-1] = 0;
143: upswingSignal[i-1] = 1;
144: ordVol[i-1] = swingVol/swingDays;
145: accumulatedVolume[i-1] = swingVol;
146: accumulatedDays[i-1] = swingDays;
147: arrayHasSignal[i-1] = 1;
148: if(action == actionIndicator)
149: {
150: midPointValue = i - round(swingDays/2) - 1;
151: midPointY = trendZig[midPointValue];
152: peakVolume = getPeakVolume(daysBeforeAndAfterForPeakVolume, i - 1);
153: PlotText("(" + volumeInMillions(ordVol[i-1]) + ")", midPointValue,
154: midPointY, colorOrdVolume);
155: PlotText(NumToStr(H[i-1], 1.1, False) + " (" + volumeInMillions(peakVolume)
156: + ")", i-4, trendZig[i-1] * 1.02, colorPeakUp);
157: }
158: swingVol = 0;
159: swingDays = 0;
160: }
161: if( (trendZig[i] > trendZig[i-1]) AND (trendZig[i-1] < trendZig[i-2]) AND i >
162: 10 )//Changes from down swing to up swing
163: {
164: downswingSignal[i-1] = 1;
165: upswingSignal[i-1] = 0;
166: ordVol[i-1] = swingVol/swingDays;
167: accumulatedVolume[i-1] = swingVol;
168: accumulatedDays[i-1] = swingDays;
169: arrayHasSignal[i-1] = 1;
170: if(action == actionIndicator)
171: {
172: midPointValue = i - round(swingDays/2) - 1;
173: midPointY = trendZig[midPointValue];
174: peakVolume = getPeakVolume(daysBeforeAndAfterForPeakVolume, i - 1);
175: PlotText("(" + volumeInMillions(ordVol[i-1]) + ")", midPointValue,
176: midPointY, colorOrdVolume);
177: PlotText(NumToStr(L[i-1], 1.1, False) + " (" + volumeInMillions(peakVolume)
178: + ")", i-4, trendZig[i-1] * 0.95, colorPeakDown);
179: }
180: swingVol = 0;
181: swingDays = 0;
182: }
183: if( i == BarCount - 1)//add last signal too
184: {
185: swingVol = swingVol + V[i];//Remember to add today also
186: swingDays = swingDays + 1;
187: if(trendZig[i] < trendZig[i-1])//is down swing
188: {
189: downswingSignal[i] = 1;
190: upswingSignal[i] = 0;
191: ordVol[i] = swingVol/swingDays;
192: accumulatedVolume[i] = swingVol;
193: accumulatedDays[i] = swingDays;
194: arrayHasSignal[i] = 1;
195: }
196: if(trendZig[i] > trendZig[i-1])//is up swing
197: {
198: downswingSignal[i] = 0;
199: upswingSignal[i] = 1;
200: ordVol[i] = swingVol/swingDays;
201: accumulatedVolume[i] = swingVol;
202: accumulatedDays[i] = swingDays;
203: arrayHasSignal[i] = 1;
204: }
205: if(action == actionIndicator)
206: {
207: midPointValue = i - round(swingDays/2) - 1;
208: midPointY = trendZig[midPointValue];
209: PlotText("(" + volumeInMillions(ordVol[i]) + ")", midPointValue, midPointY,
210: colorOrdVolume);
211: }
212: }
213: }
214: if(action == actionExplore)
215: {
216: //Filter = 1;
217: Filter = arrayHasSignal;
218: //AddColumn(trendZig , "trendZig ", 1.2);
219: AddColumn(C, "Swing Up", 1.2, colorDefault, IIf(upswingSignal, colorPeakUp,
220: colorDefault));
221: AddColumn(C, "Swing Down", 1.2, colorDefault, IIf(downswingSignal,
222: colorPeakDown, colorDefault));
223: AddColumn(ordVol, "Ord Vol.", 1.0);
224: AddColumn(accumulatedDays, "Swing Days", 1.0);
225: AddColumn(accumulatedVolume, "Tot. Swing Vol.", 1.0);
226: }
227: else if(action == actionIndicator)
228: {
229: Plot(trendZig, "Ord Vol ZigZag", colorZig);
230: //Scale the axis so we can read the numbers
231: Plot(trendZig + (trendZig * scalingFactor), "", colorRed, styleNoDraw);
232: Plot(trendZig - (trendZig * scalingFactor), "", colorBlue, styleNoDraw);
233: }
234: ///////////////selesai////////////////////////////
sumber http://amibrokerindonesia.blogspot.com/2010/02/re-komunitas-amibroker-afl-alligator_02.html
AFL Alligator Trading System
1: //TODO:
2: //1. Remember F, AO, AC and Zone Add Ons signals and hits
3: //2. Integrate squat bars with exit signals somehow.
4: //3. five magic bullets - for taking profit
5: //Alligator lines
6: //---------------
7: //The Blue balance line is where the price would be on this time frame if there were no new incoming information,
8: //in other words, the market only moves when there is Chaos present.
9: AlligatorBlue=Ref(Wilders(Avg,13),-8);
10: Plot(AlligatorBlue, "Jaw", colorDarkBlue, styleLine | styleThick);
11: AlligatorRed=Ref(Wilders(Avg,8),-5);
12: Plot(AlligatorRed, "Teeth", colorRed, styleLine | styleThick);
13: AlligatorGreen=Ref(Wilders(Avg,5),-3);
14: Plot(AlligatorGreen, "Leeps", colorGreen, styleLine | styleThick);
15: //The PURPLE line is a 5 bar SIMPLE moving average of the bar̢۪s CLOSE offset 3 bars into the future
16: PurpleLine = MA(Ref(C,-3),5);
17: if( ParamToggle("Show Purple Line", "No|Yes", 0))
18: { Plot(PurpleLine , "Purple", colorViolet, styleLine | styleThick);
19: }
20: //AO
21: //---------------
22: AO = MA( Avg,5) - MA( Avg , 34);
23: AOUpBar = AO > Ref(AO, -1);
24: AODownBar = AO < Ref(AO, -1);
25: //AC
26: //---------------
27: MAAvg34=MA( Avg , 34);
28: MAAvg5 = MA( Avg,5);
29: MADiff = MAAvg5 - MAAvg34;
30: AC = MA(MADiff - MA(MADiff, 5), 5);
31: ACUpBar = AC > Ref(AC, -1);
32: ACDownBar = AC < Ref(AC, -1);
33: //Squat Bar
34: //---------
35: //Squat bars are a battle of the bulls and the bears, with lots of buying and selling but little price movement.
36: //A squat bar will be one of the top three OR bottom three bars 85% of the time at the end of a trend.
37: //While all trends end with a squat, all squats are NOT the end of a trend.
38: MarketFacilitionIndex =(H-L)/V;
39: SquatBar = MarketFacilitionIndex < Ref(MarketFacilitionIndex, -1) AND Volume > Ref(Volume, -1);
40: ShowSquatBars = ParamToggle("Show Squat Bars", "No|Yes", 1);
41: //Price Bar
42: //---------
43: GreenBar = AOUpBar AND ACUpBar;
44: RedBar = AODownBar AND ACDownBar;
45: PriceBarColor = IIf(GreenBar, colorBrightGreen , IIf(RedBar, colorRed, colorGrey40));
46: PriceBarColor = IIf(ShowSquatBars AND SquatBar, colorBlue, PriceBarColor);
47: Plot( C, "Close", PriceBarColor , styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
48: if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
49: {
50: ToolTip=StrFormat("Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.1f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
51: }
52: //Fractal up
53: //----------
54: fUp = (Ref(H,-2) > Ref(H, -4)) AND
55: (Ref(H,-2) > Ref(H, -3)) AND
56: (Ref(H,-2) > Ref(H, -1)) AND
57: (Ref(H,-2) > H);
58: var1=ValueWhen(fUp ,Ref(H,-2) ,1);
59: FractalUp=HighestSince(var1 > 0, var1, 1);
60: Plot(FractalUp, "F+",colorLime , styleLine | styleDots);
61: FUpBuyPrice = FractalUp + 0.01;
62: FUpHit = FUpBuyPrice <= H AND FUpBuyPrice >= L;
63: FUpSignalOn = Flip(Ref(FractalUp,-1) != FractalUp, FUpHit);
64: //Looks into the future. This is done only to display Fractal arrow at the right bar.
65: //The calculation of the fractal up is done without looking into the future.
66: PlotShapes(IIf(Ref(FractalUp,2) != Ref(FractalUp,1), shapeSmallUpTriangle, shapeNone), colorGreen,0,Ref(FractalUp,2), 10);
67: //Fractal Down
68: //------------
69: var2=
70: (Ref(L,-2) <= Ref(L, -1)) AND
71: (Ref(L,-2) <= Ref(L, 0)) AND
72: (Ref(L,-2) <= Ref(L, -3)) AND
73: (Ref(L,-2) <= Ref(L, -4));
74: FractalDown=ValueWhen(var2, Ref(L,-2), 1);
75: FDownSellPrice= FractalDown+ 0.01;
76: FDownHit = FDownSellPrice <= H AND FDownSellPrice >= L;
77: FDownSignalOn = Flip(Ref(FractalDown,-1) != FractalDown, FDownHit );
78: Plot(FractalDown, "F-", colorGrey40, styleLine | styleDots);
79: //Looks into the future. This is done only to display Fractal arrow at the right bar.
80: //The calculation of the fractal up is done without looking into the future.
81: PlotShapes(IIf(Ref(FractalDown,2) != Ref(FractalDown,1), shapeSmallDownTriangle, shapeNone), colorRed,0,Ref(FractalDown,2), 10);
82: //Exits
83: //-----
84: Bar5LongExit = Ref(GreenBar, -4) AND Ref(GreenBar, -3) AND Ref(GreenBar, -2) AND Ref(GreenBar, -1) AND GreenBar;
85: Bar5ShortExit = Ref(RedBar, -4) AND Ref(RedBar, -3) AND Ref(RedBar, -2) AND Ref(RedBar, -1) AND RedBar;
86: Bar5LongPrice = LowestSince(Bar5LongExit, L) - 0.01;
87: Bar5LongHit = L <= Ref(Bar5LongPrice, -1);
88: Bar5LongOn = Flip(Bar5LongExit, Bar5LongHit);
89: Bar5ShortPrice = LowestSince(Bar5ShortExit, H) + 0.01;
90: Bar5ShortHit = H >= Ref(Bar5ShortPrice, -1);
91: Bar5ShortOn = Flip(Bar5ShortExit, Bar5ShortHit);
92: GreenLineLongExit = Cross(AlligatorGreen, C);
93: RedLineLongExit = Cross(AlligatorRed, C);
94: GreenLineShortExit = Cross(AlligatorGreen, C);
95: RedLineShortExit = Cross(AlligatorRed, C);
96: //Zones (Add-Ons)
97: //---------------
98: //"Add-On" Buy (Sell):
99: //(1) The Momentum is still going up (down).
100: //(2) The Accelerator is moving up (down).
101: //(3) The Price is closing higher (lower).
102: //It is rare to continue to get over six to eight bars of the same color - No add ons after 5 consecutive bars.
103: AddOnBuy = Ref(GreenBar,-1) AND GreenBar AND C > Ref(C,-1) AND NOT Bar5LongExit;
104: AddOnSell = Ref(RedBar,-1) AND RedBar AND C < Ref(C,-1) AND NOT Bar5ShortExit;
105: //Balance Lines
106: //-------------
107: //1. If we are going toward the Balance Line, we place our Signal at base + two higher highs (lower lows).
108: //2. If we are going away from the Balance Line, we use base + one higher High (lower Low).
109: //3. If the current bar is red (green) and we are above the blue (Green) Balance Line AND looking for Buy (sell)signals
110: // we double the number of lower low (higher high) bars needed.
111: //4. Base Bar is the Lowest High (Highest Low) in buy (sell). Signal Bar is the bar before the base bar.
112: //5. Buy (Sell) stop is defined as the High (Low) + 1 tick of the Signal Bar.
113: //6. As long as the Signal bar itself is above the Balance Line, we act as if the entire formation were above the Balance Line.
114: //7. The buy (sell) stop stays in place unless
115: // (a) it is triggered
116: // OR
117: // (b) another bar with a lower High (Higher Low) is formed, creating a different base bar.
118: //8. You do not sell above the Alligator's mouth and you do not buy below the Alligator's mouth.
119: AboveAll = L > AlligatorRed AND L > AlligatorBLue AND L > AlligatorGreen;
120: BelowAll = H < AlligatorRed AND H < AlligatorBLue AND H < AlligatorGreen;
121: //Buys. Only above balance lines for now
122: LowerHigh = Ref(H, -1) > H;
123: //Double the number of LowerHighs Required on RedBar
124: BuySignalRef = IIf(RedBar, 2, 1);
125: //"BuySignalRef =" +WriteVal(BuySignalRef );
126: //1 or 2 lower highs above balance line
127: BLBuyCondition = Ref(AboveAll,-BuySignalRef) AND LowerHigh AND IIf(RedBar, Ref(LowerHigh,-1) , True);
128: //"BLBuyCondition =" +WriteVal(BLBuyCondition );
129: //Update price if new buy signal is on, otherwise use previous price:
130: BLBuyPrice = LowestSince(BLBuyCondition, Ref(H,-BuySignalRef)+0.01, 1);
131: //"Buy Hit="+WriteVal(H > Ref(BLBuyPrice,-1)) +" at"+WriteVal(Ref(BLBuyPrice,-1));
132: //Keep buy signal on until it is hit or marked is below all balance lines:
133: BLBuySignal = Flip(BLBuyCondition , ((NOT BLBuyCondition) AND H >= Ref(BLBuyPrice,-1)) OR BelowAll);
134: //"BLBuySignal "+WriteVal(BLBuySignal)+" BLBuyPrice="+WriteVal(BLBuyPrice);
135: BLBuyHit = Ref(BLBuySignal, -1) AND (NOT BLBuyCondition) AND H >= Ref(BLBuyPrice,-1);
136: //Note that if new buy signal is after a still valid older signal, we choose the lowest from both of them
137: BLBuyPrice = IIf(Ref(BLBuySignal,-1), Min(BLBuyPrice, Ref(BLBuyPrice,-1)), BLBuyPrice);
138: //Sells. Only below balance lines for now
139: HigherLow = Ref(L, -1) < L;
140: //Double the number of LowerHighs Required on GreenBar
141: SellSignalRef = IIf(GreenBar, 2, 1);
142: //"SellSignalRef =" +WriteVal(SellSignalRef );
143: //1 or 2 higher lows above balance line
144: BLSellCondition = Ref(BelowAll, -SellSignalRef) AND HigherLow AND IIf(GreenBar, Ref(HigherLow,-1) , True);
145: //"BLSellCondition =" +WriteVal(BLSellCondition);
146: //Update price if new sell signal is on, otherwise use previous price:
147: BLSellPrice = HighestSince(BLSellCondition , Ref(L,-SellSignalRef)-0.01, 1);
148: //"Sell Hit="+WriteVal((NOT BLSellCondition) AND L < Ref(BLSellPrice,-1)) +" at"+WriteVal(Ref(BLSellPrice,-1));
149: //Keep buy signal on until it is hit or market is above all balance lines
150: BLSellSignal = Flip(BLSellCondition, ((NOT BLSellCondition) AND L <= Ref(BLSellPrice,-1)) OR AboveAll);
151: //"BLSellSignal"+WriteVal(BLSellSignal)+" BLSellPrice="+WriteVal(BLSellPrice);
152: BLSellHit = Ref(BLSellSignal, -1) AND (NOT BLSellCondition) AND L <= Ref(BLSellPrice,-1);
153: //Note that if new sell signal is after a still valid older signal, we choose the highest from both of them
154: BLSellPrice = IIf(Ref(BLSellSignal,-1), Max(BLSellPrice, Ref(BLSellPrice,-1)), BLSellPrice);
155: //Bars Analysis
156: //-------------
157: Third = (H-L) / 3;
158: Line1 = H - Third;
159: Line2 = L + Third;
160: Half = L + ((H-L) / 2);
161: //After an extreme bar 85% of the time the market will change direction within the next 1-5 bars.
162: ExtremeBarUp = Open > Line1 AND Close > Line1;
163: ExtremeBarDown = Open < Line2 AND Close < Line2;
164: ExtremeBar = ExtremeBarUp OR ExtremeBarDown;
165: //Bullish AND Bearish Bars Inside the mouth do NOT create a Signal.
166: OutsideMouth = NOT ((H < AlligatorBlue AND L > AlligatorGreen) OR (L > AlligatorBlue AND H < AlligatorGreen));
167: //Bullish Divergence Bars
168: BullDivBar = OutsideMouth AND L < Ref(L,-1) AND C > Half;
169: //Bearish Divergence Bars
170: BearDivBar = OutsideMouth AND H > Ref(H, -1) AND C < Half;
171: PlotShapes(IIf(ExtremeBar, shapeSmallCircle ,shapeNone), colorBlue, 0, H, 12);
172: PlotShapes(IIf(BullDivBar, shapeSmallCircle ,shapeNone), colorGreen, 0, L, -12);
173: PlotShapes(IIf(BearDivBar, shapeSmallCircle ,shapeNone), colorRed, 0, H, 12);
174: //Commentary:
175: WriteIf(ExtremeBarUp OR ExtremeBarDown, "Possible Change of direction within the next 1-5 bars. (Extreme Bar)\n","")+
176: "Buy Signals:\n"+
177: WriteIf(FUpSignalOn , "Place Buy Stop if Price rises to" +WriteVal(FUpBuyPrice)+ " or higher. (F+)\n","")+
178: WriteIf(BullDivBar, "Place Buy Stop if Price rises to" +WriteVal(H+0.01)+ " or higher. (Bullish Divergent Bar)\n","")+
179: WriteIf(AddOnBuy, "Place Buy Stop if Price rises to" +WriteVal(H+0.01)+ " or higher. (Zones Add On Buy)\n","")+
180: WriteIf(BLBuySignal,"Place Buy Stop if Price rises to" +WriteVal(BLBuyPrice)+ " or higher. (BL+)\n","")+
181: "Sell Signals:\n"+
182: WriteIf(FDownSignalOn , "Place Sell Stop if Price falls to" +WriteVal(FDownSellPrice)+ " or lower. (F-)\n","")+
183: WriteIf(BearDivBar, "Place Sell Stop if Price falls to" +WriteVal(L-0.01)+ " or lower. (Bearish Divergent Bar)\n","")+
184: WriteIf(AddOnSell, "Place Sell Stop if Price falls to" +WriteVal(L-0.01)+ " or lower. (Zones Add On Sell)\n","")+
185: WriteIf(BLSellSignal,"Place Sell Stop if Price falls to" +WriteVal(BLSellPrice)+ " or lower. (BL-)\n","")+
186: "Hits:\n"+
187: WriteIf(BLBuyHit,"Buy Stop Hit at" +WriteVal(Ref(BLBuyPrice,-1))+ ". (BL+)\n","")+
188: WriteIf(BLSellHit,"Sell Stop Hit at" +WriteVal(Ref(BLSellPrice,-1))+ ". (BL-)\n","")+
189: WriteIf(Ref (FUpSignalOn, -1) AND FUpHit,"Buy Stop Hit at" +WriteVal(Ref(FUpBuyPrice,-1))+ ". (F+)\n","")+
190: WriteIf(Ref (FDownSignalOn, -1) AND FDownHit,"Sell Stop Hit at" +WriteVal(Ref(FDownSellPrice,-1))+ ". (F-)\n","")+
191: WriteIf(Ref(Bar5LongOn , -1) AND Bar5LongHit, "Close all positions Hit at" +WriteVal(Ref(Bar5LongPrice,-1))+ ". (Long Five Consecutive Bars Exit)\n","")+
192: WriteIf(Ref(Bar5ShortOn , -1) AND Bar5ShortHit, "Close all positions Hit at" +WriteVal(Ref(Bar5ShortPrice,-1))+ ". (Short Five Consecutive Bars Exit)\n","")+
193: "Exits:\n"+
194: WriteIf(Bar5LongOn , "Long Five Consecutive Bars Exit Strategy: Close all Long positions if Price falls to" +WriteVal(Bar5LongPrice)+ " or lower.\n","")+
195: WriteIf(Bar5ShortOn, "Short Five Consecutive Bars Exit Strategy: Close all Short positions if Price rises to" +WriteVal(Bar5ShortPrice)+ " or higher.\n","")+
196: WriteIf(GreenLineLongExit, "Green Line Long Exit Strategy: All Long positions should have been closed when Close Price fell below "+WriteVal(AlligatorGreen)+".\n","")+
197: WriteIf(RedLineLongExit, "Red Line Long Exit Strategy: All Long positions should have been closed when Close Price fell below "+WriteVal(AlligatorRed)+".\n","")+
198: WriteIf(GreenLineShortExit, "Green Line Short Exit Strategy: All Short positions should have been closed when Close Price rose above "+WriteVal(AlligatorGreen)+".\n","")+
199: WriteIf(RedLineShortExit, "Red Line Short Exit Strategy: All Short positions should have been closed when Close Price rose aboce "+WriteVal(AlligatorRed)+".\n","");
diambil dari http://www.wisestocktrader.com
Subscribe to:
Posts (Atom)







