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

Market Profile with Volume and Camarilla Pivots for Amibroker (AFL)
bower
almost 15 years ago
Amibroker (AFL)

Rating:
5 / 5 (Votes 1)
Tags:
trading system, amibroker, exploration, pivots

More Complete Market Profile included Camarilla Pivots plus volume

Screenshots

Similar Indicators / Formulas

Khichadi_R50_R3212.afl
Submitted by kartmer555 over 14 years ago
PRA TTS v1.1
Submitted by jaipal7786 almost 12 years ago
PRA TTS
Submitted by jaipal7786 almost 12 years ago
HOLY GRAIL
Submitted by prasadbrao over 12 years ago
KNP analysis 1
Submitted by kushal over 13 years ago
PIVOT POINT WITH VPA1 FOR AMIBROKER
Submitted by METHUN about 14 years ago

Indicator / Formula

Copy & Paste Friendly
_SECTION_BEGIN("MarketProfile+OR+FPSR bold_POC+IB");
//------------------------------------------------------------------------------
//
//  Formula Name:    Market Profile 
//
// Use with 5/15min chart
// Originial - From AFL library
// Edited by - Milind

//Market Profile


Den = Param("Density", 1, 0.25, 100, 0.25); // Resolution in terms of $
IBBars = Param("Initial Balance Bars", 2, 0, 5, 1);
EnIB = Param("Show Initial Balance", 1, 0, 1, 1);
EnMP = Param("Show Market Profile", 1, 0, 2, 1);

PlotOHLC(O,H,L,C,"Price",IIf(C>O,colorGreen,colorRed),styleCandle);

BarsInDay = BarsSince(Day() != Ref(Day(), -1));
Bot = TimeFrameGetPrice("L", inDaily, 0);
Top = TimeFrameGetPrice("H", inDaily, 0);
Vol = TimeFrameGetPrice("V", inDaily, 0);
POC = H - H;
VAL = H - H;
VAH = H - H;
CurTop = HHV(H,BarsInDay+1);
Curbot = LLV(L,BarsInDay+1);
Range = Highest(Top-Bot);
TodayRange = Top - Bot;

AveRange = Sum(Top-Bot,30)/30;
LAveRange = AveRange[BarCount-1];
if (LAveRange < 1) {Den = 0.05;}
else if (LAveRange < 10) {Den = 0.25;}
else if (LAveRange < 20) {Den = 0.5;}
else if (LAveRange < 100) {Den = 1;}
else if (LAveRange < 500) {Den = 5;}
else {Den = 1;}

// Initialization
baseX = 0;
baseY = floor(Bot[0]/Den)*Den;
relTodayRange = 0;
firstVisBar = Status("firstvisiblebar");
lastVisBar = Status("lastvisiblebar");

D=.000125;

for (j=0; j <= 100; j++) {
  x[j] = 0;
}

i0 = 0;
i1 = 0;
for (i=0; i<BarCount; i++) {
  if (BarsInDay[i] == 0 AND i < firstVisBar) {
    i0 = i;
  }
  if (BarsInDay[i] == 0 AND i >= lastVisBar) {
    i1 = i;
  }
}

i1 = BarCount-1;
for (i=i0; i<=i1; i++) {
  if (BarsInDay[i] == 0) {
    baseX = i;
    baseY = floor(Bot[i]/Den)*Den;
    maxY = floor(Top[i]/Den)*Den;
    relTodayRange = (maxY-baseY)/Den;

    for (j=0; j <= relTodayRange; j++) {
      x[j] = 0;
    }
  }

  if (EnMP == 2) {
    for (j=0; j<= relTodayRange; j++) {
      if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
	PlotText(StrExtract("A,B,C,D,E,F,G,H,I,J,K,L,M,N",
                 BarsInDay[i]), baseX+x[j], baseY+j*Den, colorBlack);
        x[j]++;
      }
    }
  }
  else if (EnMP == 1) {
    for (j=0; j<= relTodayRange; j++) {
      if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) {
	line = LineArray(baseX, baseY+j*Den, baseX+x[j]+1, baseY+j*Den);
	Plot(line,"",ParamColor("Color", colorCustom13), styleLine+styleDots);
        x[j]++;
      }
    }
  }  

  // Draw Initial Balance after 11am bar is complete
  if (BarsInDay[i] == IBBars+1 AND EnIB == 1) {
    Line1 = LineArray(i-2, curtop[i-1],i+10, curtop[i-1],0,True);
    Line1a=Line1+d*Line1;
    Line1b=Line1-d*Line1;
    Plot(Line1,"",colorBlue,styleDots+styleThick);
    Plot(Line1a,"",colorBlue,styleDots+styleThick|styleNoLabel);
    Plot(Line1b,"",colorBlue,styleDots+styleThick|styleNoLabel);


    Line1 = LineArray(i-2, curbot[i-1],i+10, curbot[i-1],0,True);
    Line1a=Line1+d*Line1;
    Line1b=Line1-d*Line1;
    Plot(Line1,"",colorBlue,styleDots+styleThick);
    Plot(Line1a,"",colorBlue,styleDots+styleThick|styleNoLabel);
    Plot(Line1b,"",colorBlue,styleDots+styleThick|styleNoLabel);
  }

  // Examine x[j]
  if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) {
    maxXj = 0;
    for (j=0; j<= relTodayRange; j++) {
      if (maxXj < x[j]) {maxXj = x[j]; maxj = j;}
    }
    for (k=i-BarsInDay[i];k<=i;k++) {
      POC[k] = baseY+maxXj*Den;
    }
    Line1 = LineArray(baseX, baseY+maxXj*Den, i, baseY+maxXj*Den,0,True);
    Line1a=Line1+d*Line1;
    Line1b=Line1-d*Line1;
    Plot(Line1,"",colorWhite,styleDots+styleThick);
    Plot(Line1a,"",colorWhite,styleDots+styleThick|styleNoLabel);
    Plot(Line1b,"",colorWhite,styleDots+styleThick|styleNoLabel);

  }
}

