//TODO:
//1. Remember F, AO, AC and Zone Add Ons signals and hits
//2. Integrate squat bars with exit signals somehow.
//3. five magic bullets - for taking profit
//Alligator lines
//---------------
//The Blue balance line is where the price would be on this time frame if there were no new incoming information,
//in other words, the market only moves when there is Chaos present.
AlligatorBlue=Ref(Wilders(Avg,13),-8);
//Plot(AlligatorBlue, "Jaw", colorDarkBlue, styleLine | styleThick);
AlligatorRed=Ref(Wilders(Avg,8),-5);
//Plot(AlligatorRed, "Teeth", colorRed, styleLine | styleThick);
AlligatorGreen=Ref(Wilders(Avg,5),-3);
//Plot(AlligatorGreen, "Leeps", colorGreen, styleLine | styleThick);
//The PURPLE line is a 5 bar SIMPLE moving average of the bar’s CLOSE offset 3 bars into the future
//PurpleLine = MA(Ref(C,-3),5);
//if( ParamToggle("Show Purple Line", "No|Yes", 0))
//{ Plot(PurpleLine , "Purple", colorViolet, styleLine | styleThick);
//}
//AO
//---------------
AO = MA( Avg,5) - MA( Avg , 34);
AOUpBar = AO > Ref(AO, -1);
AODownBar = AO < Ref(AO, -1);
//AC
//---------------
MAAvg34=MA( Avg , 34);
MAAvg5 = MA( Avg,5);
MADiff = MAAvg5 - MAAvg34;
AC = MA(MADiff - MA(MADiff, 5), 5);
ACUpBar = AC > Ref(AC, -1);
ACDownBar = AC < Ref(AC, -1);
//Squat Bar
//---------
//Squat bars are a battle of the bulls and the bears, with lots of buying and selling but little price movement.
//A squat bar will be one of the top three OR bottom three bars 85% of the time at the end of a trend.
//While all trends end with a squat, all squats are NOT the end of a trend.
MarketFacilitionIndex =(H-L)/V;
SquatBar = MarketFacilitionIndex < Ref(MarketFacilitionIndex, -1) AND Volume > Ref(Volume, -1);
ShowSquatBars = ParamToggle("Show Squat Bars", "No|Yes", 1);
//Price Bar
//---------
GreenBar = AOUpBar AND ACUpBar;
RedBar = AODownBar AND ACDownBar;
PriceBarColor = IIf(GreenBar, colorBrightGreen , IIf(RedBar, colorRed, colorGrey40));
PriceBarColor = IIf(ShowSquatBars AND SquatBar, colorBlue, PriceBarColor);
//Plot( C, "Close", PriceBarColor , styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
//if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
//{
// ToolTip=StrFormat("Open: %g\nHigh: %g\nLow: %g\nClose: %g (%.1f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
//}
//Fractal up
//----------
fUp = (Ref(H,-2) > Ref(H, -4)) AND
(Ref(H,-2) > Ref(H, -3)) AND
(Ref(H,-2) > Ref(H, -1)) AND
(Ref(H,-2) > H);
var1=ValueWhen(fUp ,Ref(H,-2) ,1);
FractalUp=HighestSince(var1 > 0, var1, 1);
//Plot(FractalUp, "F+",colorLime , styleLine | styleDots);
FUpBuyPrice = FractalUp + 0.01;
FUpHit = FUpBuyPrice <= H AND FUpBuyPrice >= L;
FUpSignalOn = Flip(Ref(FractalUp,-1) != FractalUp, FUpHit);
//Looks into the future. This is done only to display Fractal arrow at the right bar.
//The calculation of the fractal up is done without looking into the future.
PlotShapes(IIf(Ref(FractalUp,2) != Ref(FractalUp,1), shapeSmallUpTriangle, shapeNone), colorGreen,0,Ref(FractalUp,2), 10);
//Fractal Down
//------------
var2=
(Ref(L,-2) <= Ref(L, -1)) AND
(Ref(L,-2) <= Ref(L, 0)) AND
(Ref(L,-2) <= Ref(L, -3)) AND
(Ref(L,-2) <= Ref(L, -4));
FractalDown=ValueWhen(var2, Ref(L,-2), 1);
FDownSellPrice= FractalDown+ 0.01;
FDownHit = FDownSellPrice <= H AND FDownSellPrice >= L;
FDownSignalOn = Flip(Ref(FractalDown,-1) != FractalDown, FDownHit );
//Plot(FractalDown, "F-", colorGrey40, styleLine | styleDots);
//Looks into the future. This is done only to display Fractal arrow at the right bar.
//The calculation of the fractal up is done without looking into the future.
PlotShapes(IIf(Ref(FractalDown,2) != Ref(FractalDown,1), shapeSmallDownTriangle, shapeNone), colorRed,0,Ref(FractalDown,2), 10);
//Exits
//-----
Bar5LongExit = Ref(GreenBar, -4) AND Ref(GreenBar, -3) AND Ref(GreenBar, -2) AND Ref(GreenBar, -1) AND GreenBar;
Bar5ShortExit = Ref(RedBar, -4) AND Ref(RedBar, -3) AND Ref(RedBar, -2) AND Ref(RedBar, -1) AND RedBar;
Bar5LongPrice = LowestSince(Bar5LongExit, L) - 0.01;
Bar5LongHit = L <= Ref(Bar5LongPrice, -1);
Bar5LongOn = Flip(Bar5LongExit, Bar5LongHit);
Bar5ShortPrice = LowestSince(Bar5ShortExit, H) + 0.01;
Bar5ShortHit = H >= Ref(Bar5ShortPrice, -1);
Bar5ShortOn = Flip(Bar5ShortExit, Bar5ShortHit);
GreenLineLongExit = Cross(AlligatorGreen, C);
RedLineLongExit = Cross(AlligatorRed, C);
GreenLineShortExit = Cross(AlligatorGreen, C);
RedLineShortExit = Cross(AlligatorRed, C);
//Zones (Add-Ons)
//---------------
//"Add-On" Buy (Sell):
//(1) The Momentum is still going up (down).
//(2) The Accelerator is moving up (down).
//(3) The Price is closing higher (lower).
//It is rare to continue to get over six to eight bars of the same color - No add ons after 5 consecutive bars.
AddOnBuy = Ref(GreenBar,-1) AND GreenBar AND C > Ref(C,-1) AND NOT Bar5LongExit;
AddOnSell = Ref(RedBar,-1) AND RedBar AND C < Ref(C,-1) AND NOT Bar5ShortExit;
//Balance Lines
//-------------
//1. If we are going toward the Balance Line, we place our Signal at base + two higher highs (lower lows).
//2. If we are going away from the Balance Line, we use base + one higher High (lower Low).
//3. If the current bar is red (green) and we are above the blue (Green) Balance Line AND looking for Buy (sell)signals
// we double the number of lower low (higher high) bars needed.
//4. Base Bar is the Lowest High (Highest Low) in buy (sell). Signal Bar is the bar before the base bar.
//5. Buy (Sell) stop is defined as the High (Low) + 1 tick of the Signal Bar.
//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.
//7. The buy (sell) stop stays in place unless
// (a) it is triggered
// OR
// (b) another bar with a lower High (Higher Low) is formed, creating a different base bar.
//8. You do not sell above the Alligator's mouth and you do not buy below the Alligator's mouth.
AboveAll = L > AlligatorRed AND L > AlligatorBLue AND L > AlligatorGreen;
BelowAll = H < AlligatorRed AND H < AlligatorBLue AND H < AlligatorGreen;
//Buys. Only above balance lines for now
LowerHigh = Ref(H, -1) > H;
//Double the number of LowerHighs Required on RedBar
BuySignalRef = IIf(RedBar, 2, 1);
//"BuySignalRef =" +WriteVal(BuySignalRef );
//1 or 2 lower highs above balance line
BLBuyCondition = Ref(AboveAll,-BuySignalRef) AND LowerHigh AND IIf(RedBar, Ref(LowerHigh,-1) , True);
//"BLBuyCondition =" +WriteVal(BLBuyCondition );
//Update price if new buy signal is on, otherwise use previous price:
BLBuyPrice = LowestSince(BLBuyCondition, Ref(H,-BuySignalRef)+0.01, 1);
//"Buy Hit="+WriteVal(H > Ref(BLBuyPrice,-1)) +" at"+WriteVal(Ref(BLBuyPrice,-1));
//Keep buy signal on until it is hit or marked is below all balance lines:
BLBuySignal = Flip(BLBuyCondition , ((NOT BLBuyCondition) AND H >= Ref(BLBuyPrice,-1)) OR BelowAll);
//"BLBuySignal "+WriteVal(BLBuySignal)+" BLBuyPrice="+WriteVal(BLBuyPrice);
BLBuyHit = Ref(BLBuySignal, -1) AND (NOT BLBuyCondition) AND H >= Ref(BLBuyPrice,-1);
//Note that if new buy signal is after a still valid older signal, we choose the lowest from both of them
BLBuyPrice = IIf(Ref(BLBuySignal,-1), Min(BLBuyPrice, Ref(BLBuyPrice,-1)), BLBuyPrice);
//Sells. Only below balance lines for now
HigherLow = Ref(L, -1) < L;
//Double the number of LowerHighs Required on GreenBar
SellSignalRef = IIf(GreenBar, 2, 1);
//"SellSignalRef =" +WriteVal(SellSignalRef );
//1 or 2 higher lows above balance line
BLSellCondition = Ref(BelowAll, -SellSignalRef) AND HigherLow AND IIf(GreenBar, Ref(HigherLow,-1) , True);
//"BLSellCondition =" +WriteVal(BLSellCondition);
//Update price if new sell signal is on, otherwise use previous price:
BLSellPrice = HighestSince(BLSellCondition , Ref(L,-SellSignalRef)-0.01, 1);
//"Sell Hit="+WriteVal((NOT BLSellCondition) AND L < Ref(BLSellPrice,-1)) +" at"+WriteVal(Ref(BLSellPrice,-1));
//Keep buy signal on until it is hit or market is above all balance lines
BLSellSignal = Flip(BLSellCondition, ((NOT BLSellCondition) AND L <= Ref(BLSellPrice,-1)) OR AboveAll);
//"BLSellSignal"+WriteVal(BLSellSignal)+" BLSellPrice="+WriteVal(BLSellPrice);
BLSellHit = Ref(BLSellSignal, -1) AND (NOT BLSellCondition) AND L <= Ref(BLSellPrice,-1);
//Note that if new sell signal is after a still valid older signal, we choose the highest from both of them
BLSellPrice = IIf(Ref(BLSellSignal,-1), Max(BLSellPrice, Ref(BLSellPrice,-1)), BLSellPrice);
//Bars Analysis
//-------------
Third = (H-L) / 3;
Line1 = H - Third;
Line2 = L + Third;
Half = L + ((H-L) / 2);
//After an extreme bar 85% of the time the market will change direction within the next 1-5 bars.
ExtremeBarUp = Open > Line1 AND Close > Line1;
ExtremeBarDown = Open < Line2 AND Close < Line2;
ExtremeBar = ExtremeBarUp OR ExtremeBarDown;
//Bullish AND Bearish Bars Inside the mouth do NOT create a Signal.
OutsideMouth = NOT ((H < AlligatorBlue AND L > AlligatorGreen) OR (L > AlligatorBlue AND H < AlligatorGreen));
//Bullish Divergence Bars
BullDivBar = OutsideMouth AND L < Ref(L,-1) AND C > Half;
//Bearish Divergence Bars
BearDivBar = OutsideMouth AND H > Ref(H, -1) AND C < Half;
//PlotShapes(IIf(ExtremeBar, shapeSmallCircle ,shapeNone), colorBlue, 0, H, 12);
//PlotShapes(IIf(BullDivBar, shapeSmallCircle ,shapeNone), colorGreen, 0, L, -12);
//PlotShapes(IIf(BearDivBar, shapeSmallCircle ,shapeNone), colorRed, 0, H, 12);
//Commentary:
WriteIf(ExtremeBarUp OR ExtremeBarDown, "Possible Change of direction within the next 1-5 bars. (Extreme Bar)\n","")+
"Buy Signals:\n"+
WriteIf(FUpSignalOn , "Place Buy Stop if Price rises to" +WriteVal(FUpBuyPrice)+ " or higher. (F+)\n","")+
WriteIf(BullDivBar, "Place Buy Stop if Price rises to" +WriteVal(H+0.01)+ " or higher. (Bullish Divergent Bar)\n","")+
WriteIf(AddOnBuy, "Place Buy Stop if Price rises to" +WriteVal(H+0.01)+ " or higher. (Zones Add On Buy)\n","")+
WriteIf(BLBuySignal,"Place Buy Stop if Price rises to" +WriteVal(BLBuyPrice)+ " or higher. (BL+)\n","")+
"Sell Signals:\n"+
WriteIf(FDownSignalOn , "Place Sell Stop if Price falls to" +WriteVal(FDownSellPrice)+ " or lower. (F-)\n","")+
WriteIf(BearDivBar, "Place Sell Stop if Price falls to" +WriteVal(L-0.01)+ " or lower. (Bearish Divergent Bar)\n","")+
WriteIf(AddOnSell, "Place Sell Stop if Price falls to" +WriteVal(L-0.01)+ " or lower. (Zones Add On Sell)\n","")+
WriteIf(BLSellSignal,"Place Sell Stop if Price falls to" +WriteVal(BLSellPrice)+ " or lower. (BL-)\n","")+
"Hits:\n"+
WriteIf(BLBuyHit,"Buy Stop Hit at" +WriteVal(Ref(BLBuyPrice,-1))+ ". (BL+)\n","")+
WriteIf(BLSellHit,"Sell Stop Hit at" +WriteVal(Ref(BLSellPrice,-1))+ ". (BL-)\n","")+
WriteIf(Ref (FUpSignalOn, -1) AND FUpHit,"Buy Stop Hit at" +WriteVal(Ref(FUpBuyPrice,-1))+ ". (F+)\n","")+
WriteIf(Ref (FDownSignalOn, -1) AND FDownHit,"Sell Stop Hit at" +WriteVal(Ref(FDownSellPrice,-1))+ ". (F-)\n","")+
WriteIf(Ref(Bar5LongOn , -1) AND Bar5LongHit, "Close all positions Hit at" +WriteVal(Ref(Bar5LongPrice,-1))+ ". (Long Five Consecutive Bars Exit)\n","")+
WriteIf(Ref(Bar5ShortOn , -1) AND Bar5ShortHit, "Close all positions Hit at" +WriteVal(Ref(Bar5ShortPrice,-1))+ ". (Short Five Consecutive Bars Exit)\n","")+
"Exits:\n"+
WriteIf(Bar5LongOn , "Long Five Consecutive Bars Exit Strategy: Close all Long positions if Price falls to" +WriteVal(Bar5LongPrice)+ " or lower.\n","")+
WriteIf(Bar5ShortOn, "Short Five Consecutive Bars Exit Strategy: Close all Short positions if Price rises to" +WriteVal(Bar5ShortPrice)+ " or higher.\n","")+
WriteIf(GreenLineLongExit, "Green Line Long Exit Strategy: All Long positions should have been closed when Close Price fell below "+WriteVal(AlligatorGreen)+".\n","")+
WriteIf(RedLineLongExit, "Red Line Long Exit Strategy: All Long positions should have been closed when Close Price fell below "+WriteVal(AlligatorRed)+".\n","")+
WriteIf(GreenLineShortExit, "Green Line Short Exit Strategy: All Short positions should have been closed when Close Price rose above "+WriteVal(AlligatorGreen)+".\n","")+
WriteIf(RedLineShortExit, "Red Line Short Exit Strategy: All Short positions should have been closed when Close Price rose aboce "+WriteVal(AlligatorRed)+".\n","");
function GetSecondNum()
{
Time = Now( 4 );
Seconds = int( Time % 100 );
Minutes = int( Time / 100 % 100 );
Hours = int( Time / 10000 % 100 );
SecondNum = int( Hours * 60 * 60 + Minutes * 60 + Seconds );
return SecondNum;
}
function PopupWindowEx( popupID, bodytext, captiontext, timeout, left, top )
{
displayText = bodytext + captiontext;
if ( ( StaticVarGetText( "prevPopup" + popupID ) != displayText) OR ( StaticVarGet( "prevPopupTime" + popupID ) < GetSecondNum() ) )
{
StaticVarSetText( "prevPopup" + popupID, displayText);
StaticVarSet( "prevPopupTime" + popupID, GetSecondNum() + timeout );
PopupWindow( bodytext, Captiontext + popupID, timeout, Left, top );
PlaySound("c:\\windows\\media\\ding.wav");
}
}
_SECTION_BEGIN("SuperTrend Ver 3.0 with Sound and Popup Alert");
//ApplyStop(stopTypeLoss, stopModePoint, Optimize( "max. loss stop level", 75, 40, 100, 10 ), True );
//ApplyStop(stopTypeProfit, stopModePoint, Optimize( "Profit target level", 400, 200, 800, 50 ), True );
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);
/*Initial Values overrides you backtesting settings*/
//SetOption( "InitialEquity", 100000);
//SetOption("FuturesMode" ,False);
//SetOption("MinShares",1);
//SetOption("CommissionMode",2);
//SetOption("CommissionAmount",0);
//SetOption("AccountMargin",100);
SetOption("RefreshWhenCompleted",True);
//SetTradeDelays(0,0,0,0);
SetPositionSize(1,spsShares);
_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",4,1,10,0.1);
Pd=Param("ATR Periods",10,1,100,1);
//Factor=Param("Factor",1,1,10,0.1);
//Pd=Param("ATR Periods",5,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 AFL code from www.marketcalls.in" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "+"\n" +EncodeColor(colorRed) +"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);
AlertIf( Buy , "SOUND C:\\Windows\\Media\\Cityscape\\Windows Exclamation.wav", "Audio alert", 2 );
AlertIf( Sell , "SOUND C:\\Windows\\Media\\Cityscape\\Windows Exclamation.wav", "Audio alert", 2 );
AlertIf( Cover , "SOUND C:\\Windows\\Media\\Cityscape\\Windows Exclamation.wav", "Audio alert", 2 );
AlertIf( Short , "SOUND C:\\Windows\\Media\\Cityscape\\Windows Exclamation.wav", "Audio alert", 2 );
duration = 10000000;
LastClose= Ref(C,-1); // if you like to add this popup will show you
if (Buy[BarCount-2]==True)
{
PopupWindowEx( "ID:1", "Get Ready to BUY \n"+Name() + " "+ Interval(2)+" : "+ " Last ="+LastClose , "Buy Alert -", 1000, 100, 1 ) ;
}
if (Short[BarCount-2]==True)
{
PopupWindowEx( "ID:2", "Get Ready to SHORT \n"+Name() + " "+ Interval(2) + " : "+ " Last ="+LastClose , "Short Alert ", 1000, 1, 150 ) ;
}
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 = 5;
x2 = 290;
y = pxHeight;
GfxSelectPen( colorGreen, 1); // broader color
GfxRoundRect( x, y - 98, x2, y , 7, 7 ) ;
GfxTextOut( ( "Marketcalls - Supertrend"),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);;
}
// Calculate Equity Curve
eq = Equity( 1, 0 );
//////////////////////////////////////////////////
// Calculate the Last Five Trades Profit/Losses //
//////////////////////////////////////////////////
tradesback = 5;
Signum = Cum( Buy ) + Cum( Short );
Signumstart1 = LastValue( SigNum ) - ( tradesback - 1 );
Signumstart2 = LastValue( SigNum ) - ( tradesback - 2 );
Signumstart3 = LastValue( SigNum ) - ( tradesback - 3 );
Signumstart4 = LastValue( SigNum ) - ( tradesback - 4 );
Signumstart5 = LastValue( SigNum ) - ( tradesback - 5 );
bi = BarIndex();
bistart = ValueWhen( signum == signumstart1, bi );
bicond = bi >= bistart AND bi <= LastValue( bi );
SellPL = IIf( Sell AND bicond, C-BuyPrice, 0 );
CovPL = IIf( Cover AND bicond, ShortPrice - C,0 );
cumPL = SellPL + CovPL;
//Plot (SellPL,"Sell",colorGreen,styleHistogram,maskhistogram);
///Plot (CovPL,"Cover", colorRed,styleHistogram,maskhistogram);
lsince = LowestSince(Sell OR Cover, cumPL, 0);
hsince = HighestSince(Sell OR Cover, CumPL, 0);
vs= IIf(lsince==0,hsince,lsince);
PL1 = ValueWhen( signum == signumstart1 , vs,1 );
PL2 = ValueWhen( signum == signumstart2 , vs,1 );
PL3 = ValueWhen( signum == signumstart3 , vs,1 );
PL4 = ValueWhen( signum == signumstart4 , vs,1 );
PL5 = ValueWhen( signum == signumstart5, vs ,1 );
//////////////////////////////////////////////////
// Plot the Last Five Trades Profit/Losses //
//////////////////////////////////////////////////
/*
Title = EncodeColor(colorWhite)+ "Backtest Results from www.marketcalls.in" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "+"\n" +EncodeColor(colorRed) +"Op-"+O+" "+"Hi-"+H+" "+"Lo-"+L+" "+
"Cl-"+C+" "+ "Vol= "+ WriteVal(V)+"\n"+ EncodeColor(colorYellow)+ "\n\n\nLast 5 Trade Results\n" +
"\nTrade1= " + PL1
+"\n"+ "Trade2= " + PL2
+"\n"+ "Trade3= " + PL3
+"\n"+ "Trade4= " + PL4
+"\n"+ "Trade5= " + PL5;
*/
//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("Time Left");
RequestTimedRefresh( 1 );
TimeFrame = Interval();
SecNumber = GetSecondNum();
Newperiod = SecNumber % TimeFrame == 0;
SecsLeft = SecNumber - int( SecNumber / TimeFrame ) * TimeFrame;
SecsToGo = TimeFrame - SecsLeft;
x=Param("xposn",50,0,1000,1);
y=Param("yposn",380,0,1000,1);
GfxSelectSolidBrush( ColorRGB( 230, 230, 230 ) );
GfxSelectPen( ColorRGB( 230, 230, 230 ), 2 );
if ( NewPeriod )
{
GfxSelectSolidBrush( colorYellow );
GfxSelectPen( colorYellow, 2 );
Say( "New period" );
}
//GfxRoundRect( x+45, y+40, x-3, y-2, 0, 0 );
//GfxSetBkMode(1);
GfxSelectFont( "Arial", 14, 700, False );
GfxSetTextColor( colorRed );
GfxTextOut( "Time Left :"+SecsToGo+"", x, y );
_SECTION_END();