My Trading Strategies...

#1
Currently m using 2-3 simple strategies...here m introducing market profile strategy which gives good result to me...I agree that system may have drawbacks,bugs etc...because no system is foolproof...m hounourly trying to develop system but it is not possible without follower's feedback and suggestion...

---For market profile basic read "mind over market" by James F.Dalton.
 
#2
Strategy 1)MP strategy...


Term used:
VA = Value Area (previous day)
VAL = Value Area Low(previous day)
VAH = Value Area High (previous day)
POC = Point of Control(previous day)
LOD = Low of Day
HOD = High of Day
SH = Swing High
SL = Swing Low
IB = Initial Balance
DBY = Day Before Yesterday (2 days ago)
WBW =Week before previous week (2 week ago)
MBM =Month before previous month (2 month ago).

Rules---


---When current session trading above DBY's poc...It is considered as daily bullish

---When current session trading above WBW's poc...It is considered as weekly bullish...

---When current session trading above MBM's poc...It is considered as monthaly bullish...


---Mirror image for bearish...


---When equity is weekly/monthly bullish,look only for buy until it breaks WBW's poc/MBM's poc successfully from above...

---When equity is weekly/monthly bearish,look only for sell until it breaks WBW's poc/MBM's poc successfully from below...

Note---If your are interested to hold position for several month...then trade with weekly and monthly market profile...below explanation and examples are based on daily and weekly market profile for positional traders,who are interested to hold position for a week...


Trade setup
---This strategy setup is for positional traders.one can do day trades also , but recommands that buy/sell on first day of week and hold till last day of that week or exit as per exit rule...


1)In weekly bullish market,if current session opens and trades above DBY's poc,then area from dby's poc to VAH becomes buying zone called as "Air Cover Zone"...look
for buy in those zone...sometimes if it not retraces to "Air Cover Zone" then buy on at any price action breakout above DBY's poc...target,s/l or exit as per rule...


2)In weekly bullish market,if current session opens and trade below DBY's poc,then buy only after successfull breakout of DBY's poc from below...target,s/l or exit
as per rule...


3)In weekly bearish market,if current session opens and trade below DBY's poc,then area from dby's poc to VAL becomes selling zone called as "Back Track Zone"...look for sell in those zone...sometimes if it is not retraces in "Back Track Zone",then sell on at any price action breakout below DBY's poc...s/l or exit as per rule...


4)In weekly bearish market,if current session opens and trade above DBY's poc,then sell only after successfull breakout of DBY's poc from above...target,s/l or exit
as per rule...


Target for buy/short trade...
---There is no any rigid rule,target should be upper/lower resistance ,swing high/low,or as per risk potential...

S/l,Exit Rule for buy trade...

---Initially s/l should be place at sl(swing low) then follow by using DBY's POC as Trailing Stop Loss...

---Exit When DBY's poc breaks succesfully from above.



S/l,Exit Rule for Short trade...


---Initially s/l should be place at sh(swing high) then follow by using DBY's POC as Trailing Stop Loss...

------Exit When DBY's poc breaks succesfully from below...
 
Last edited:
#8
Here is the market profile code what i use...for volume i use simple volume indicator which is default available in amibroker...


_SECTION_BEGIN("MarketProfile");
//------------------------------------------------------------------------------

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

EnMP2= ParamList("MarketProfile","Solid|Lines|Letters");
Type=ParamList("Type","Price Profile|Volume Profile");
Period= ParamList("Base","Hourly|Daily|Weekly|Monthly",1);

Den = Param("Density", 1, 0.25, 100, 0.25); // Resolution in terms of $
percent=Param("Value Area", 70, 1, 100, 1);
ViewPOC = ParamToggle("Show POC", "No|Yes",1);
Colorpoc=ParamColor("Color POC", colorYellow);
EnIB = ParamToggle("Show Initial Balance", "Yes|No");
IBBars = Param("Initial Balance Bars", 2, 0, 10, 1);

if(Period=="Daily"){
BarsInDay = BarsSince(Day() != Ref(Day(), -1));
Bot = TimeFrameGetPrice("L", inDaily, 0);
Top = TimeFrameGetPrice("H", inDaily, 0);
Vol = TimeFrameGetPrice("V", inDaily, 0);
}

if(Period=="Hourly"){
BarsInDay = BarsSince(Hour() != Ref(Hour(), -1));
Bot = TimeFrameGetPrice("L", inHourly, 0);
Top = TimeFrameGetPrice("H", inHourly, 0);
Vol = TimeFrameGetPrice("V", inHourly, 0);
}

if(Period=="Weekly"){
BarsInDay = BarsSince(DayOfWeek() < Ref( DayOfWeek(), -1 ));
Bot = TimeFrameGetPrice("L", inWeekly, 0);
Top = TimeFrameGetPrice("H", inWeekly, 0);
Vol = TimeFrameGetPrice("V", inWeekly, 0);
}

if(Period=="Monthly" ){
BarsInDay = BarsSince(Month() != Ref(Month(), -1));
Bot = TimeFrameGetPrice("L", inMonthly, 0);
Top = TimeFrameGetPrice("H", inMonthly, 0);
Vol = TimeFrameGetPrice("V", inMonthly, 0);
}

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];

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

D=.0005;
total=0;
shiftup=0;
shiftdn=0;
startr=0;

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

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

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

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

range_x=lastVisBar-firstVisBar;
spread = Param("X Space", 80, 1, 200, 1);
tpl = Param("Time Per Letter (mins)", 30, 1, 360, 1);
Intervalmin=Interval()/60;
flt =Param("First Letter (Bars)", 1, 1, 60, 1);
teb=ParamToggle("To Each Bar","No|Yes");
Color=Param("Color Threshold",20,1,50,1);
stopg=0;
stopr=0;
new=0;