//Plot(POC,"POC",colorWhite,styleDots);
_SECTION_END();

_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 | styleHidden | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

_SECTION_BEGIN("ORBO 10mt");
priceTitle=EncodeColor(colorYellow)+ StrFormat("    {{NAME}}  --  {{INTERVAL}}" ) + "\n"+ EncodeColor(colorCustom11)+
"Date =  " + Date() ;
ToolTip=StrFormat("  Close = %g (%.1f%%)",C,SelectedValue( ROC( C, 1 ) ));
Title ="DHIRAJ" + priceTitle + "\n" + EncodeColor(colorWhite) + ToolTip; 


breakoutime = 100500;
afterbreakout0 = Cross(TimeNum(),100500);
afterbreakout1 = TimeNum()>=100500;
NewDay = Day()!= Ref(Day(), -1);
highestoftheday = HighestSince(newday,H,1);
Lowestoftheday =LowestSince(newday,L,1);
ORBHigh = ValueWhen(afterbreakout0,highestoftheday,1);
ORBLow = ValueWhen(afterbreakout0,lowestoftheday,1);
buycandidate =Cross(C,orblow) AND afterbreakout1;
sellcandidate = Cross(orbhigh,C) AND afterbreakout1 ;

BuyCond2 = Cross(C, WMA((L+C+H)/3,9)+0.01);/*((MidMA, LongMA);*/
SellCond4=Cross( WMA((L+C+H)/3,9)+0.01,C); 
Buy1 = BuyCond2;
Sell1 = SellCond4 ;
entryprice=WMA((L+C+H)/3,9)+0.01;
ENTRYSELL=WMA((L+C+H)/3,9)-0.01;

Buy= Cross(C,orbhigh) AND afterbreakout1;
Sell = Cross(orblow,C) AND afterbreakout1;
color = IIf(Buy,colorGreen,IIf(Sell,colorRed,IIf(buycandidate,colorBlue,IIf(sellcandidate,colorPink,0))));


Plot(C,"",colorYellow,styleBar);
PlotShapes( shapeUpArrow * Buy, colorGreen,0,L,-12);
PlotShapes( shapeDownArrow * Sell, colorRed,0,H,-12);
//Plot(afterbreakout0,"",colorBlue,styleHistogram|styleOwnScale);

StyleOR=styleNoLine|styleDots+styleThick;

Plot(ORBHigh,"RESISTENCE",colorGreen,StyleOR);
Plot(ORBLow,"SUPPORT",colorRed,StyleOR);
Filter = Buy OR Sell OR sellcandidate  OR buycandidate OR Buy1 OR Sell1;


//Filter = Buy OR Sell OR sellcandidate  OR buycandidate;
AddColumn(C,"CMP",0,colorBlue);
AddColumn(IIf(Buy OR sellcandidate,ORBHigh,ORBLow),"INTRA ",0,colorDefault,color);
AddColumn(IIf(Buy1,entryprice,ENTRYSELL),"DELIVERY ",0,colorDefault,IIf(Buy1,colorGreen, colorRed));

_SECTION_END();

_SECTION_BEGIN("Weekly MP");
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",colorTurquoise), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

_SECTION_BEGIN("Market Profile");
//Market Profile
GraphXSpace = 5;
SetChartOptions(0, chartShowDates);

//===========================

