Thursday 12 December 2013

Amibroker AFL for Intraday with Buy Sell -2

Today I am posting another AFL that can be used both for Intraday and on EOD basis. I found this in internet and I am not the creator of this AFL. This AFL seems to have an Indonesian origin, which I am not sure.Anyway the interesting thing is it can be used for trading.

The background color can be changed using the properties window. It also has a magnified market view for viewing convenience.
.
I request the readers to do some back-testing, before they arrive at decision to deploy this tool in intraday trading. I would like to suggest the use of other indicators for confirmation.

////////////////////////////////// the code begins below this line ///////////////////////////////////


_SECTION_BEGIN("MA Diff");
T=26;
KMA=((C-MA(C,T))/MA(C,T))*100;
Graph0=KMA;
Graph0Style=2+4;
Graph0BarColor=IIf(KMA>0,5,4);
GraphXSpace=5;

_SECTION_END();

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();_SECTION_BEGIN("Price");



_SECTION_BEGIN("SuperTrend");
SetBarsRequired(100000,0);
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);
SetChartBkColor(ParamColor("bkcolor",ColorRGB(0,0, 0)));
GfxSetBkMode(0);
GfxSetOverlayMode(1);
SetBarFillColor(IIf(C>O,ParamColor("Candle UP Color", colorGreen),IIf(C<=O,ParamColor("Candle Down Color", colorRed),colorLightGrey)));
Plot(C,"\nPrice",IIf(C>O,ParamColor("Wick UP Color", colorDarkGreen),IIf(C<=O,ParamColor("Wick Down Color", colorDarkRed),colorLightGrey)),64,0,0,0,0);

SetTradeDelays(1,1,1,1);


_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

Factor=Param("Factor",2,1,10,0.1);
Pd=Param("ATR Periods",11,1,100,1);
Up=(H+L)/2+(Factor*ATR(Pd));
Dn=(H+L)/2-(Factor*ATR(Pd));
iATR=ATR(Pd);
TrendUp=TrendDown=Null;
trend[0]=1;
changeOfTrend=0;
flag=flagh=0;

for (i = 1; i <BarCount-1; i++) {
      TrendUp[i] = Null;
      TrendDown[i] = Null;
     
      trend[i]=1;
   
      
      if (Close[i]>Up[i-1]) {
         trend[i]=1;
         if (trend[i-1] == -1) changeOfTrend = 1;
         
      }
      else if (Close[i]<Dn[i-1]) {
         trend[i]=-1;
         if (trend[i-1] == 1) changeOfTrend = 1;
      }
      else if (trend[i-1]==1) {
         trend[i]=1;
         changeOfTrend = 0;     
      }
      else if (trend[i-1]==-1) {
         trend[i]=-1;
         changeOfTrend = 0;
      }

      if (trend[i]<0 && trend[i-1]>0) {
         flag=1;
      }
      else {
         flag=0;
      }
      
      if (trend[i]>0 && trend[i-1]<0) {
         flagh=1;
      }
      else {
         flagh=0;
      }
      
      if (trend[i]>0 && Dn[i]<Dn[i-1]){
         Dn[i]=Dn[i-1];
        }
      
      if (trend[i]<0 && Up[i]>Up[i-1])
        { Up[i]=Up[i-1];
        }
      
      if (flag==1)
       {  Up[i]=(H[i]+L[i])/2+(Factor*iATR[i]);;
        }
      if (flagh==1)
        { Dn[i]=(H[i]+L[i])/2-(Factor*iATR[i]);;
         }
      if (trend[i]==1) {
         TrendUp[i]=Dn[i];
         if (changeOfTrend == 1) {
            TrendUp[i-1] = TrendDown[i-1];
            changeOfTrend = 0;
         }
      }
      else if (trend[i]==-1) {
         TrendDown[i]=Up[i];
         if (changeOfTrend == 1) {
            TrendDown[i-1] = TrendUp[i-1];
            changeOfTrend = 0;
         }
      }
   }

Plot(TrendUp,"Trend",colorGreen);
Plot(TrendDown,"Down",colorRed);

Buy = trend==1;
Sell=trend==-1;

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=Sell;
Cover=Buy;


BuyPrice=ValueWhen(Buy,C);
SellPrice=ValueWhen(Sell,C);
ShortPrice=ValueWhen(Short,C);
CoverPrice=ValueWhen(Cover,C);