Voloumeunit=Vol/LastValue(BarsInDay);


if (EnMP2 == "Letters") {
for (j=0; j<= relTodayRange; j++) {
if (L <= baseY+j*Den AND H >= baseY+j*Den AND BarsInDay==0 AND stopg==0) {startg=j; stopg=1;}
if (L <= baseY+j*Den AND H >= baseY+j*Den AND BarsInDay==0) {startr=j;}
if (L <= baseY+j*Den AND H >= baseY+j*Den) {
PlotText(StrExtract(" A , B , C , D , E , F , G , H , I , J , K , L , M , N , O , P , Q , R , S , T , U , V , W , X , Y , Z, a , b , c , d , e , f , g , h , i , j , k , L , m , n ,o , p , q , r , s , t , u , v , w , x , y , z ",
IIf(BarsInDay<flt,0,ceil(BarsInDay/(tpl/Intervalmin))-0)), baseX+IIf(teb==1,BarsInDay,x[j]*(range_x/spread)), baseY+j*Den,
IIf(BarsInDay==0,IIf(C>O,IIf(j==startg,colorWhite,colorWhite),IIf(j==startr,colorWhite,colorWhite)),colorWhite),ColorHSB(10+((ceil(BarsInDay/(tpl/Intervalmin)))*Color),160,140));
x[j]++;

}
}
}

else if (EnMP2 == "Lines" OR EnMP2 == "Solid") {
for (j=0; j<= relTodayRange; j++) {
if (L <= baseY+j*Den AND H >= baseY+j*Den) {
if(Type=="Price Profile"){x[j]=x[j]+1;}
else if(Type=="Volume Profile"){x[j]=x[j]+round(V/Voloumeunit);}

}
}
}

// Draw Initial Balance after 11am bar is complete
if (BarsInDay == IBBars+1 AND EnIB == 0) {
Line1 = LineArray(i-2, curtop[i-1],i+7, curtop[i-1],0,True);
Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
Line1 = LineArray(i-2, curbot[i-1],i+7, curbot[i-1],0,True);
Plot(Line1,"",colorLightGrey,styleLine+styleDashed|styleNoRescale);
}

// Examine x[j]
if ((i < BarCount - 1 AND BarsInDay[i+1] == 0) OR i == BarCount-1) {
maxXj = 0;
maxj = 0;
for (j=0; j<= relTodayRange; j++) {
if (maxXj < x[j]) {maxXj = x[j]; maxj = j; StaticVarSet("Maxj",j); new=j;
}
}
for ( n = 1; n <= relTodayRange; n++ ) {
total[n]=x[n]+total[n-1];
}
Value_area=(total[relTodayRange]*percent)/100;

for ( a = 1; a <= relTodayRange; a++ )
{
if(Maxj-a>0 AND Maxj+a<relTodayRange)
{
if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)]>=Value_area) {shiftup=a; shiftdn=a; break;}
}
else if(Maxj-a<1 )
{
if(MaxXj+total[Maxj+a]-total[Maxj]+total[Maxj-1]>=Value_area){shiftup=a; shiftdn=maxj-1; break;}
}
else if(Maxj+a>relTodayRange )
{
if(MaxXj+total[relTodayRange]-total[Maxj]+total[Maxj-1]-total[Maxj-(a+1)] >=Value_area){shiftup=relTodayRange-maxj; shiftdn=a; break;}
}
}

Vah = LineArray(baseX, baseY+(maxj+shiftup)*Den, i, baseY+(maxj+shiftup)*Den,0,True);
Val = LineArray(baseX, baseY+(maxj-shiftdn)*Den, i, baseY+(maxj-shiftdn)*Den,0,True);
poc = LineArray(baseX, baseY+maxj*Den, i, baseY+maxj*Den,0,True);
Plot(Vah,"",ParamColor("Color_VA", colorPink),styleLine|styleDots|styleNoRescale);
Plot(Val,"",ParamColor("Color_VA", colorPink),styleLine|styleDots|styleNoRescale);
if(ViewPOC==1){Plot(poc,"",Colorpoc,styleLine|styleNoRescale);}
PlotText(""+(baseY+(maxj+shiftup)*Den),i-5,baseY+(maxj+shiftup)*Den,colorWhite);
PlotText(""+(baseY+(maxj-shiftdn)*Den),i-5,baseY+(maxj-shiftdn)*Den,colorWhite);

if(ViewPOC==1){PlotText(""+(baseY+maxj*Den),i-5,baseY+maxj*Den,Colorpoc);}
}

if (i < BarCount - 1 AND BarsInDay[i+1] == 0 OR i == BarCount-1) {

for (p = 1; p < relTodayRange+1; p++){
line = LineArray(baseX, baseY+p*Den, baseX+x[p], baseY+p*Den);
line2 = LineArray(baseX, baseY+(p-1)*Den, baseX+x[p-1], baseY+(p-1)*Den);

if (EnMP2 == "Solid")
{
PlotOHLC( Line, Line, Line2, Line2, "",IIf(p>(maxj+shiftup),ParamColor("Color_VAH", colorLavender),IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorLightBlue),ParamColor("Color_VAL", colorLavender))) ,styleCloud|styleNoRescale|styleNoLabel);
}
if (EnMP2 == "Lines")
{
Plot(line,"",IIf(p>(maxj+shiftup),ParamColor("Color_VAH", colorLavender),IIf(p<=(maxj+shiftup)AND p>(maxj-shiftdn),ParamColor("Color_VA", colorLightBlue),ParamColor("Color_VAL", colorLavender))) , styleLine);
}
}
}
}
 

Similar threads