Den = Param("Density", 200, 10, 300, 10);
ShowMP = ParamToggle("Show MP", "No|Yes");
ShowVP = ParamToggle("Show VP", "No|Yes");
StyleMP = ParamStyle("style MP", styleLine|styleDots, maskAll);
StyleVP = ParamStyle("style VP", styleLine|styleDots, maskAll);

//===========================

//===========================
BarsInDay =BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ))+1;

//===========================
NewDay = DayOfWeek() > Ref( DayOfWeek(),1) OR Cum(1) == BarCount;

//===========================
Bot = TimeFrameGetPrice("L", inWeekly, 0);
Top = TimeFrameGetPrice("H", inWeekly, 0);
Vol = TimeFrameGetPrice("V", inWeekly, 0);

//===========================

Range = Highest(Top-Bot);
Box = Range/Den;
VolumeUnit = Vol/BarsInDay;

for (k = 0; k < Den; k++)            // loop through each line (price) starting at the Lowest price
{
	Line = Bot + k*Box;
	detect = Line >= L & Line <= H;

	if(ShowMP == True)
	{
		CountMPString = IIf(NewDay, Sum(detect, BarsInDay), 0);
		CountMPString = Ref(ValueWhen(NewDay, CountMPString, 0), -1);
		MpLine = IIf(CountMPString >= BarsInDay, Line, Null);

		Plot(MPLine, "", colorGreen , styleMP);
	}

if(ShowVP == True)
	{
		CountVPString = IIf(NewDay, Sum(detect*V, BarsInDay)/VolumeUnit, 0);
		CountVPString = Ref(ValueWhen(NewDay, CountVPString, 0), -1);
		VpLine = IIf(CountVPString >= BarsInDay, Line + Box/4, Null);
//		Plot()
		Plot(VPLine, "", colorBlue, styleVP);
	}
}

Title = "{{NAME}} - {{INTERVAL}} {{DATE}} {{VALUES}} - \\c04 Market Profile  \\c06 Volume Profile";
_SECTION_END();

_SECTION_BEGIN("Price+FPSR+ZG+WW+StoDiv+CCI+");
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", colorPink ), styleNoTitle | styleCandle ); 




//////////////////////////////////////////////////  DP TOGGLE ///////////////////////////////////////////////////////




Show_Prev = ParamToggle( "Display Pivots", "No|Yes", 1);
 
// Get Previous Day's close, Low and High
DayC=Prev_Close = TimeFrameGetPrice( "C", inDaily, -1, expandFirst) ;
DayL=Prev_Low = TimeFrameGetPrice( "L", inDaily, -1, expandFirst) ;
DayH=Prev_High = TimeFrameGetPrice( "H", inDaily, -1, expandFirst) ;
Today = LastValue(Day( ) );
P = (Prev_High + Prev_Low + Prev_Close)/ 3;


R6 = (DayH / DayL) * DayC * 1.002;
R5 = (DayH / DayL) * DayC;
R4 = (((DayH / DayL) + 0.83) / 1.83) * DayC;
R3 = ( ( (DayH / DayL) + 2.66) / 3.66) * DayC;
R2 = ( ( (DayH / DayL) + 4.5) / 5.5) * DayC;
R1 = ( ( (DayH / DayL) + 10) / 11) * DayC;
 
S1 = (2- ( ( (DayH / DayL) + 10) / 11)) * DayC;
S2 = (2-( (DayH / DayL) + 4.5) / 5.5) * DayC;
S3 = (2-(( DayH / DayL) + 2.66) / 3.66) * DayC;
S4 = (2-( (DayH / DayL) + 0.83) / 1.83) * DayC;
S5 = (2-( DayH / DayL)) * DayC;
S6 = (2-( DayH / DayL)) * DayC * 0.998;
//////////////////////////////  FPSR  30 MT STRATEGY /////////////////////////////////////////////////////////////

//TimeFrameSet( inDaily );

BS=(Prev_High-Prev_Low)/3;
Y=Prev_Close+BS;
X=Prev_Close-BS;


MULT=0.0003;


YT=Y+MULT*Y;
YB=Y-MULT*Y;

XT=X+MULT*X;
XB=X-MULT*X;


//PlotOHLC( 0, Prev_High ,Prev_Low ,Prev_Low, "", HLColor, styleCloud|styleNoLabel);
HLColor = colorPaleBlue;