Title = EncodeColor(colorWhite)+ "Super Trend " + " - " +  Name() + " - " + EncodeColor(colorBrightGreen)+ Interval(2) + EncodeColor(colorWhite) +
 "  - " + Date() +" - "+"\n" +EncodeColor(colorBrightGreen) +"Op-"+O+"  "+"Hi-"+H+"  "+"Lo-"+L+"  "+
"Cl-"+C+"  "+ "Vol= "+ WriteVal(V)+"\n"+
EncodeColor(colorLime)+
WriteIf (Buy , " GO LONG / Reverse Signal at "+C+"  ","")+
WriteIf (Sell , " EXIT LONG / Reverse Signal at "+C+"  ","")+"\n"+EncodeColor(colorYellow)+
WriteIf(Sell , "Total Profit/Loss for the Last Trade Rs."+(C-BuyPrice)+"","")+
WriteIf(Buy  , "Total Profit/Loss for the Last trade Rs."+(SellPrice-C)+"","");

PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                    
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Short, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                    
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);

TrendSL=IIf(trend==1,TrendUp,TrendDown);

for(i=BarCount-1;i>1;i--)
{
if(Buy[i] == 1)
{
entry = C[i];
sig = "BUY";
sl = TrendSL[i];
tar1 = entry + (entry * .0050);
tar2 = entry + (entry * .0092);
tar3 = entry + (entry * .0179);
 
bars = i;
i = 0;
}
if(Sell[i] == 1)
{
sig = "SELL";
entry = C[i];
sl = TrendSL[i];
tar1 = entry - (entry * .0050);
tar2 = entry - (entry * .0112);
tar3 = entry - (entry * .0212);
 
 
bars = i;
i = 0;
}
}
Offset = 20;
Clr = IIf(sig == "BUY", colorLime, colorRed);
ssl = IIf(bars == BarCount-1, TrendSL[BarCount-1], Ref(TrendSL, -1));
sl = ssl[BarCount-1];
 

Plot(LineArray(bars-Offset, tar1, BarCount, tar1,1), "", Clr, styleLine|styleDots, Null, Null, Offset);
Plot(LineArray(bars-Offset, tar2, BarCount, tar2,1), "", Clr, styleLine|styleDots, Null, Null, Offset);
Plot(LineArray(bars-Offset, tar3, BarCount, tar3,1), "", Clr, styleLine|styleDots, Null, Null, Offset);

//Plot(LineArray(bars-Offset, sl, BarCount, sl,1), "", colorDarkRed, styleLine|styleLine, Null, Null, Offset);
//Plot(LineArray(bars-Offset, entry, BarCount, entry,1), "", colorGreen, styleLine|styleLine, Null, Null, Offset);

/*
for (i=bars; i <BarCount;i++)
{
PlotText(""+sig+"@"+entry, BarCount-5,entry,Null,colorBlue);
PlotText("T1@"+tar1,BarCount-5,tar1,Null,Clr);PlotText("T2@"+tar2,BarCount-5,tar2,Null,Clr);PlotText ("T3@"+tar3,BarCount-5,tar3,Null,Clr);
 
}*/
 
