AFL writing guide for new user

#11
CUSTOMIZED AFL FOR NEW USERS SAMPLE 1​

Here I am showing you a new afl. Our signal is, every time price crosess 50 ema we will buy. and once it closes below 20 ema we sell. Lets see how we can write the AFL for it.

_SECTION_BEGIN("visual arrow ema cross over");
SetChartOptions(0,chartShowArrows|chartShowDates);
Plot( Close, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

Buy= Cross(Close, EMA( C, 50 ));
Sell= Cross(EMA( C, 20 ),Close);


PlotShapes(IIf(Sell==1, shapeDownArrow, shapeNone), colorRed, 0,High, Offset=-20);
PlotShapes(IIf(Buy==1, shapeUpArrow , shapeNone), colorGreen, 0,Low, Offset=-20);

Plot( EMA( C,20), "20 EMA Close",ParamColor("EMA 20 Color", colorGreen ),styleNoRescale);
Plot( EMA( C,50), "50 EMA Close",ParamColor("EMA 50 Color", colorRed ),styleNoRescale);
_SECTION_END();


Here is the output
 
#12
You just post here the codes. I will try to refine them for you my friend. :)

I also wish that AFl experts share sample AFL here too. :)


Some AFLs do not work on my 4.8 Ami, they show such errors like

Syntax error, expecting ')" or ','

etc.

Can you please tell how can we overcome such an issue.
 

deadbrain

Well-Known Member
#13
_SECTION_BEGIN("ABKPPivotAndPops");
/* TSKPPivot and PivotPop
A PP (Pivot Point) occurs when A900 crosses over/under AutoStop and is
confirmed when ScoreCard value be >= 5/<= -5.
When A900 crosses over AutoStop and ScoreCard confirms with a reading
>= 5, then a new PL (Pivot Low) has been made. The PL point is the bar
that has the lowest low price since the last PH.
When A900 crosses under AutoStop and ScoreCard confirms witha reading
<= -5, then a new PH (Pivot High) and been made. The PH point is the bar
that has the highest high price since the last PL.
One can NOT have two consecutive PHs OR two consecutive PLs.

PP Trend requires 3 Pivot Points. THe PP trend is either Up (PPTrend = 1) or
Down (PPTrend = -1). There are 2 basic Pivot Point patterns: PL-PH-PL or PH-PL-PH.

Note: if 'M/W tick allowance is NOT equal to 0 then you must have Tick Size correctly
specified to get the correct results.

Pivot Pop Up occurs when: Pivot Pop Down occurs when:
Pivot Low Pivot High
Pivot Low has occured within the last X bars Pivot High has occured within the last X bars
A900 >= AutoStop A900 <= AutoStop
Fast2 = 1 Fast2 = -1
ScoreCard >= 5 ScoreCard <= -5
Close > MeanSwingLine (optional) Close < MeanSwingLine (optional)
Close > Upper Bollinger Band Close < Lower Bollinger Band
Close > Open Close < Open

*/
SetBarsRequired(350, -0);

//user parameters
parmPlotScoreCard = ParamToggle("Plot KPScoreCard", "No|Yes", 1);
parmPlotA900AutoStop = ParamToggle("Plot A900/AutoStop", "No|Yes", 0);
parmA900Color = ParamColor("A900 Color", colorBlack);
parmA900Style = ParamStyle("A900 Style", styleNoLabel, maskAll);
parmAutoStopColor = ParamColor("AutoStop Color", colorCustom12);
parmAutoStopStyle = ParamStyle("AutoStop Style", styleLine, maskAll);
parmPPTextColor = ParamColor("PP Text color", colorBlack);
parmPPTrndColorUp = ParamColor("PP Trend Up color", colorGreen );
parmPPTrndColorDn = ParamColor("PP Trend Dwn color", colorRed );
parmPPTextOffSet = Param("PP OffSet", 0.90, 0.40, 1.5, 0.1);
parmTickMultipler = Param("M/W tick allowance", 0, 0, 10, 1);
parmA900AutoStopX = ParamToggle("Plot A900/AutoStop Cross", "No|Yes");
parmA900AutoStopColorX = ParamColor("A900/AutoStop Cross Color", colorBlack);
ParmSCThreshold = Param("ScoreCard Threshold", 5, 1, 9, 1);
parmVoice = ParamToggle("Pivot Voice", "No|Yes", 0);
parmPivotPop = ParamToggle("PivotPop", "No|Yes", 1);
parmBarCancel = Param("Bar Cancel", 4, 1, 20, 1);
parmFilter = ParamList("Filter", "None|KPMSL|KPWaterLevel|KPMedium", 0);
parmPlotFilter = ParamToggle("Plot Filter", "No|Yes", 0);
parmFilterColor = ParamColor("Filter Color", ColorRGB(127,255,212));
parmFilterStyle = ParamStyle("Filter Style", styleLine, maskAll);
parmBBPeriod = Param("Bollinger Band Period", 20, 2, 30, 1);
parmBBSD = Param("Bollinger Band width", 1.0, 0.5, 3.0, 0.5);
ParmPlotPPIndicators = ParamToggle("Plot Pivot Pop indicators", "No|Yes", 0);
parmBBColor = ParamColor("BBands Color", colorBlack);
parmBBStyle = ParamStyle("BBands Style", styleLine, maskAll);

ParmDebug = ParamToggle("Debug", "No|Yes", 0);

// constants
_N(PaneName = Name() + Interval(2)+ _SECTION_NAME());
_N(NewBarName = "NewBar" + PaneName);

//functions
function NewBarP()
{
PrevDT = StaticVarGet( NewBarName);
DT = LastValue(DateTime());
StaticVarSet( NewBarName,DT);
return DT != PrevDT;
}
function MRoundP(Number, Multiple )
{
if(Multiple == 0 )
{

xMultiple = 0.01; }
else
{
xMultiple = Multiple;
}
Divided = Number / xMultiple;
intDivided = int(Divided);
intDivided = intDivided + round(Divided - intDivided);
return intDivided * xMultiple;
}

//miscellaneous setups
ObjAB = CreateObject("Broker.Application");
ticker = objAB.Stocks(Name() );
if(ticker.TickSize == 0)
{
TickValue = 0.01; //set TickValue to a penney
}
else
{
TickValue = ticker.TickSize; // use Tick Size for this symbol
}
NewBarSignal = NewBarP();
// KP Indicators
KPA900 = E_TSKPA900(Close);
KPAutoStop = E_TSKPAUTOSTOP(High,Low,Close);
Ctmpl = E_TSKPCOLORTMPL(Open,High,Low,Close,Volume); //ScoreCard
KPScoreCard = 0;
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd0 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd1 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd2 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd3 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd4 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd5 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd6 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd7 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd8 > 0, 1, -1);