if(Show_Prev)
{Plot(IIf(Today == Day(),R5, Null), "R5", ParamColor("R5", colorLightBlue),styleDashed|styleThick|styleNoRescale);
Plot(IIf(Today == Day(),R4, Null), "R4", ParamColor("R4",colorLightBlue),styleDots|styleThick|styleNoRescale);
Plot(IIf(Today == Day(),R3, Null), "R3", ParamColor("R3",colorLightBlue),styleDots|styleThick|styleNoRescale);
//Plot(IIf(Today == Day(),R2, Null), "R2", ParamColor("R2", colorBlack),styleDots|styleThick|styleNoRescale|styleNoLabel);
//Plot(IIf(Today == Day(),R1, Null), "R1", ParamColor("R1",colorBlack),styleDots|styleThick|styleNoRescale|styleNoLabel);
//Plot(IIf(Today == Day(),P, Null), "P", ParamColor("P",colorYellow),styleDots|styleThick|styleNoRescale);
//Plot(IIf(Today == Day(),S1, Null), "S1", ParamColor("S1", colorBlack),styleDots|styleThick|styleNoRescale|styleNoLabel);
//Plot(IIf(Today == Day(),S2, Null), "S2", ParamColor("S2",colorBlack),styleDots|styleThick|styleNoRescale|styleNoLabel);
Plot(IIf(Today == Day(),S3, Null), "S3", ParamColor("S3",colorBrightGreen),styleDots|styleThick|styleNoRescale);
Plot(IIf(Today == Day(),S4, Null), "S4", ParamColor("S4", colorBrightGreen),styleDots|styleThick|styleNoRescale );
Plot(IIf(Today == Day(),S5, Null), "S5", ParamColor("S5", colorBrightGreen),styleDashed|styleThick|styleNoRescale);



//Plot(IIf(Today == Day(), Prev_High, Null), "Prev_High", ParamColor(" Prev_High", HLColor),styleDashed|styleThick|styleNoRescale );
//Plot(IIf(Today == Day(), Prev_Low, Null), "Prev_Low", ParamColor(" Prev_Low", HLColor),styleDashed|styleThick|styleNoRescale );
}




//////////////////////////////  DAY HILO SHADOW /////////////////////////////////////////////////////////////


BSColor = ColorRGB(80,80,80);
HLColor = ColorRGB(20,20,40);
//PlotOHLC( 0, Prev_High ,Prev_Low ,Prev_Low, "", HLColor, styleCloud|styleNoLabel);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////  DOUBLE TOP //////////////////////////////////////////


/* Detecting double tops */
percdiff = 5; /* peak detection threshold */
fwdcheck = 5; /* forward validity check */
mindistance = 10;
validdiff = percdiff/400;
PK= Peak( H, percdiff, 1 ) == High;

x = Cum( 1 );
XPK1 =  ValueWhen( PK, x, 1 ); 
XPK2 = ValueWhen( PK, x, 2 ); 

peakdiff = ValueWhen( PK, H, 1 )/ValueWhen( PK, H, 2 );
doubletop = PK AND abs( peakdiff - 1 ) < validdiff AND (XPK1 - XPK2)>mindistance AND High > HHV( Ref( H, fwdcheck ), fwdcheck - 1 );
SellDT = doubletop;
Buy = 0;
//Filter=SellDT;
WriteIf( Highest( doubletop ) == 1, "AmiBroker has detected some possible
double top patterns for " + name() + "\nLook for green arrows on the price
chart.", "There are no double top patterns for " + name() );



PlotShapes(SellDT*shapeHollowDownTriangle,colorPink, 0, High, Offset =-25);
PlotShapes(SellDT*shapeDigit0,colorPink, 0, High, Offset =40);
PlotShapes(SellDT*shapeDigit0,colorPink, 0, High, Offset =50);


////////////_SECTION_BEGIN("Volume At Price");
PlotVAPOverlay( Param("Lines", 300, 100, 1000, 1 ), Param("Width", 5, 1, 100, 1 ), ParamColor("Color", colorLightBlue ), ParamToggle("Side", "Left|Right" ) | 4*ParamToggle("Z-order", "On top|Behind", 1 ) );
 
_SECTION_END();

4 comments

1. sharpie0319

There 3 errors. Amibroker 6.20

2. administrator

Formula has been fixed.

4. nissankarakeethi

sir ,

i am getting this kind of error pls slove the issue,ver 5.70

for (j=0; j<= relTodayRange; j++) { if (L[i] <= baseY+j*Den AND H[i] >= baseY+j*Den) { line = LineArray(baseX, baseY+j*Den, baseX+x[j]1, baseYj*Den); Plot(line,"",ParamColor(“Color”, colorCustom13), styleLine+styleDots)

^

Warning 502.
You are calling Plot()/PlotOHLC() function over 500 times, it is highly inefficient. Reduce number of calls.

5. administrator

It’s only a warning. The formula should still work.

Leave Comment

Please login here to leave a comment.

Back