messageboard = ParamToggle("Message Board","Show|Hide",1);
if (messageboard == 1 )
{
GfxSelectFont( "Tahoma", 13, 100 );
GfxSetBkMode( 1 );
GfxSetTextColor( colorWhite );
 
if ( sig =="BUY")
{
GfxSelectSolidBrush( colorBlue ); // this is the box background color
}
else
{
GfxSelectSolidBrush( colorRed ); // this is the box background color
}
pxHeight = Status( "pxchartheight" ) ;
xx = Status( "pxchartwidth");
Left = 1100;
width = 310;
x = 10;
x2 = 290;
 
y = pxHeight;
 
GfxSelectPen( colorGreen, 1); // broader color
GfxRoundRect( x, y - 98, x2, y , 7, 7 ) ;
GfxTextOut( ( "Supertrend Trading System"),13,y-100);
GfxTextOut( (" "),27,y-100);
GfxTextOut( ("Last " + sig + " Signal came " + (BarCount-bars-1) * Interval()/60 + " mins ago"), 13, y-80) ; // The text format location
GfxTextOut( ("" + WriteIf(sig =="BUY",sig + " @ ",sig + " @") + " : " + entry), 13, y-60);
GfxTextOut( ("Trailing SL : " + Ref(TrendSL,-1) + " (" + WriteVal(IIf(sig == "SELL",entry-sl,sl-entry), 2.2) + ")"), 13, y-40);
/*GfxTextOut( ("TGT:1 : " + tar1), 13, y -80);
GfxTextOut( ("TGT:2 : " + tar2), 13,y-60);
GfxTextOut( ("TGT:3 : " + tar3), 13,y-40);*/
GfxTextOut( ("Current P/L : " + WriteVal(IIf(sig == "BUY",(C-entry),(entry-C)),2.2)), 13, y-22);;


 //Magfied Market Price
FS=Param("Font Size",30,11,100,1);
GfxSelectFont("Times New Roman", FS, 700, True );
GfxSetBkMode( colorWhite );
GfxSetTextColor( ParamColor("Color",colorGreen) );
Hor=Param("Horizontal Position",940,1,1200,1);
Ver=Param("Vertical Position",12,1,830,1);
GfxTextOut(""+C, Hor , Ver );
YC=TimeFrameGetPrice("C",inDaily,-1);
DD=Prec(C-YC,2);
xx=Prec((DD/YC)*100,2);
GfxSelectFont("Times New Roman", 11, 700, True );
GfxSetBkMode( colorBlack );
GfxSetTextColor(ParamColor("Color",colorYellow) );
GfxTextOut(""+DD+"  ("+xx+"%)", Hor , Ver+45 );
 
}

_SECTION_END();

_SECTION_BEGIN("thiru-optimum-moving");
price = ParamField("field");
n = Param("periods",34);
SA=MA(Price,n);
v1=(StDev(Price,n))^2;

Ca=Null;
Ca[n]=sa[n];

for(i=n+1; i<BarCount;i++){
v2[i]=(CA[i-1]-SA[i])^2;
k[i]=IIf(V2[i]<V1[i],0,1-V1[i]/V2[i]);
CA[i]=CA[i-1]+K[i]*(SA[i-1]-CA[i-1]);
}
Plot(Ca,"OMA("+WriteVal(n,1.0)+")",colorBlue,styleThick);
Col = IIf(BarsSince(Ref(Ca,-1)>Ca)>BarsSince(Ref(Ca,-1)<Ca),colorBrightGreen,colorRed);
Plot(C,"",Col,styleCandle );

_SECTION_END();

////////////////////////////////////////////////////////////////////////////////////
_SECTION_BEGIN( "Chart Settings" );
SetChartOptions( 0, chartShowArrows | chartShowDates  );
//SetChartBkColor( ParamColor( "Outer Panel", colorDarkGrey ) );
//SetChartBkGradientFill( ParamColor( "Upper Chart", colorWhite ), ParamColor( "Lower Chart", colorWhite ) );
_SECTION_END();
Kisa = Param( "KISA GÃœN", 12, 0.1, 500, 0.1 );
Uzun = Param( "UZUN GÃœN", 43, 0.1, 100, 0.1 );
Tetik = Param( "TETI.K GÃœN", 21, 0.1, 50, 0.1 );
_SECTION_BEGIN( "Periodlar" );
function KisaPeriodTopla( Kisa )
{
    ka = Kisa;

    for ( i = 1; i < Kisa; i++ )
    {
        ka = ka + i;
    }

    return ka;
}

function UzunPeriodTopla( Uzun )
{
    au = Uzun;

    for ( iu = 0; iu < Uzun; iu++ )
    {
        au = au + iu;
    }

    return au;
}

function TetikPeriodTopla( Tetik )
{
    a = Tetik;

    for ( i = 0; i < Tetik; i++ )
    {
        a = a + i;
    }

    return a;
}

_SECTION_END();
_SECTION_BEGIN( " Gün Toplamlar?" );
function KisaGunTopla( Kisa )
{
    a = Kisa;
    kd = a * C;

    for ( i = 0;i < Kisa;i++ )
    {
        b = Ref( C, -i );

        if ( a > 0 )
            a--;

        kd = kd + ( a * b );
    }

    return kd;
}

function UzunGunTopla( Uzun )
{
    au = Uzun;
    ku = au * C;

    for ( iu = 0;iu < Uzun;iu++ )
    {
        bu = Ref( C, -iu );

        if ( au > 0 )
            au--;

        ku = ku + ( au * bu );
    }

    return ku;
}