if(parmDebug == 1)
{
printf("a900: %0.6f% \nAutoStop: %0.6f%\nScoreCard: %0.0f%\n", KPA900, KPAutoStop, KPScoreCard);
}
if(parmPlotScoreCard == 1)
{
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g% (%0.4f%) {{VALUES}}", O, H, L, C, SelectedValue( C - Ref(C, -1)) ));
if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
{
ToolTip=StrFormat("Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.2f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
}
Color = IIf(KPScoreCard >= parmSCThreshold, colorBlue, IIf(KPScoreCard <= -parmSCThreshold, colorRed, colorYellow) );
Plot( C, "Close", Color , styleNoTitle | styleBar+styleThick );
}
//user want A900/AutoStop plotted
if(parmPlotA900AutoStop == 1)
{
Plot(KPA900, "A900", parmA900Color, parmA900Style);
Plot(KPAutoStop, "AutoStop", parmAutoStopColor, parmAutoStopStyle);
}
// find A900/AutoStop cross over/under with ScoreCard confirmation.
XOUp = (KPA900 > KPAutoStop) AND (KPScoreCard >= parmSCThreshold); // New Pivot Low
XODn = (KPA900 < KPAutoStop) AND (KPScoreCard <= -parmSCThreshold); // New Pivot High
if(parmDebug == 1)
{
printf(WriteIf(XOUp, "before= XOUp: True", "before= XOUp: False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
}
//remove duplicate signals
XOUp = ExRem(XOUp, XODn);
XODn = ExRem(XODn, XOUp);

if(parmDebug == 1)
{
printf(WriteIf(XOUp, "after= XOUp: True", "after= XOUp: False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
}
//find the current Pivot Points - PL and PH
//remember XOUp = 1 means a PL and XODn =1 means a PH
PLBars = IIf(XOUp, LowestSinceBars(XODn, L ,1), 0); //find the bar that produced the Lowest Low
PHBars = IIf(XODn, HighestSinceBars(XOUp, H, 1),0); //find the bar that produced the Highest High
//PLPrice = IIf(XOUp, Ref(L, -PLBars), 0);
//PHPrice = IIf(XODn, Ref(H, -PHBars),0);
PLPrice = Ref(L, -PLBars);
PHPrice = Ref(H, -PHBars);

//keep track of the previous Pivot Points
PrevPLBars = Ref(BarsSince(XOUp), -1) +1;
PrevPHBars = Ref(BarsSince(XODn), -1) +1;
PrevPLPrice = Ref(PLPrice, -prevPLBars);
PrevPHPrice = Ref(PHPrice, -PrevPHBars );
PivotsCloseEnough = TickValue * parmTickMultipler;
PLDifference = MroundP(PLPrice - PRevPLPrice, ticker.TickSize);
PHDifference = MroundP(PHPrice - PrevPHPrice, ticker.TickSize);
PPTrend = IIf(XOUp AND (PLDifference > PivotsCloseEnough) AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 1,
IIf(XOUp AND (PLDifference < - PivotsCloseEnough) AND PRevPHPrice > PrevPLPrice AND PrevPHPrice > PLPrice, -1,
IIf(XODn AND (PHDifference > PivotsCloseEnough) AND PrevPLPrice < PrevPHprice AND PrevPLPrice < PHPrice, 1,
IIf(XODn AND (PHDifference < -PivotsCloseEnough) AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -1, 0)) ));
/*
PPTrend = IIf(XOUp AND PLPrice > PRevPLPrice AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 1,
IIf(XOUp AND PLPrice < PRevPLPrice AND PRevPHPrice > PrevPLPrice AND PrevPHPrice > PLPrice, -1,
IIf(XODn AND PHPrice > PrevPHPrice AND PrevPLPrice < PrevPHprice AND PrevPLPrice < PHPrice, 1,
IIf(XODn AND PHPrice < PrevPHPrice AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -1, 0)) ));
*/
if(ParmDebug)
{
printf("Current PH Bar: %g% /Price: %g%\n", PHBars, PHPrice);
printf("Current PL Bar: %g% /Price: %g%\n", PLBars, PLPrice);
printf("Previous PH Bar: %g% /Price: %g%\n", PrevPHBars, PrevPHPrice);
printf("Previous PL Bar: %g% /Price: %g%\n", PrevPLBars, PrevPLPrice) ;
printf("PP Trend: %g%\n", PPTrend);
printf("PHPrice - PrevPHPrice: %g%\nPLPrice - PrevPLPrice: %g%\nPivotsCloseEnough: %g%\n", PHDifference, PLDifference, PivotsCloseEnough);
}
//PLot pivots as text
dist = parmPPTextOffSet * ATR(10);
//for( i = 0; i < BarCount -1; i++)
for( i = 0; i < BarCount ; i++)
{
if(XOUp[i ] == 1 ) //cross up -plot the Pivot Low
{
PlotText("PL \n"+PLPrice, i - PLBars, PLPrice - dist , parmPPTextColor, IIf(PPTrend == 1, parmPPTrndColorUp, IIf(PPTrend == -1, parmPPTrndColorDn, colorYellow) ));
}
if(XODn[i ] == 1 ) //cross down - plot the pivot high
{
PlotText("PH \n"+PHPrice, i - PHBars, PHPrice + dist, parmPPTextColor, IIf(PPTrend == 1, parmPPTrndColorUp, IIf(PPTrend == -1, parmPPTrndColorDn, colorYellow) ));
}
} //end For
// Plot A900/AutoStop cross over/under
if(parmA900AutoStopX == 1)
{
PlotShapes(IIf(Cross(KPA900, KPAutoStop), shapeUpTriangle, shapeNone), parmA900AutoStopColorX, 0, L, -20);
PlotShapes(IIf(Cross(KPAutoStop, KPA900), shapeDownTriangle, shapeNone), parmA900AutoStopColorX, 0, H , -20);
}
//PHLine = LineArray(BarCount - LastValue(PHBars) -3, LastValue(PHPrice), BarCount - LastValue(PHBars) +2, LastValue(PHPrice), 0);
//Plot(PHLine, "PH", colorBlack, styleLine);
//PLLine = LineArray(BarCount - LastValue(PLBars) -3, LastValue(PLPrice), BarCount - LastValue(PLBars) +2, LastValue(PLPrice), 0);
//Plot(PLLine, "PL", colorBlack, styleLine);
// identify M, lazy M, W and Lazy W formations
//voice
if(parmVoice ==1)
{
if(NewBarSignal)
{
if( LastValue(Ref(XODn, -1)) == 1 AND LastValue(Ref(PPTrend, -1)) == 1) Say(Interval(2) + " New pivot. Higher high.");
if( LastValue(Ref(XODn, -1)) == 1 AND LastValue(Ref(PPTrend, -1)) == -1) Say(Interval(2) + " New pivot. Lower high.");
if( LastValue(Ref(XODn, -1)) == 1 AND LastValue(Ref(PPTrend, -1)) == 0) Say(Interval(2) + " New pivot. M Top.");

if( LastValue(Ref(XOUp,-1)) ==1 AND LastValue(Ref(PPTrend, -1)) == 1) Say(Interval(2) + " New pivot. Higher low.");
if( LastValue(Ref(XOUp,-1)) ==1 AND LastValue(Ref(PPTrend, -1)) == -1) Say(Interval(2) + " New pivot. Lower low.");
if( LastValue(Ref(XOUp,-1)) ==1 AND LastValue(Ref(PPTrend, -1)) == 0) Say(Interval(2) + " New pivot. W bottom.");
}
}
//Pivot Pop code
if(parmPivotPop == 1)
{
//Kp indicators for Pivot Pop
dummy = E_TSKPFAST2(Open, High, Low, Close, Volume);
KPFast2 = IIf(tskp_fast2val1 > 0, 1, -1);
BarsSinceXOUp =BarsSince(XOUp);
BarsSinceXODn = BarsSince(XODn);
switch(parmFilter)
{
case "None":
PopFilter = True;
break;
case "KPMSL":
swVal = E_TSKPSWINGLINE(High, Low, Close);
KPMSL = tskp_swmean;
PopFilter = IIf(BarsSinceXOUp < BarsSinceXODn AND (C > KPMSL), True, IIf(BarsSinceXODn < BarsSinceXOUp AND (C < KPMSL), True, False));
break;
case "KPWaterLevel":
KPWaterlevel = E_TSKPWATERLEVEL(Open,High,Low,Close,Volume);
PopFilter = IIf(BarsSinceXOUp < BarsSinceXODn AND (C > KPWaterLevel), True, IIf(BarsSinceXODn < BarsSinceXOUp AND (C < KPWaterLevel), True, False));
break;
case "KPMedium":
dummy = E_TSKPMEDIUM(Close);
KPMediumUp = tskp_mediumup;
KPMediumDn = tskp_mediumdown;
KPMediumMA = tskp_mediumma;
KPMedium = KPMediumUp + KPMediumDn;
PopFilter = IIf(BarsSinceXOUp < BarsSinceXODn AND (KPMedium > KPMediumMA), True, IIf(BarsSinceXODn < BarsSinceXOUp AND (KPMedium < KPMediumMA), True, False));
break;
}
//calculations
UBB = BBandTop(C, parmBBPeriod, parmBBSD);
LBB = BBandBot(C, parmBBPeriod, parmBBSD);

if(parmDebug == 1)
{
printf("Fast2: %1.0f% \nUBB: %0.6f%\nLBB: %0.6f%\nC: %g%\n", KPFast2, UBB, LBB, C);
printf("Bars since Last XOUp: %1.0f%\nBars since last XODn: %1.0f%\n", BarsSinceXOUp, BarsSinceXODn );
printf("Bars since PPTrnd =1: %1.0f%\nBars since PPTrnd = -1: %1.0f%\n", BarsSince(PPTrend ==1), BarsSince(PPTrend == -1) );
printf("ParmFilter: " + parmFilter + "\nPopFilter: %g%\n", PopFilter);
switch(parmFilter)
{
case "None":
break;
case "KPMSL":
printf("KPMSL: %g%\n", KPMSL);
break;
case "KPWaterLevel":
printf("KPWaterlevel: %g%\n", KPWaterLevel);
break;
case "KPMedium":
printf("KPMedium: %g%\nKPMediumMA: %g%\n", KPMedium, KPMediumMA);
break;
}
}
PPopUp = (BarsSince(PPTrend == 1) <= parmBarCancel) AND (BarsSince(XOUp) <= parmBarCancel) AND (KPA900 >= KPAutoStop) AND(KPFast2 == 1) AND (KPScoreCard >= 5)
AND PopFilter
AND (C > UBB) AND (C > O) ;
PPopUp = IIf( PPopUp AND Sum(PPopUP, BarsSince(XOUp)+1) == 1, True, False ); //keep only the 1st signal
PPopDn = (BarsSince(PPTrend == -1) <= parmBarCancel) AND (BarsSince(XODn) <= parmBarCancel) AND (KPA900 <= KPAutoStop) AND(KPFast2 == -1) AND (KPScoreCard <= -5)
AND PopFilter
AND (C < LBB) AND (C < O) ;
PPopDn = IIf( PPopDn AND Sum(PPopDn, BarsSince(XODn) + 1) == 1, True, False); //keep only the first signal
if(parmDebug == 1)
{
printf(WriteIf(PPopUp,"PPopUp: True", "PPopUp: False") + WriteIf(PPopDn, " PPopDn: True\n", " PPopDn: False\n") );
printf("PPopUp sum: %1.0f% \nPPopDn sum: %1.0f%", Sum(PPopUP, BarsSince(XOUp)) , Sum(PPopDn, BarsSince(XODn)) );
}
// Plots
PlotShapes(IIf(PPopUp, shapeUpTriangle, shapeNone), colorLightBlue, 0, L, -30);
PlotShapes(IIf(PPopDn, shapeDownTriangle, shapeNone), colorRed, 0, H, -30);

if(ParmPlotPPIndicators == 1) //plot the Pivot Pop Indicators
{
Plot(UBB, "Upper BB", parmBBColor, parmBBStyle);
Plot(LBB, "Lower BB", parmBBColor, parmBBStyle);
if(parmPlotA900AutoStop == 1)
{
Plot(KPA900, "A900", parmA900Color, parmA900Style);
Plot(KPAutoStop, "AutoStop", parmAutoStopColor, parmAutoStopStyle);
}
Plot( 0.5, "Fast2", IIf(tskp_fast2val1 > 0, parmPPTrndColorUp, parmPPTrndColorDn) , styleArea | styleNoLabel | styleOwnScale , 0, 10);
} //endif parmPlotPPIndicators
if(parmPlotFilter == 1)
{
switch(parmFilter)
{
case "None":
break;
case "KPMSL":
Plot(KPMSL, "KPMSL", parmFilterColor, parmFilterStyle);
break;
case "KPWaterLevel":
Plot(KPWaterLevel, "KPWaterLevel", parmFilterColor, parmFilterStyle);
break;
case "KPMedium":
// HMM how to print Medium on a price chart
break;
}
} //endif parmPlotFilter
} // end if parmPivotPop
_SECTION_END();

_SECTION_BEGIN("ABKPMOMODots");
/* ABKPMoMo
If TRIGGOSC is greater than 0 and SHORTERMTRADEBIAS is greater than 0 and
MEDIUM is greater than Medium MA, give me a dot underneath the current price
bar. If TRIGGOSC is less than 0 and SHORTERMTRADEBIAS is less than 0 and
MEDIUM is less than Medium MA, give me a dot above the current price bar.


*/
parmMoMoUpColor = ParamColor("MoMo up color", colorWhite);
parmMoMoDnColor = ParamColor("MoMo dn color", colorDarkRed);
parmDetrendPeriod = Param("Detrend period", 8, 1, 20, 1);
parmPlotRibbon = ParamToggle("Plot as ribbon", "No|Yes", 0);
parmRibbonSize = Param("Ribbon Size", 1, 0.5, 10, 0.5);
parmDebug = ParamToggle("Debug", "No|Yes", 0);
SetBarsRequired(350, -1);

//KP indicators
sw = E_TSKPUPSELL(Open,High,Low,Close,Volume);
KPTriggerLine = tskp_triggerline;
dummy = E_TSKPSHORTTERMTRADEBIAS(High,Low,Close);
KPSTTB = tskp_sttb1;
dummya = E_TSKPMEDIUM(Close);
KPMediumUp = tskp_mediumup;
KPMediumDn = tskp_mediumdown;
KPMediumMA = tskp_mediumma;
if(parmDebug == 1)
{
printf("KBTriggerLine: %g%\nKPSTTB: %g%\nKPMediumUp: %g%\nKPMediumDn: %g%\nKPMediumMa: %g%\n", KPTriggerLine, KPSTTB, KPMediumUp, KPMediumDn, KPMediumMa);
}
// calculations
//Detrend = KPTriggerLine - MA(KPTriggerLine, parmDetrendPeriod); //Detrend KPTriggerLine
Detrend = KPTriggerLine - Ref( MA( KPTriggerLine, parmDetrendPeriod ), -( 1 + parmDetrendPeriod/2 ) );
MedianPrice = (H + L) /2;
AvgValue = Ref(MA(C, 2), -1);
UpSignal = Detrend >= 0 AND KPSTTB >= 0 AND (KPMediumUp > KPMediumMa OR KPMediumDn > KPMediumMa) AND MedianPrice > AvgValue;
DnSignal = Detrend < 0 AND KPSTTB < 0 AND (KPMediumUp < KPMediumMA OR KPMediumDn < KPMediumMA) AND MedianPrice < AvgValue;
if(parmDebug == 1)
{
printf("Detrend: %g%\nMedian Price: %g%\nAvgValue: %g%\n", Detrend, MedianPrice, AvgValue);
printf(WriteIf(UpSignal, "UpSignal: True", "UpSignal: False") + WriteIf(DnSignal, " DnSignal: True\n", " DnSignal: False\n") );

}
//plots
if(parmPlotRibbon == 0)
{
PlotShapes(IIf(UpSignal, shapeSmallCircle, shapeNone), parmMoMoUpColor, 0, L, -10);
PlotShapes(IIf(DnSignal, shapeSmallCircle, shapeNone), parmMoMoDnColor, 0, H, 10);
}
else
{
Plot(parmRibbonSize, "", IIf(UpSignal, parmMoMoUpColor, IIf(DnSignal, parmMoMoDnColor, Null )), styleArea | styleNoLabel | styleOwnScale , 0, 10);

}
_SECTION_END();


//Plot( JurikJMA( Close, 8, 0), "", colorGreen, styleThick );
Plot( JurikJMA( Close, 15, 0), "", colorWhite, styleThick );
Col_j = IIf(JurikJMA( Close, 8, 0) > JurikJMA( Close, 15, 0), colorGreen,colorDarkRed);
PlotOHLC (JurikJMA( Close, 8, 0), IIf(JurikJMA( Close, 8, 0) > JurikJMA( Close, 15, 0), JurikJMA( Close, 8, 0),JurikJMA( Close, 15, 0)), IIf(JurikJMA( Close, 8, 0) < JurikJMA( Close, 15, 0),JurikJMA( Close, 8, 0),JurikJMA( Close, 15, 0)),JurikJMA( Close, 15, 0), "ma-15", col_j,styleCloud+styleNoLabel);
Plot(EMA(Close,34),"",colorBlue, styleThick+styleNoLabel);
Col_e = IIf(EMA(Close,20) > EMA(Close,34), colorAqua, colorOrange);
PlotOHLC (EMA(Close,34), IIf(EMA(Close,34) > EMA(Close,20), EMA(Close,34), EMA(Close,20)), IIf(EMA(Close,34) < EMA(Close,20), EMA(Close,34), EMA(Close,20)),EMA(Close,34),"",col_e, styleCloud);


_SECTION_BEGIN("Fibo for all bars");

TimeFrameSet( in15Minute*2 );
DH=Ref(H,-1);
DL=Ref(L,-1);
DC=Ref(C,-1);


pd = (O+ DH+ DL + DC )/4;
sd1 = (2*pd)-DH;
sd2 = pd -(DH - DL);
sd3 = Sd1 - (DH-DL);
rd1 = (2*pd)-DL;
rd2 = pd +(DH -DL);
rd3 = rd1 +(DH-DL);



//Plot (pd,"Pivot",colorBlue,styleDots);
//Plot (rd1," R1 ",35,styleDots);
//Plot (rd2," R2 ",35,styleDots);
//Plot (rd3," R3 ",35,styleDots);

//Plot (sd1," S1 ",4,styleDots);
//Plot (Sd2," S2 ",4,styleDots);
//Plot (Sd3," S3 ",4,8+16);
/*
style = IIf(ParamList("Chart style", "styleCandle|styleBar")=="styleCandle",64,128+4);
Plot (C,Date ()+" close",1,style); //ENABLE THIS TO HAVE CANDLES AS WELL
*/
TimeFrameRestore();


Title = EncodeColor(colorWhite)+ "LINKON'S PIVOT TRADING SYSTEM" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "
//+ WriteIf(Col_action==colorGreen, EncodeColor(colorGreen)+"stay LONG","")+ WriteIf(Col_action==colorRed, EncodeColor(colorRed)+"stay SHORT","")+ WriteIf(Col_action==colorBlack, EncodeColor(colorYellow)+"No Trend","")+"\n"
+ "Vol= "+ WriteVal(V) +WriteIf ( V > MA(V,26) ,EncodeColor(colorGreen)+" UP "+ (V/MA(V,26))*100 + " %", EncodeColor(colorRed)+" DOWN "+ (V/MA(V,26))*100 + " %")
+ EncodeColor(colorGreen)+ "\n R3 : "+ EncodeColor(colorWhite)+RD3
+ EncodeColor(colorGreen)+ "\n R2 : "+ EncodeColor(colorWhite)+RD2
+ EncodeColor(colorGreen)+ "\n R1 : "+ EncodeColor(colorWhite)+RD1+ EncodeColor(colorGreen)+ "` Hi: "+ EncodeColor(colorWhite)+H
+ EncodeColor(colorBlue)+ "\n Pivot : "+ EncodeColor(colorWhite)+pd + EncodeColor(colorYellow)+ "` Op: "+ EncodeColor(colorWhite)+O+ EncodeColor(colorAqua)+ "Cl: "+ EncodeColor(colorBrightGreen)+C
+ EncodeColor(colorRed)+ "\n S1 : "+ EncodeColor(colorWhite)+SD1+ EncodeColor(colorRed)+ "` Lo: "+ EncodeColor(colorWhite)+L
+ EncodeColor(colorRed)+ "\n S2 : "+ EncodeColor(colorWhite)+SD2
+ EncodeColor(colorRed)+ "\n S3 : "+ EncodeColor(colorWhite)+SD3
;

_SECTION_END();

here is the one
 
#14
AFL for Simple MACD crossing system

Here I am using standard 12,26,9 paramiters for MACD. Now you can set this according to your desire. If you get trouble them let me know I will try to help you. Now our system will generate buy signal once MACD crosess signal line and sell in reverse. Easy right? Let me write the AFL for this.

_SECTION_BEGIN("visual arrow ema cross over");
SetChartOptions(0,chartShowArrows|chartShowDates);
Plot( Close, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

r1 = Param( "Fast avg", 12, 2, 200, 1 );
r2 = Param( "Slow avg", 26, 2, 200, 1 );
r3 = Param( "Signal avg", 9, 2, 200, 1 );

Buy= Cross(MACD(r1, r2), Signal(r1,r2,r3));
Sell= Cross(Signal(r1,r2,r3),MACD(r1, r2));

PlotShapes(IIf(Sell==1, shapeDownArrow, shapeNone), colorRed, 0,High, Offset=-20);
PlotShapes(IIf(Buy==1, shapeUpArrow , shapeNone), colorGreen, 0,Low, Offset=-20);

_SECTION_END();


Now here is the output
 
#15
There are some Plugin required to run this code. I will PM u the link required to run this. :)

_SECTION_BEGIN("ABKPPivotAndPops");
/* TSKPPivot and PivotPop
A PP (Pivot Point) occurs when A900 crosses over/under AutoStop and is
confirmed when ScoreCard value be >= 5/<= -5.
When A900 crosses over AutoStop and ScoreCard confirms with a reading
>= 5, then a new PL (Pivot Low) has been made. The PL point is the bar
that has the lowest low price since the last PH.
When A900 crosses under AutoStop and ScoreCard confirms witha reading
<= -5, then a new PH (Pivot High) and been made. The PH point is the bar
that has the highest high price since the last PL.
One can NOT have two consecutive PHs OR two consecutive PLs.

PP Trend requires 3 Pivot Points. THe PP trend is either Up (PPTrend = 1) or
Down (PPTrend = -1). There are 2 basic Pivot Point patterns: PL-PH-PL or PH-PL-PH.

Note: if 'M/W tick allowance is NOT equal to 0 then you must have Tick Size correctly
specified to get the correct results.

Pivot Pop Up occurs when: Pivot Pop Down occurs when:
Pivot Low Pivot High
Pivot Low has occured within the last X bars Pivot High has occured within the last X bars
A900 >= AutoStop A900 <= AutoStop
Fast2 = 1 Fast2 = -1
ScoreCard >= 5 ScoreCard <= -5
Close > MeanSwingLine (optional) Close < MeanSwingLine (optional)
Close > Upper Bollinger Band Close < Lower Bollinger Band
Close > Open Close < Open

*/
SetBarsRequired(350, -0);

//user parameters
parmPlotScoreCard = ParamToggle("Plot KPScoreCard", "No|Yes", 1);
parmPlotA900AutoStop = ParamToggle("Plot A900/AutoStop", "No|Yes", 0);
parmA900Color = ParamColor("A900 Color", colorBlack);
parmA900Style = ParamStyle("A900 Style", styleNoLabel, maskAll);
parmAutoStopColor = ParamColor("AutoStop Color", colorCustom12);
parmAutoStopStyle = ParamStyle("AutoStop Style", styleLine, maskAll);
parmPPTextColor = ParamColor("PP Text color", colorBlack);
parmPPTrndColorUp = ParamColor("PP Trend Up color", colorGreen );
parmPPTrndColorDn = ParamColor("PP Trend Dwn color", colorRed );
parmPPTextOffSet = Param("PP OffSet", 0.90, 0.40, 1.5, 0.1);
parmTickMultipler = Param("M/W tick allowance", 0, 0, 10, 1);
parmA900AutoStopX = ParamToggle("Plot A900/AutoStop Cross", "No|Yes");
parmA900AutoStopColorX = ParamColor("A900/AutoStop Cross Color", colorBlack);
ParmSCThreshold = Param("ScoreCard Threshold", 5, 1, 9, 1);
parmVoice = ParamToggle("Pivot Voice", "No|Yes", 0);
parmPivotPop = ParamToggle("PivotPop", "No|Yes", 1);
parmBarCancel = Param("Bar Cancel", 4, 1, 20, 1);
parmFilter = ParamList("Filter", "None|KPMSL|KPWaterLevel|KPMedium", 0);
parmPlotFilter = ParamToggle("Plot Filter", "No|Yes", 0);
parmFilterColor = ParamColor("Filter Color", ColorRGB(127,255,212));
parmFilterStyle = ParamStyle("Filter Style", styleLine, maskAll);
parmBBPeriod = Param("Bollinger Band Period", 20, 2, 30, 1);
parmBBSD = Param("Bollinger Band width", 1.0, 0.5, 3.0, 0.5);
ParmPlotPPIndicators = ParamToggle("Plot Pivot Pop indicators", "No|Yes", 0);
parmBBColor = ParamColor("BBands Color", colorBlack);
parmBBStyle = ParamStyle("BBands Style", styleLine, maskAll);

ParmDebug = ParamToggle("Debug", "No|Yes", 0);

// constants
_N(PaneName = Name() + Interval(2)+ _SECTION_NAME());
_N(NewBarName = "NewBar" + PaneName);

//functions
function NewBarP()
{
PrevDT = StaticVarGet( NewBarName);
DT = LastValue(DateTime());
StaticVarSet( NewBarName,DT);
return DT != PrevDT;
}
function MRoundP(Number, Multiple )
{
if(Multiple == 0 )
{

xMultiple = 0.01; }
else
{
xMultiple = Multiple;
}
Divided = Number / xMultiple;
intDivided = int(Divided);
intDivided = intDivided + round(Divided - intDivided);
return intDivided * xMultiple;
}

//miscellaneous setups
ObjAB = CreateObject("Broker.Application");
ticker = objAB.Stocks(Name() );
if(ticker.TickSize == 0)
{
TickValue = 0.01; //set TickValue to a penney
}
else
{
TickValue = ticker.TickSize; // use Tick Size for this symbol
}
NewBarSignal = NewBarP();
// KP Indicators
KPA900 = E_TSKPA900(Close);
KPAutoStop = E_TSKPAUTOSTOP(High,Low,Close);
Ctmpl = E_TSKPCOLORTMPL(Open,High,Low,Close,Volume); //ScoreCard
KPScoreCard = 0;
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd0 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd1 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd2 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd3 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd4 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd5 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd6 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd7 > 0, 1, -1);
KPScoreCard = KPScoreCard + IIf(tskp_colortmplcnd8 > 0, 1, -1);

if(parmDebug == 1)
{
printf("a900: %0.6f% \nAutoStop: %0.6f%\nScoreCard: %0.0f%\n", KPA900, KPAutoStop, KPScoreCard);
}
if(parmPlotScoreCard == 1)
{
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g% (%0.4f%) {{VALUES}}", O, H, L, C, SelectedValue( C - Ref(C, -1)) ));
if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
{
ToolTip=StrFormat("Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.2f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
}
Color = IIf(KPScoreCard >= parmSCThreshold, colorBlue, IIf(KPScoreCard <= -parmSCThreshold, colorRed, colorYellow) );
Plot( C, "Close", Color , styleNoTitle | styleBar+styleThick );
}
//user want A900/AutoStop plotted
if(parmPlotA900AutoStop == 1)
{
Plot(KPA900, "A900", parmA900Color, parmA900Style);
Plot(KPAutoStop, "AutoStop", parmAutoStopColor, parmAutoStopStyle);
}
// find A900/AutoStop cross over/under with ScoreCard confirmation.
XOUp = (KPA900 > KPAutoStop) AND (KPScoreCard >= parmSCThreshold); // New Pivot Low
XODn = (KPA900 < KPAutoStop) AND (KPScoreCard <= -parmSCThreshold); // New Pivot High
if(parmDebug == 1)
{
printf(WriteIf(XOUp, "before= XOUp: True", "before= XOUp: False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
}
//remove duplicate signals
XOUp = ExRem(XOUp, XODn);
XODn = ExRem(XODn, XOUp);

if(parmDebug == 1)
{
printf(WriteIf(XOUp, "after= XOUp: True", "after= XOUp: False") + WriteIf(XODn, " XODn: True\n", " XODn: False\n") );
}
//find the current Pivot Points - PL and PH
//remember XOUp = 1 means a PL and XODn =1 means a PH
PLBars = IIf(XOUp, LowestSinceBars(XODn, L ,1), 0); //find the bar that produced the Lowest Low
PHBars = IIf(XODn, HighestSinceBars(XOUp, H, 1),0); //find the bar that produced the Highest High
//PLPrice = IIf(XOUp, Ref(L, -PLBars), 0);
//PHPrice = IIf(XODn, Ref(H, -PHBars),0);
PLPrice = Ref(L, -PLBars);
PHPrice = Ref(H, -PHBars);

//keep track of the previous Pivot Points
PrevPLBars = Ref(BarsSince(XOUp), -1) +1;
PrevPHBars = Ref(BarsSince(XODn), -1) +1;
PrevPLPrice = Ref(PLPrice, -prevPLBars);
PrevPHPrice = Ref(PHPrice, -PrevPHBars );
PivotsCloseEnough = TickValue * parmTickMultipler;
PLDifference = MroundP(PLPrice - PRevPLPrice, ticker.TickSize);
PHDifference = MroundP(PHPrice - PrevPHPrice, ticker.TickSize);
PPTrend = IIf(XOUp AND (PLDifference > PivotsCloseEnough) AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 1,
IIf(XOUp AND (PLDifference < - PivotsCloseEnough) AND PRevPHPrice > PrevPLPrice AND PrevPHPrice > PLPrice, -1,
IIf(XODn AND (PHDifference > PivotsCloseEnough) AND PrevPLPrice < PrevPHprice AND PrevPLPrice < PHPrice, 1,
IIf(XODn AND (PHDifference < -PivotsCloseEnough) AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -1, 0)) ));
/*
PPTrend = IIf(XOUp AND PLPrice > PRevPLPrice AND PrevPHPrice > PrevPLPrice AND PRevPHPrice > PLPrice, 1,
IIf(XOUp AND PLPrice < PRevPLPrice AND PRevPHPrice > PrevPLPrice AND PrevPHPrice > PLPrice, -1,
IIf(XODn AND PHPrice > PrevPHPrice AND PrevPLPrice < PrevPHprice AND PrevPLPrice < PHPrice, 1,
IIf(XODn AND PHPrice < PrevPHPrice AND PrevPLPrice < PrevPHPrice AND PrevPLPrice < PHPrice, -1, 0)) ));
*/
if(ParmDebug)
{
printf("Current PH Bar: %g% /Price: %g%\n", PHBars, PHPrice);
printf("Current PL Bar: %g% /Price: %g%\n", PLBars, PLPrice);
printf("Previous PH Bar: %g% /Price: %g%\n", PrevPHBars, PrevPHPrice);
printf("Previous PL Bar: %g% /Price: %g%\n", PrevPLBars, PrevPLPrice) ;
printf("PP Trend: %g%\n", PPTrend);
printf("PHPrice - PrevPHPrice: %g%\nPLPrice - PrevPLPrice: %g%\nPivotsCloseEnough: %g%\n", PHDifference, PLDifference, PivotsCloseEnough);
}
//PLot pivots as text
dist = parmPPTextOffSet * ATR(10);
//for( i = 0; i < BarCount -1; i++)
for( i = 0; i < BarCount ; i++)
{
if(XOUp[i ] == 1 ) //cross up -plot the Pivot Low
{
PlotText("PL \n"+PLPrice, i - PLBars, PLPrice - dist , parmPPTextColor, IIf(PPTrend == 1, parmPPTrndColorUp, IIf(PPTrend == -1, parmPPTrndColorDn, colorYellow) ));
}
if(XODn[i ] == 1 ) //cross down - plot the pivot high
{
PlotText("PH \n"+PHPrice, i - PHBars, PHPrice + dist, parmPPTextColor, IIf(PPTrend == 1, parmPPTrndColorUp, IIf(PPTrend == -1, parmPPTrndColorDn, colorYellow) ));
}
} //end For
// Plot A900/AutoStop cross over/under
if(parmA900AutoStopX == 1)
{
PlotShapes(IIf(Cross(KPA900, KPAutoStop), shapeUpTriangle, shapeNone), parmA900AutoStopColorX, 0, L, -20);
PlotShapes(IIf(Cross(KPAutoStop, KPA900), shapeDownTriangle, shapeNone), parmA900AutoStopColorX, 0, H , -20);
}
//PHLine = LineArray(BarCount - LastValue(PHBars) -3, LastValue(PHPrice), BarCount - LastValue(PHBars) +2, LastValue(PHPrice), 0);
//Plot(PHLine, "PH", colorBlack, styleLine);
//PLLine = LineArray(BarCount - LastValue(PLBars) -3, LastValue(PLPrice), BarCount - LastValue(PLBars) +2, LastValue(PLPrice), 0);
//Plot(PLLine, "PL", colorBlack, styleLine);
// identify M, lazy M, W and Lazy W formations
//voice
if(parmVoice ==1)
{
if(NewBarSignal)
{
if( LastValue(Ref(XODn, -1)) == 1 AND LastValue(Ref(PPTrend, -1)) == 1) Say(Interval(2) + " New pivot. Higher high.");
if( LastValue(Ref(XODn, -1)) == 1 AND LastValue(Ref(PPTrend, -1)) == -1) Say(Interval(2) + " New pivot. Lower high.");
if( LastValue(Ref(XODn, -1)) == 1 AND LastValue(Ref(PPTrend, -1)) == 0) Say(Interval(2) + " New pivot. M Top.");

if( LastValue(Ref(XOUp,-1)) ==1 AND LastValue(Ref(PPTrend, -1)) == 1) Say(Interval(2) + " New pivot. Higher low.");
if( LastValue(Ref(XOUp,-1)) ==1 AND LastValue(Ref(PPTrend, -1)) == -1) Say(Interval(2) + " New pivot. Lower low.");
if( LastValue(Ref(XOUp,-1)) ==1 AND LastValue(Ref(PPTrend, -1)) == 0) Say(Interval(2) + " New pivot. W bottom.");
}
}
//Pivot Pop code
if(parmPivotPop == 1)
{
//Kp indicators for Pivot Pop
dummy = E_TSKPFAST2(Open, High, Low, Close, Volume);
KPFast2 = IIf(tskp_fast2val1 > 0, 1, -1);
BarsSinceXOUp =BarsSince(XOUp);
BarsSinceXODn = BarsSince(XODn);
switch(parmFilter)
{
case "None":
PopFilter = True;
break;
case "KPMSL":
swVal = E_TSKPSWINGLINE(High, Low, Close);
KPMSL = tskp_swmean;
PopFilter = IIf(BarsSinceXOUp < BarsSinceXODn AND (C > KPMSL), True, IIf(BarsSinceXODn < BarsSinceXOUp AND (C < KPMSL), True, False));
break;
case "KPWaterLevel":
KPWaterlevel = E_TSKPWATERLEVEL(Open,High,Low,Close,Volume);
PopFilter = IIf(BarsSinceXOUp < BarsSinceXODn AND (C > KPWaterLevel), True, IIf(BarsSinceXODn < BarsSinceXOUp AND (C < KPWaterLevel), True, False));
break;
case "KPMedium":
dummy = E_TSKPMEDIUM(Close);
KPMediumUp = tskp_mediumup;
KPMediumDn = tskp_mediumdown;
KPMediumMA = tskp_mediumma;
KPMedium = KPMediumUp + KPMediumDn;
PopFilter = IIf(BarsSinceXOUp < BarsSinceXODn AND (KPMedium > KPMediumMA), True, IIf(BarsSinceXODn < BarsSinceXOUp AND (KPMedium < KPMediumMA), True, False));
break;
}
//calculations
UBB = BBandTop(C, parmBBPeriod, parmBBSD);
LBB = BBandBot(C, parmBBPeriod, parmBBSD);

if(parmDebug == 1)
{
printf("Fast2: %1.0f% \nUBB: %0.6f%\nLBB: %0.6f%\nC: %g%\n", KPFast2, UBB, LBB, C);
printf("Bars since Last XOUp: %1.0f%\nBars since last XODn: %1.0f%\n", BarsSinceXOUp, BarsSinceXODn );
printf("Bars since PPTrnd =1: %1.0f%\nBars since PPTrnd = -1: %1.0f%\n", BarsSince(PPTrend ==1), BarsSince(PPTrend == -1) );
printf("ParmFilter: " + parmFilter + "\nPopFilter: %g%\n", PopFilter);
switch(parmFilter)
{
case "None":
break;
case "KPMSL":
printf("KPMSL: %g%\n", KPMSL);
break;
case "KPWaterLevel":
printf("KPWaterlevel: %g%\n", KPWaterLevel);
break;
case "KPMedium":
printf("KPMedium: %g%\nKPMediumMA: %g%\n", KPMedium, KPMediumMA);
break;
}
}
PPopUp = (BarsSince(PPTrend == 1) <= parmBarCancel) AND (BarsSince(XOUp) <= parmBarCancel) AND (KPA900 >= KPAutoStop) AND(KPFast2 == 1) AND (KPScoreCard >= 5)
AND PopFilter
AND (C > UBB) AND (C > O) ;
PPopUp = IIf( PPopUp AND Sum(PPopUP, BarsSince(XOUp)+1) == 1, True, False ); //keep only the 1st signal
PPopDn = (BarsSince(PPTrend == -1) <= parmBarCancel) AND (BarsSince(XODn) <= parmBarCancel) AND (KPA900 <= KPAutoStop) AND(KPFast2 == -1) AND (KPScoreCard <= -5)
AND PopFilter
AND (C < LBB) AND (C < O) ;
PPopDn = IIf( PPopDn AND Sum(PPopDn, BarsSince(XODn) + 1) == 1, True, False); //keep only the first signal
if(parmDebug == 1)
{
printf(WriteIf(PPopUp,"PPopUp: True", "PPopUp: False") + WriteIf(PPopDn, " PPopDn: True\n", " PPopDn: False\n") );
printf("PPopUp sum: %1.0f% \nPPopDn sum: %1.0f%", Sum(PPopUP, BarsSince(XOUp)) , Sum(PPopDn, BarsSince(XODn)) );
}
// Plots
PlotShapes(IIf(PPopUp, shapeUpTriangle, shapeNone), colorLightBlue, 0, L, -30);
PlotShapes(IIf(PPopDn, shapeDownTriangle, shapeNone), colorRed, 0, H, -30);

if(ParmPlotPPIndicators == 1) //plot the Pivot Pop Indicators
{
Plot(UBB, "Upper BB", parmBBColor, parmBBStyle);
Plot(LBB, "Lower BB", parmBBColor, parmBBStyle);
if(parmPlotA900AutoStop == 1)
{
Plot(KPA900, "A900", parmA900Color, parmA900Style);
Plot(KPAutoStop, "AutoStop", parmAutoStopColor, parmAutoStopStyle);
}
Plot( 0.5, "Fast2", IIf(tskp_fast2val1 > 0, parmPPTrndColorUp, parmPPTrndColorDn) , styleArea | styleNoLabel | styleOwnScale , 0, 10);
} //endif parmPlotPPIndicators
if(parmPlotFilter == 1)
{
switch(parmFilter)
{
case "None":
break;
case "KPMSL":
Plot(KPMSL, "KPMSL", parmFilterColor, parmFilterStyle);
break;
case "KPWaterLevel":
Plot(KPWaterLevel, "KPWaterLevel", parmFilterColor, parmFilterStyle);
break;
case "KPMedium":
// HMM how to print Medium on a price chart
break;
}
} //endif parmPlotFilter
} // end if parmPivotPop
_SECTION_END();

_SECTION_BEGIN("ABKPMOMODots");
/* ABKPMoMo
If TRIGGOSC is greater than 0 and SHORTERMTRADEBIAS is greater than 0 and
MEDIUM is greater than Medium MA, give me a dot underneath the current price
bar. If TRIGGOSC is less than 0 and SHORTERMTRADEBIAS is less than 0 and
MEDIUM is less than Medium MA, give me a dot above the current price bar.


*/
parmMoMoUpColor = ParamColor("MoMo up color", colorWhite);
parmMoMoDnColor = ParamColor("MoMo dn color", colorDarkRed);
parmDetrendPeriod = Param("Detrend period", 8, 1, 20, 1);
parmPlotRibbon = ParamToggle("Plot as ribbon", "No|Yes", 0);
parmRibbonSize = Param("Ribbon Size", 1, 0.5, 10, 0.5);
parmDebug = ParamToggle("Debug", "No|Yes", 0);
SetBarsRequired(350, -1);

//KP indicators
sw = E_TSKPUPSELL(Open,High,Low,Close,Volume);
KPTriggerLine = tskp_triggerline;
dummy = E_TSKPSHORTTERMTRADEBIAS(High,Low,Close);
KPSTTB = tskp_sttb1;
dummya = E_TSKPMEDIUM(Close);
KPMediumUp = tskp_mediumup;
KPMediumDn = tskp_mediumdown;
KPMediumMA = tskp_mediumma;
if(parmDebug == 1)
{
printf("KBTriggerLine: %g%\nKPSTTB: %g%\nKPMediumUp: %g%\nKPMediumDn: %g%\nKPMediumMa: %g%\n", KPTriggerLine, KPSTTB, KPMediumUp, KPMediumDn, KPMediumMa);
}
// calculations
//Detrend = KPTriggerLine - MA(KPTriggerLine, parmDetrendPeriod); //Detrend KPTriggerLine
Detrend = KPTriggerLine - Ref( MA( KPTriggerLine, parmDetrendPeriod ), -( 1 + parmDetrendPeriod/2 ) );
MedianPrice = (H + L) /2;
AvgValue = Ref(MA(C, 2), -1);
UpSignal = Detrend >= 0 AND KPSTTB >= 0 AND (KPMediumUp > KPMediumMa OR KPMediumDn > KPMediumMa) AND MedianPrice > AvgValue;
DnSignal = Detrend < 0 AND KPSTTB < 0 AND (KPMediumUp < KPMediumMA OR KPMediumDn < KPMediumMA) AND MedianPrice < AvgValue;
if(parmDebug == 1)
{
printf("Detrend: %g%\nMedian Price: %g%\nAvgValue: %g%\n", Detrend, MedianPrice, AvgValue);
printf(WriteIf(UpSignal, "UpSignal: True", "UpSignal: False") + WriteIf(DnSignal, " DnSignal: True\n", " DnSignal: False\n") );

}
//plots
if(parmPlotRibbon == 0)
{
PlotShapes(IIf(UpSignal, shapeSmallCircle, shapeNone), parmMoMoUpColor, 0, L, -10);
PlotShapes(IIf(DnSignal, shapeSmallCircle, shapeNone), parmMoMoDnColor, 0, H, 10);
}
else
{
Plot(parmRibbonSize, "", IIf(UpSignal, parmMoMoUpColor, IIf(DnSignal, parmMoMoDnColor, Null )), styleArea | styleNoLabel | styleOwnScale , 0, 10);

}
_SECTION_END();


//Plot( JurikJMA( Close, 8, 0), "", colorGreen, styleThick );
Plot( JurikJMA( Close, 15, 0), "", colorWhite, styleThick );
Col_j = IIf(JurikJMA( Close, 8, 0) > JurikJMA( Close, 15, 0), colorGreen,colorDarkRed);
PlotOHLC (JurikJMA( Close, 8, 0), IIf(JurikJMA( Close, 8, 0) > JurikJMA( Close, 15, 0), JurikJMA( Close, 8, 0),JurikJMA( Close, 15, 0)), IIf(JurikJMA( Close, 8, 0) < JurikJMA( Close, 15, 0),JurikJMA( Close, 8, 0),JurikJMA( Close, 15, 0)),JurikJMA( Close, 15, 0), "ma-15", col_j,styleCloud+styleNoLabel);
Plot(EMA(Close,34),"",colorBlue, styleThick+styleNoLabel);
Col_e = IIf(EMA(Close,20) > EMA(Close,34), colorAqua, colorOrange);
PlotOHLC (EMA(Close,34), IIf(EMA(Close,34) > EMA(Close,20), EMA(Close,34), EMA(Close,20)), IIf(EMA(Close,34) < EMA(Close,20), EMA(Close,34), EMA(Close,20)),EMA(Close,34),"",col_e, styleCloud);


_SECTION_BEGIN("Fibo for all bars");

TimeFrameSet( in15Minute*2 );
DH=Ref(H,-1);
DL=Ref(L,-1);
DC=Ref(C,-1);


pd = (O+ DH+ DL + DC )/4;
sd1 = (2*pd)-DH;
sd2 = pd -(DH - DL);
sd3 = Sd1 - (DH-DL);
rd1 = (2*pd)-DL;
rd2 = pd +(DH -DL);
rd3 = rd1 +(DH-DL);



//Plot (pd,"Pivot",colorBlue,styleDots);
//Plot (rd1," R1 ",35,styleDots);
//Plot (rd2," R2 ",35,styleDots);
//Plot (rd3," R3 ",35,styleDots);

//Plot (sd1," S1 ",4,styleDots);
//Plot (Sd2," S2 ",4,styleDots);
//Plot (Sd3," S3 ",4,8+16);
/*
style = IIf(ParamList("Chart style", "styleCandle|styleBar")=="styleCandle",64,128+4);
Plot (C,Date ()+" close",1,style); //ENABLE THIS TO HAVE CANDLES AS WELL
*/
TimeFrameRestore();


Title = EncodeColor(colorWhite)+ "LINKON'S PIVOT TRADING SYSTEM" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "
//+ WriteIf(Col_action==colorGreen, EncodeColor(colorGreen)+"stay LONG","")+ WriteIf(Col_action==colorRed, EncodeColor(colorRed)+"stay SHORT","")+ WriteIf(Col_action==colorBlack, EncodeColor(colorYellow)+"No Trend","")+"\n"
+ "Vol= "+ WriteVal(V) +WriteIf ( V > MA(V,26) ,EncodeColor(colorGreen)+" UP "+ (V/MA(V,26))*100 + " %", EncodeColor(colorRed)+" DOWN "+ (V/MA(V,26))*100 + " %")
+ EncodeColor(colorGreen)+ "\n R3 : "+ EncodeColor(colorWhite)+RD3
+ EncodeColor(colorGreen)+ "\n R2 : "+ EncodeColor(colorWhite)+RD2
+ EncodeColor(colorGreen)+ "\n R1 : "+ EncodeColor(colorWhite)+RD1+ EncodeColor(colorGreen)+ "` Hi: "+ EncodeColor(colorWhite)+H
+ EncodeColor(colorBlue)+ "\n Pivot : "+ EncodeColor(colorWhite)+pd + EncodeColor(colorYellow)+ "` Op: "+ EncodeColor(colorWhite)+O+ EncodeColor(colorAqua)+ "Cl: "+ EncodeColor(colorBrightGreen)+C
+ EncodeColor(colorRed)+ "\n S1 : "+ EncodeColor(colorWhite)+SD1+ EncodeColor(colorRed)+ "` Lo: "+ EncodeColor(colorWhite)+L
+ EncodeColor(colorRed)+ "\n S2 : "+ EncodeColor(colorWhite)+SD2
+ EncodeColor(colorRed)+ "\n S3 : "+ EncodeColor(colorWhite)+SD3
;

_SECTION_END();

here is the one
 

deadbrain

Well-Known Member
#16
You should continue the thread.......DM
 
#17
AFL for Bolinger Band along with Price chart​

Here is the code

**************************************************

_SECTION_BEGIN("BB price chart");
SetChartOptions(0,chartShowArrows|chartShowDates);
Plot( Close, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

P = ParamField("Price field",-1);
Periods = Param("Periods", 20, 2, 300, 1 );
Width = Param("Width", 2, 0, 10, 0.05 );
Color = ParamColor("Color", colorCycle );
Style = ParamStyle("Style");


Plot( BBandTop( P, Periods, Width ), "BBTop" + _PARAM_VALUES(), Color, Style );
Plot( BBandBot( P, Periods, Width ), "BBBot" + _PARAM_VALUES(), Color, Style );

_SECTION_END();



**************************************************

Here is the screen sort
 
#19
Thank you for posting here. You see what I found very few are here to learn something. Most are here to have a good so called AFL and wan a make profit. I started this thread with the true intention to help other new comers on AFL. Because when I started learning AFL I was no where. There are very very rare free metrical available to learn AFL. But where is the crowd? Crowd is behind the quick copy paste mechanism.
If i start posting some AFL with long long lines of code. Many will thank me and will start using back testing and all the stuffs blindly with out knowing what they are!!! It is very true. So being sad I stopped posting here.
I have many good small size codes available to undertsand the basic. You know once you learn it, you dont need to beg others for "Sir sir please give me your AFL, sir made this AFL for me etc etc.". You know what I mean. We must learn and do it myself, that is my policy.
How ever thank you for your post. May be I will start posting here again.



D.Mukherjee
Iam newly bought amibroker. ur thread is very helpful to new like me. Pl continue sir
 

Similar threads