Period12Toplam = KisaPeriodTopla( Kisa );
Day12Toplam = KisaGunTopla( Kisa );
LWMA12 = Day12Toplam / Period12Toplam;
Period43Toplam = UzunPeriodTopla( Uzun );
Day43Toplam = UzunGunTopla( Uzun );
LWMA43 = Day43Toplam / Period43Toplam;
_SECTION_END();

_SECTION_BEGIN( " TSR HESAPLANMASI" );
function XDAY( Tetik )
{
    X = ( ( 2 * LWMA12 ) - LWMA43 );
    aX = Tetik;
    kX = AX * X;

    for ( iX = 0;iX < Tetik;iX++ )
    {
        bX = Ref( X, -iX );

        if ( aX > 0 )
            aX--;

        kX = kX + ( aX * bX );
    }

    return kX;
}

XDayToplam = XDAY( Tetik );
XPeriodToplam = TetikPeriodTopla( Tetik );
TSR = ( XDayToplam / XPeriodToplam );
_SECTION_END();
_SECTION_BEGIN( " EKRANA BASMA I.S,LEMI." );
Plot( C, "Kapanis", colorWhite, styleCandle );
tsrcolor = IIf( TSR > Ref( TSR, -1 ), colorLime, colorRed );
Plot( TSR, "TSR", tsrcolor, styleDots + styleLine );
_SECTION_END();

_SECTION_BEGIN( "EXPLORATION" );
//AL=TSR>Ref(TSR,-1);
//SAT=Ref(TSR,-1)>TSR;
AL = Cross( C, TSR );
SAT = Cross( TSR, C );
AL_status = WriteIf( AL, "Al?s, Yap", " " );
SAT_status = WriteIf( SAT, "Sat?s, Yap", " " );
AL_Col = IIf( AL, colorDarkGreen , colorWhite );
SAT_Col = IIf( SAT, colorRed, colorWhite );
Filter = AL OR SAT;
AddColumn( C, "KAPANIS,", 1.2, IIf( C > Ref( C, -1 ), colorBlue, colorRed ) );
AddTextColumn( AL_status, "TSR ALIS,", 1.2, colorWhite, AL_col );
AddTextColumn( SAT_status, "TSR SATIS,", 1.2, colorWhite, SAT_col );
_SECTION_END();
////////////////////////////////////////////////////////////////////////////////////

_SECTION_END();
_SECTION_BEGIN(" Day Trading System");
icol = IIf ( MA (Close,25) > Ref (MA (Close,25),-1),colorGreen,colorRed);
Plot( MA( High, 25 ),"", icol, styleThick);
Plot( MA( Low, 25 ), "",icol, styleThick);
_SECTION_END();
_SECTION_BEGIN("Magnified Market Price");
 
FS=Param("Font Size",30,11,100,1);
GfxSelectFont("Times New Roman", FS, 700, True );
GfxSetBkMode( colorWhite );
GfxSetTextColor( ParamColor("Color",colorLightOrange) );
Hor=Param("Horizontal Position",373,1,1200,1);
Ver=Param("Vertical Position",45,1,830,1);
GfxTextOut(""+C, Hor , Ver );
YC=TimeFrameGetPrice("C",inDaily,-1);
DD=Prec(C-YC,2);
xx=Prec((DD/YC)*100,2);
GfxSelectFont("Times New Roman", 11, 700, True );
GfxSetBkMode( colorWhite );
GfxSetTextColor(ParamColor("Color",colorBlack) );
GfxTextOut(""+DD+"  ("+xx+"%)", Hor , Ver+45 );

_SECTION_END();

_SECTION_BEGIN("trend");
uptrend=PDI(20)>MDI(10)AND Signal(29)<MACD(13);
downtrend=MDI(10)>PDI(20)AND Signal(29)>MACD(13);
Plot( 1, /* defines the height of the ribbon in percent of pane width */"ribbon",
IIf( uptrend, colorGreen, IIf( downtrend, colorRed, 0 )), /* choose color */
styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );
_SECTION_END();

////////////////////////////////////////////end of code//////////////////////////////////

Best of luck

1 comment:

  1. Thank you very much.You are sharing fantastic news,Great collection of blogs for anyone looking to get into investing! Thanks for sharing,Great Work keep it up.
    Free Trial

    ReplyDelete