// Downloaded From https://www.WiseStockTrader.com
Title = " ";
_SECTION_BEGIN("RKR_AutoTrade1V00 ");

EnableRealTimeControl = ParamList("Enable Controls", "No|Yes", 0);
EnableStrategy = ParamList("Enable Strategy", "No|Yes", 0);
StrategyType = ParamList("StrategyType", "Long/Short|Long|Short", 0);
EnableAutoTrade = ParamList("Enable Autotrade", "No|Yes", 0);
BuyPriceSelection = ParamList("Buy Price", "Bid Price|Ask Price|LTP", 0);
SellPriceSelection = ParamList("Sell Price", "Ask Price|Bid Price|LTP", 0);
ProductType = ParamList("Product Type", "MIS|NRML", 0);
OrderType = ParamList("Order Type", "LIMIT|MARKET", 0);
ClientIdValue = ParamStr("Client Id", "CLIENTID");
LotQuantity = Param("Lot Quantity", 1000, 50, 100000, 10);  // Default Trade Qty.
X2 = Param("Button X Offset", 0, 0, 2000, 100);
Y2 = Param("Button Y Offset", 0, 0, 2000, 100);
X1 = Param("Button Size", 100, 100, 300, 50);
ParamList("Written By", "Ranjith K R");
ParamList("e-mail ID", "ranjicgnr@gmail.com");
Buy = 0;
Sell = 0;
Short = 0;
Cover = 0;

if(EnableStrategy == "Yes")
{
/*~~~~~~~~~~~~~~~~AutoTrade Strategy~~~~~~~~~~~~~~~~~~~~~~*/
/*
You Have to replace the below code with your strategy
Strictly don't use the bellow Buy/Sell code for real Trading
*/
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

Buy = Cross(MACD(12, 26), Signal(12, 26, 9));
Sell = Cross(Signal(12, 26, 9), MACD(12, 26));

Short = Cross(Signal(12, 26, 9), MACD(12, 26));
Cover = Cross(MACD(12, 26), Signal(12, 26, 9));

/*~~~~~~~~~~~~~~~End Of AutoTrade Strategy~~~~~~~~~~~~~~~~*/
}


if(EnableAutoTrade == "Yes" && EnableRealTimeControl == "Yes")
{
	if(StaticVarGetText("firstflagforNest")=="")
	{
		nestplus = Null;
		if(IsNull(nestplus))
		{
			nestplus = CreateStaticObject("Nest.PlusApi");
			nestplus.SetObjectName("RKRAutoTrade");
		}
		StaticVarSetText ("firstflagforNest","0", 1);
	}
	
}

X0 = 20;
Y0 = 10;
procedure DashBoard (Text, x1, y1, x2, y2, colorFrom, colorTo)
{
	GfxSetOverlayMode(0);
	GfxSelectFont("Segoe UI", 8.5, 500);
	GfxSetBkMode(1);
	GfxGradientRect(x1, y1, x2, y2, colorFrom, colorTo);
	GfxDrawText(Text, x1, y1, x2, y2, 32|0|4|16);
}
GfxSetTextColor(colorWhite);

DashBoard (" Strategy: " + EnableStrategy, X0, Y0, X0+150, Y0+13, colorGrey40, colorGrey40);
DashBoard (" Strategy Type: " + StrategyType, X0, Y0+13, X0+150, Y0+26, colorGrey40, colorGrey40);
DashBoard (" Auto Trade: " + EnableAutoTrade, X0, Y0+26, X0+150, Y0+38, colorGrey40, colorGrey40);
DashBoard (" Buy Price: " + BuyPriceSelection, X0, Y0+38, X0+150, Y0+50, colorGrey40, colorGrey40);
DashBoard (" Sell Price: " + SellPriceSelection, X0, Y0+50, X0+150, Y0+62, colorGrey40, colorGrey40);
DashBoard (" Product Type: " + ProductType, X0, Y0+62, X0+150, Y0+75, colorGrey40, colorGrey40);
DashBoard (" Order Type: " + OrderType, X0, Y0+75, X0+150, Y0+88, colorGrey40, colorGrey40);
DashBoard ("", X0+1, Y0+88, X0+149, Y0+89, colorRed, colorRed);
GfxSetTextColor(colorAqua);
DashBoard (" Written By: Ranjith K R", X0, Y0+89, X0+150, Y0+105, colorBlack, colorBlack);

X0 = 180;
Y0 = 10;
procedure DrawData (Text, x1, y1, x2, y2, colorFrom, colorTo)
{
	GfxSetOverlayMode(0);
	GfxSelectFont("Segoe UI", 8.5, 600);
	GfxSetBkMode(1);
	GfxGradientRect(x1, y1, x2, y2, colorFrom, colorTo);
	GfxDrawText(Text, x1, y1, x2, y2, 32|0|4|16);
}
GfxSetTextColor(colorWhite);
DrawData (" " + Name(), X0, Y0, X0+200, Y0+15, colorGrey40, colorGrey40);
DrawData (" " + Date(), X0+205, Y0, X0+360, Y0+15, colorGrey40, colorGrey40);
DrawData (" Open : " + Open, X0+365, Y0, X0+505, Y0+15, colorGrey40, colorGrey40);
DrawData (" Close : " + Close, X0+510, Y0, X0+650, Y0+15, colorGrey40, colorGrey40);
DrawData (" High : " + High, X0+655, Y0, X0+795, Y0+15, colorGrey40, colorGrey40);
DrawData (" Low : " + Low, X0+800, Y0, X0+940, Y0+15, colorGrey40, colorGrey40);
DrawData (" Volume : " + NumToStr(Volume,1,0), X0+945, Y0, X0+1100, Y0+15, colorGrey40, colorGrey40);
DrawData (" % Change : " + NumToStr( (((C-O)*100)/O), 1.2, True), X0+1105, Y0, X0+1235, Y0+15, colorGrey40, colorGrey40);

if(StaticVarGetText("firstflag")=="")
{
	StaticVarSet("OrderNo", 0);
	
	StaticVarSetText ("firstflag","0");
}

if(StaticVarGetText("firstflag"+Name())=="")
{
	StaticVarSet(("BuyIndex" + Name()), 0);
	StaticVarSet(("BuyCount" + Name()), 0);
	StaticVarSet(("BuyFlag"  + Name()), 0);
	StaticVarSet(("BuyPrice"  + Name()), 0);
	StaticVarSet(("BuyQty"  + Name()), 0);
	
	StaticVarSet(("SellIndex" + Name()), 0);
	StaticVarSet(("SellCount" + Name()), 0);
	StaticVarSet(("SellFlag"  + Name()), 0);
	StaticVarSet(("SellPrice"  + Name()), 0);
	StaticVarSet(("SellQty"  + Name()), 0);
	
	StaticVarSet(("ShortIndex" + Name()), 0);
	StaticVarSet(("ShortCount" + Name()), 0);
	StaticVarSet(("ShortFlag"  + Name()), 0);
	StaticVarSet(("ShortPrice"  + Name()), 0);
	StaticVarSet(("ShortQty"  + Name()), 0);
	
	StaticVarSet(("CoverIndex" + Name()), 0);
	StaticVarSet(("CoverCount" + Name()), 0);
	StaticVarSet(("CoverFlag"  + Name()), 0);
	StaticVarSet(("CoverPrice"  + Name()), 0);
	StaticVarSet(("CoverQty"  + Name()), 0);
	
	StaticVarSet("LTPSave" + Name(), 0);
	StaticVarSet("LTQSave" + Name(), 0);
	StaticVarSet("VolumeTemp" + Name(), 0);
	StaticVarSet("AskSave" + Name(), 0);
	StaticVarSet("BidSave" + Name(), 0);
	
	StaticVarSet("LastLTPColor" + Name(), colorGrey40);
	StaticVarSet("LastLTQColor" + Name(), colorGrey40);
	StaticVarSet("LastAskColor" + Name(), colorGrey40);
	StaticVarSet("LastBidColor" + Name(), colorGrey40);
	
	StaticVarSetText("firstflag"+Name(), "0");
}

CurrentAskPrice = LastValue(Aux1);
CurrentBidPrice = LastValue(Aux2);
CurrentTradedPrice = LastValue(C);
CurrentVolume = LastValue(Volume);

if(BuyPriceSelection == "Bid Price")
{
	BuyPriceValue = CurrentBidPrice;
}
else if(BuyPriceSelection == "Ask Price")
{
	BuyPriceValue = CurrentAskPrice;
}
else
{
	BuyPriceValue = CurrentTradedPrice;
}

if(SellPriceSelection == "Ask Price")
{
	SellPriceValue = CurrentAskPrice;
}
else if(SellPriceSelection == "Bid Price")
{
	SellPriceValue = CurrentBidPrice;
}
else
{
	SellPriceValue = CurrentTradedPrice;
}

LTPTemp = StaticVarGet("LTPSave" + Name());
LTQTemp = StaticVarGet("LTQSave" + Name());
VolumeTemp = StaticVarGet("VolumeTemp" + Name());
AskTemp = StaticVarGet("AskSave" + Name());
BidTemp = StaticVarGet("BidSave" + Name());

CurrentLTQ = (CurrentVolume - VolumeTemp);

if(CurrentLTQ < 0)
{
	CurrentLTQ = CurrentLTQ * -1;
}

if(CurrentLTQ == 0)
{
	CurrentLTQ = LTQTemp;
}

LTPColor = StaticVarGet("LastLTPColor" + Name());
LTQColor = StaticVarGet("LastLTQColor" + Name());
AskColor = StaticVarGet("LastAskColor" + Name());
BidColor = StaticVarGet("LastBidColor" + Name());


if(LTPTemp > CurrentTradedPrice)
{
	LTPColor = colorRed;
}
else if(LTPTemp < CurrentTradedPrice)
{
	LTPColor = ColorGreen;
}

if(LTQTemp > CurrentLTQ)
{
	LTQColor = colorRed;
}
else if(LTQTemp < CurrentLTQ)
{
	LTQColor = ColorGreen;
}

if(AskTemp > CurrentAskPrice)
{
	AskColor = colorRed;
}
else if(AskTemp < CurrentAskPrice)
{
	AskColor = ColorGreen;
}

if(BidTemp > CurrentBidPrice)
{
	BidColor = colorRed;
}
else if(BidTemp < CurrentBidPrice)
{
	BidColor = ColorGreen;
}

StaticVarSet("LastLTPColor" + Name(), LTPColor);
StaticVarSet("LastLTQColor" + Name(), LTQColor);
StaticVarSet("LastAskColor" + Name(), AskColor);
StaticVarSet("LastBidColor" + Name(), BidColor);

StaticVarSet("LTPSave" + Name(), CurrentTradedPrice);
StaticVarSet("LTQSave" + Name(), CurrentLTQ);
StaticVarSet("VolumeTemp" + Name(), CurrentVolume);
StaticVarSet("AskSave" + Name(), CurrentAskPrice);
StaticVarSet("BidSave" + Name(), CurrentBidPrice);


X0 = X2 + 20;
Y0 = Y2 + 120;
LBClick = GetCursorMouseButtons() == 9;	// Click
MouseX  = Nz(GetCursorXPosition(1));		// 
MouseY  = Nz(GetCursorYPosition(1));		//

NumPad0 = GetAsyncKeyState(96) < 0;
NumPad4 = GetAsyncKeyState(100) < 0;
NumPad5 = GetAsyncKeyState(101) < 0;
NumPad7 = GetAsyncKeyState(103) < 0;
NumPad8 = GetAsyncKeyState(104) < 0;

procedure DrawBut (Text, x1, y1, x2, y2, colorFrom, colorTo)
{
	GfxSetOverlayMode(0);
	GfxSelectFont("Segoe UI", 9, 700);
	GfxSetBkMode(1);
	GfxGradientRect(x1, y1, x2, y2, colorFrom, colorTo);
	GfxDrawText(Text, x1, y1, x2, y2, 32|1|4|16);
}
GfxSetTextColor(colorWhite);

if(EnableRealTimeControl == "Yes")
{

	DrawBut ("Buy", X0, Y0, X0+X1, Y0+30, colorGreen, colorGreen);
	CursorInBuyButton = MouseX >= X0 AND MouseX <= X0+X1 AND MouseY >= Y0 AND MouseY <= Y0+30;
	BuyButtonClick = CursorInBuyButton AND LBClick;
	if (BuyButtonClick || NumPad7 )
	{
		TempBuy = Buy;
		Buy = IIf((DateTime() == LastValue(DateTime())) || (TempBuy == True), True, False);
	}

	DrawBut ("Sell", X0, Y0+40, X0+X1, Y0+70, colorRed, colorRed);
	CursorInSellButton = MouseX >= X0 AND MouseX <= X0+X1 AND MouseY >= Y0+40 AND MouseY <= Y0+70;
	SellButtonClick = CursorInSellButton AND LBClick;
	if (SellButtonClick || NumPad8)
	{
		TempSell = Sell;
		Sell = IIf((DateTime() == LastValue(DateTime())) || (TempSell == True), True, False);
	}
	
	DrawBut ("Short", X0, Y0+80, X0+X1, Y0+110, colorOrange, colorOrange);
	CursorInShortButton = MouseX >= X0 AND MouseX <= X0+X1 AND MouseY >= Y0+80 AND MouseY <= Y0+110;
	ShortButtonClick = CursorInShortButton AND LBClick;
	if (ShortButtonClick || NumPad4)
	{
		TemShort = Short;
		Short = IIf((DateTime() == LastValue(DateTime())) || (TemShort == True), True, False);
	}

	DrawBut ("Cover", X0, Y0+120, X0+X1, Y0+150, colorTurquoise, colorTurquoise);
	CursorInCoverButton = MouseX >= X0 AND MouseX <= X0+X1 AND MouseY >= Y0+120 AND MouseY <= Y0+150;
	CoverButtonClick = CursorInCoverButton AND LBClick;
	if (CoverButtonClick || NumPad5)
	{
		TempCover = Cover;
		Cover = IIf((DateTime() == LastValue(DateTime())) || (TempCover == True), True, False);
	}

	DrawBut ("Clear Data", X0, Y0+160, X0+X1, Y0+190, colorGrey40, colorGrey40);
	CursorInClearButton = MouseX >= X0 AND MouseX <= X0+X1 AND MouseY >= Y0+160 AND MouseY <= Y0+190;
	ClearButtonClick = CursorInClearButton AND LBClick;
	if (ClearButtonClick || NumPad0 ) 
	{ 
		DrawBut("Clear", X0+X1+10, Y0, X0+X1+75, Y0+30,  colorGrey40, colorGrey40);

		StaticVarSetText("firstflag"+Name(), "");
	}
	
	//TempBuy = Buy;
	TempBuy = IIf((DateTime() == LastValue(DateTime())) && (LastValue(Buy) == True), True, False);
	BuyTempData = StaticVarGet("BuyIndex" + Name());
	TempCount = StaticVarGet("BuyCount" + Name());
	BuyPrevTemp = 0;
	for(i = 0; i <= TempCount; i++)
	{
		BuyPrevTemp = BuyPrevTemp | (IIF(DateTime() == BuyTempData[i], True, False));
	}
	Buy = IIF(((BuyPrevTemp == True) || (TempBuy == True)), True, False);
	
	//TempSell = Sell;
	TempSell = IIf((DateTime() == LastValue(DateTime())) && (LastValue(Sell) == True), True, False);
	SellTempData = StaticVarGet("SellIndex" + Name());
	TempCount = StaticVarGet("SellCount" + Name());
	SellPrevTemp = 0;
	for(i = 0; i <= TempCount; i++)
	{
		SellPrevTemp = SellPrevTemp | (IIF(DateTime() == SellTempData[i], True, False));
	}
	TempCount = StaticVarGet("BuyCount" + Name());
	Sell = IIF((TempCount > 0) && ((SellPrevTemp == True) || (TempSell == True)), True, False);
	
	//TempShort = Short;
	TempShort = IIf((DateTime() == LastValue(DateTime())) && (LastValue(Short) == True), True, False);
	ShortTempData = StaticVarGet("ShortIndex" + Name());
	TempCount = StaticVarGet("ShortCount" + Name());
	ShortPrevTemp = 0;
	for(i = 0; i <= TempCount; i++)
	{
		ShortPrevTemp = ShortPrevTemp | (IIF(DateTime() == ShortTempData[i], True, False));
	}
	Short = IIF(((ShortPrevTemp == True) || (TempShort == True)), True, False);
	
	//TempCover = Cover;
	TempCover = IIf((DateTime() == LastValue(DateTime())) && (LastValue(Cover) == True), True, False);
	CoverTempData = StaticVarGet("CoverIndex" + Name());
	TempCount = StaticVarGet("CoverCount" + Name());
	CoverPrevTemp = 0;
	for(i = 0; i <= TempCount; i++)
	{
		CoverPrevTemp = CoverPrevTemp | (IIF(DateTime() == CoverTempData[i], True, False));
	}
	TempCount = StaticVarGet("ShortCount" + Name());
	Cover = IIF((TempCount > 0) && ((CoverPrevTemp == True) || (TempCover == True)), True, False);
	
}

if(StrategyType == "Long")
{
	Short = 0;
	Cover = 0;
}
else if(StrategyType == "Short")
{
	Buy = 0;
	Sell = 0;
}

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

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

Buyshape = Buy * shapeUpArrow;
SellShape = Sell * shapeDownArrow;
PlotShapes( Buyshape, colorBrightGreen, 0, Low );
PlotShapes( SellShape, colorRed, 0, High );

Shortshape = Short * shapeDownArrow;
CoverShape = Cover * shapeUpArrow;
PlotShapes( Shortshape, colorOrange, 0, High, -30);
PlotShapes( CoverShape, colorTurquoise, 0, Low, -30 );

GraphXSpace = 5;
	
	
if(EnableRealTimeControl == "Yes")
{
	if((LastValue(Buy) == True) && (StaticVarGet(("BuyFlag" + Name())) != LastValue(DateTime())))
	{
		StaticVarSet(("BuyFlag" + Name()), LastValue(DateTime()));
		DrawBut("Buy", X0+X1+10, Y0, X0+X1+75, Y0+30,  colorGrey40, colorGrey40);
		TempCount = StaticVarGet("BuyCount" + Name());
		TempIndex = StaticVarGet("BuyIndex" + Name());
		TempPrice = StaticVarGet("BuyPrice"  + Name());
		TempQty = StaticVarGet("BuyQty"  + Name());
		TempIndex[TempCount] = LastValue(DateTime());
		TempPrice[TempCount] = BuyPriceValue;
		TempQty[TempCount] = LotQuantity;
		TempCount++;
		StaticVarSet("BuyCount" + Name(), TempCount);
		StaticVarSet(("BuyIndex" + Name()), TempIndex);
		StaticVarSet(("BuyPrice" + Name()), TempPrice);
		StaticVarSet(("BuyQty" + Name()), TempQty);
		
		if(EnableAutoTrade == "Yes")
		{
			LastOrderNo = StaticVarGet("OrderNo");
			LastOrderNo++;
			StaticVarSet("OrderNo", LastOrderNo);
			TempOrderNo = ClientIdValue + NumToStr(Now(3),1,0) + "00" + LastOrderNo;
			TempName = Name() + "-EQ";
			nestplus.PlaceOrder("BUY", TempOrderNo, "NSE", TempName, "DAY", OrderType, LotQuantity, BuyPriceValue, 0.0, 0, ProductType, ClientIdValue);
		}
	}

	if((LastValue(Sell) == True) && (StaticVarGet(("SellFlag" + Name())) != LastValue(DateTime())))
	{
		StaticVarSet(("SellFlag" + Name()), LastValue(DateTime()));
		DrawBut("Sell", X0+X1+10, Y0, X0+X1+75, Y0+30,  colorGrey40, colorGrey40);
		TempCount = StaticVarGet("SellCount" + Name());
		TempIndex = StaticVarGet("SellIndex" + Name());
		TempPrice = StaticVarGet("SellPrice"  + Name());
		TempQty = StaticVarGet("SellQty"  + Name());
		TempIndex[TempCount] = LastValue(DateTime());
		TempPrice[TempCount] = SellPriceValue;
		TempQty[TempCount] = LotQuantity;
		TempCount++;
		StaticVarSet("SellCount" + Name(), TempCount);
		StaticVarSet(("SellIndex" + Name()), TempIndex);
		StaticVarSet(("SellPrice" + Name()), TempPrice);
		StaticVarSet(("SellQty" + Name()), TempQty);
		
		if(EnableAutoTrade == "Yes")
		{
			LastOrderNo = StaticVarGet("OrderNo");
			LastOrderNo++;
			StaticVarSet("OrderNo", LastOrderNo, 1);
			TempOrderNo = ClientIdValue + NumToStr(Now(3),1,0) + "00" + LastOrderNo;
			TempName = Name() + "-EQ";
			nestplus.PlaceOrder("SELL", TempOrderNo, "NSE", TempName, "DAY", OrderType, LotQuantity, SellPriceValue, 0.0, 0, ProductType, ClientIdValue);
		}
	}
	
	if((LastValue(Short) == True) && (StaticVarGet(("ShortFlag" + Name())) != LastValue(DateTime())))
	{
		StaticVarSet(("ShortFlag" + Name()), LastValue(DateTime()));
		DrawBut("Short", X0+X1+10, Y0, X0+X1+75, Y0+30,  colorGrey40, colorGrey40);
		TempCount = StaticVarGet("ShortCount" + Name());
		TempIndex = StaticVarGet("ShortIndex" + Name());
		TempPrice = StaticVarGet("ShortPrice"  + Name());
		TempQty = StaticVarGet("ShortQty"  + Name());
		TempIndex[TempCount] = LastValue(DateTime());
		TempPrice[TempCount] = SellPriceValue;
		TempQty[TempCount] = LotQuantity;
		TempCount++;
		StaticVarSet("ShortCount" + Name(), TempCount);
		StaticVarSet(("ShortIndex" + Name()), TempIndex);
		StaticVarSet(("ShortPrice" + Name()), TempPrice);
		StaticVarSet(("ShortQty" + Name()), TempQty);
		
		if(EnableAutoTrade == "Yes")
		{
			LastOrderNo = StaticVarGet("OrderNo");
			LastOrderNo++;
			StaticVarSet("OrderNo", LastOrderNo);
			TempOrderNo = ClientIdValue + NumToStr(Now(3),1,0) + "00" + LastOrderNo;
			TempName = Name() + "-EQ";
			nestplus.PlaceOrder("SELL", TempOrderNo, "NSE", TempName, "DAY", OrderType, LotQuantity, SellPriceValue, 0.0, 0, ProductType, ClientIdValue);
		}
	}

	if((LastValue(Cover) == True) && (StaticVarGet(("CoverFlag" + Name())) != LastValue(DateTime())))
	{
		StaticVarSet(("CoverFlag" + Name()), LastValue(DateTime()));
		DrawBut("Cover", X0+X1+10, Y0, X0+X1+75, Y0+30,  colorGrey40, colorGrey40);
		TempCount = StaticVarGet("CoverCount" + Name());
		TempIndex = StaticVarGet("CoverIndex" + Name());
		TempPrice = StaticVarGet("CoverPrice"  + Name());
		TempQty = StaticVarGet("CoverQty"  + Name());
		TempIndex[TempCount] = LastValue(DateTime());
		TempPrice[TempCount] = BuyPriceValue;
		TempQty[TempCount] = LotQuantity;
		TempCount++;
		StaticVarSet("CoverCount" + Name(), TempCount);
		StaticVarSet(("CoverIndex" + Name()), TempIndex);
		StaticVarSet(("CoverPrice" + Name()), TempPrice);
		StaticVarSet(("CoverQty" + Name()), TempQty);
		
		if(EnableAutoTrade == "Yes")
		{
			LastOrderNo = StaticVarGet("OrderNo");
			LastOrderNo++;
			StaticVarSet("OrderNo", LastOrderNo, 1);
			TempOrderNo = ClientIdValue + NumToStr(Now(3),1,0) + "00" + LastOrderNo;
			TempName = Name() + "-EQ";
			nestplus.PlaceOrder("BUY", TempOrderNo, "NSE", TempName, "DAY", OrderType, LotQuantity, BuyPriceValue, 0.0, 0, ProductType, ClientIdValue);
		}
	}
}
	
X0 = 180;
Y0 = 30;

if(EnableRealTimeControl == "Yes")
{
	TotPrice = 0;
	TotQty = 0;
	TotVal = 0;
	TempPriceArray = StaticVarGet("BuyPrice" + Name());
	TempQtyArray = StaticVarGet("BuyQty" + Name());
	TempCount = StaticVarGet("BuyCount" + Name());
	for(i = 0; i < TempCount; i++)
	{
		TotPrice = TotPrice + TempPriceArray[i];
		TotQty = TotQty + TempQtyArray[i];
		TotVal = TotVal + TempPriceArray[i] * TempQtyArray[i];
	}
	if(TempCount == 0)
	{
		AvgBuyPrice = 0;
		LastBuyPrice = 0;
		LastBuyQty = 0;
	}
	else
	{
		AvgBuyPrice = (TotPrice / TempCount);
		LastBuyPrice = TempPriceArray[(TempCount - 1)];
		LastBuyQty = NumToStr(TempQtyArray[(TempCount - 1)], 1, 0);
	}
	TotBuyQty = NumToStr(TotQty, 1, 0);
	NetBuyQty = TotQty;
	NetBuyValue = TotVal;
	
	TotPrice = 0;
	TotQty = 0;
	TotVal = 0;
	TempPriceArray = StaticVarGet("SellPrice" + Name());
	TempQtyArray = StaticVarGet("SellQty" + Name());
	TempCount = StaticVarGet("SellCount" + Name());
	for(i = 0; i < TempCount; i++)
	{
		TotPrice = TotPrice + TempPriceArray[i];
		TotQty = TotQty + TempQtyArray[i];
		TotVal = TotVal + TempPriceArray[i] * TempQtyArray[i];
	}
	if(TempCount == 0)
	{
		AvgSellPrice = 0;
		LastSellPrice = 0;
		LastSellQty = 0;
	}
	else
	{
		AvgSellPrice = (TotPrice / TempCount);
		LastSellPrice = TempPriceArray[(TempCount - 1)];
		LastSellQty = NumToStr(TempQtyArray[(TempCount - 1)], 1, 0);
	}
	TotSellQty = NumToStr(TotQty, 1, 0);
	NetSellQty = TotQty;
	NetSellValue = TotVal;
	
	TotPrice = 0;
	TotQty = 0;
	TotVal = 0;
	TempPriceArray = StaticVarGet("ShortPrice" + Name());
	TempQtyArray = StaticVarGet("ShortQty" + Name());
	TempCount = StaticVarGet("ShortCount" + Name());
	for(i = 0; i < TempCount; i++)
	{
		TotPrice = TotPrice + TempPriceArray[i];
		TotQty = TotQty + TempQtyArray[i];
		TotVal = TotVal + TempPriceArray[i] * TempQtyArray[i];
	}
	if(TempCount == 0)
	{
		AvgShortPrice = 0;
		LastShortPrice = 0;
		LastShortQty = 0;
	}
	else
	{
		AvgShortPrice = (TotPrice / TempCount);
		LastShortPrice = TempPriceArray[(TempCount - 1)];
		LastShortQty = NumToStr(TempQtyArray[(TempCount - 1)], 1, 0);
	}
	TotShortQty = NumToStr(TotQty, 1, 0);
	NetShortQty = TotQty;
	NetShortValue = TotVal;
	
	TotPrice = 0;
	TotQty = 0;
	TotVal = 0;
	TempPriceArray = StaticVarGet("CoverPrice" + Name());
	TempQtyArray = StaticVarGet("CoverQty" + Name());
	TempCount = StaticVarGet("CoverCount" + Name());
	for(i = 0; i < TempCount; i++)
	{
		TotPrice = TotPrice + TempPriceArray[i];
		TotQty = TotQty + TempQtyArray[i];
		TotVal = TotVal + TempPriceArray[i] * TempQtyArray[i];
	}
	if(TempCount == 0)
	{
		AvgCoverPrice = 0;
		LastCoverPrice = 0;
		LastCoverQty = 0;
	}
	else
	{
		AvgCoverPrice = (TotPrice / TempCount);
		LastCoverPrice = TempPriceArray[(TempCount - 1)];
		LastCoverQty = NumToStr(TempQtyArray[(TempCount - 1)], 1, 0);
	}
	TotCoverQty = NumToStr(TotQty, 1, 0);
	NetCoverQty = TotQty;
	NetCoverValue = TotVal;
	
	NetQty = NetSellQty - NetBuyQty + NetShortQty - NetCoverQty;
	NetValue = NetSellValue - NetBuyValue + NetShortValue - NetCoverValue;
	
	NetQuantityColor = colorGrey40;
	NetValueColor = colorGrey40;

	if(NetQty > 0)
	{
		NetQuantityColor = colorRed;
		NetValueColor = colorRed;
	}
	else if(NetQty < 0)
	{
		NetQuantityColor = colorGreen;
		NetValueColor = colorGreen;
	}
	else if(NetQty == 0)
	{
		if(NetValue > 0)
		{
			NetValueColor = colorGreen;
		}
		else if(NetValue < 0)
		{
			NetValueColor = colorRed;
		}
	}
	
	DrawData (" AvgBuyPr: " + AvgBuyPrice, X0, Y0, X0+150, Y0+15, colorGrey40, colorGrey40);
	DrawData (" TotBuyQty: " + TotBuyQty, X0+155 , Y0, X0+305, Y0+15, colorGrey40, colorGrey40);
	DrawData (" AvgSellPr: " + AvgSellPrice, X0+310, Y0, X0+460, Y0+15, colorGrey40, colorGrey40);
	DrawData (" TotSellQty: " + TotSellQty, X0+465, Y0, X0+615, Y0+15, colorGrey40, colorGrey40);
	DrawData (" AvgShortPr: " + AvgShortPrice, X0+620, Y0, X0+770, Y0+15, colorGrey40, colorGrey40);
	DrawData (" TotShortQty: " + TotShortQty, X0+775 , Y0, X0+925, Y0+15, colorGrey40, colorGrey40);
	DrawData (" AvgCoverPr: " + AvgCoverPrice, X0+930, Y0, X0+1080, Y0+15, colorGrey40, colorGrey40);
	DrawData (" TotCoverQty: " + TotCoverQty, X0+1085, Y0, X0+1235, Y0+15, colorGrey40, colorGrey40);
	
	Y0 = 50;
	
	DrawData (" LastBuyPr: " + LastBuyPrice, X0, Y0, X0+150, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastBuyQty: " + LastBuyQty, X0+155 , Y0, X0+305, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastSellPr: " + LastSellPrice, X0+310, Y0, X0+460, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastSellQty: " + LastSellQty, X0+465, Y0, X0+615, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastShortPr: " + LastShortPrice, X0+620, Y0, X0+770, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastShortQty: " + LastShortQty, X0+775 , Y0, X0+925, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastCoverPr: " + LastCoverPrice, X0+930, Y0, X0+1080, Y0+15, colorGrey40, colorGrey40);
	DrawData (" LastCoverQty: " + LastCoverQty, X0+1085, Y0, X0+1235, Y0+15, colorGrey40, colorGrey40);
	
	Y0 = 70;
	
	DrawData (" LTP : " + CurrentTradedPrice, X0, Y0, X0+125, Y0+15, LTPColor, LTPColor);
	DrawData (" LTQ : " + NumToStr(CurrentLTQ,1,0), X0+130, Y0, X0+255, Y0+15, LTQColor, LTQColor);
	DrawData (" Bid : " + CurrentBidPrice, X0+260, Y0, X0+385, Y0+15, AskColor, AskColor);
	DrawData (" Ask : " + CurrentAskPrice, X0+390, Y0, X0+515, Y0+15, BidColor, BidColor);
	
	NestOredrNo = ClientIdValue + NumToStr(Now(3),1,0) + "00" + StaticVarGet("OrderNo");
	DrawData (" NetQty : " + NetQty, X0+520, Y0, X0+670, Y0+15, NetQuantityColor, NetQuantityColor);
	DrawData (" NetValue : " + NetValue, X0+675, Y0, X0+900, Y0+15, NetValueColor, NetValueColor);
	DrawData (" Order No : " + NestOredrNo, X0+905, Y0, X0+1150, Y0+15, colorGrey40, colorGrey40);
	
}

_SECTION_END();

// ~~~~~~~~~~~~~~~~ Quote Display Draw ~~~~~~~~~~~~~~~~~//

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
//_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} \nOpen : %g, Close : %g (%.1f%%) \nLow : %g, High : %g (%.1f%%) \nVolume : " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, C,(((C-O)*100)/O), L, H, (((H-L)*100)/L) ));
Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

_SECTION_BEGIN("MA");
P = ParamField("Price field",-1);
Periods = Param("Periods", 10, 2, 200, 1 );
Plot( MA( P, Periods ), /*_DEFAULT_NAME()*/ "", ParamColor( "Color", colorGreen ), ParamStyle("Style", styleLine | styleNoLabel ) | styleNoRescale ); 
_SECTION_END();

_SECTION_BEGIN("EMA");
P = ParamField("Price field",-1);
Periods = Param("Periods", 30, 2, 300, 1, 10 );
Plot( EMA( P, Periods ), /*_DEFAULT_NAME()*/ "", ParamColor( "Color", colorOrange ), ParamStyle("Style", styleLine | styleNoLabel) | styleNoRescale ); 
_SECTION_END();

_SECTION_BEGIN("Long MA");
P = ParamField("Price field",-1);
Periods = Param("Periods", 45, 2, 400, 1 );
Plot( MA( P, Periods ), /*_DEFAULT_NAME()*/ "", ParamColor( "Color", colorYellow ), ParamStyle("Style", styleLine | styleNoLabel ) | styleNoRescale ); 
_SECTION_END();

_SECTION_BEGIN("BBands");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 100, 1 );
Width = Param("Width", 2, 0, 10, 0.05 );
Color = ParamColor("Color", colorLightGrey );
Color = ColorBlend( Color,  GetChartBkColor(), 0.5 );
Style = ParamStyle("Style", styleLine | styleNoLabel ) | styleNoRescale;;
Plot( bbt = BBandTop( P, Periods, Width ), /*"BBTop" + _PARAM_VALUES()*/ "", Color, Style ); 
Plot( bbb = BBandBot( P, Periods, Width ), /*"BBBot" + _PARAM_VALUES()*/ "", Color, Style ); 
PlotOHLC( bbt, bbt, bbb, bbb, "", ColorBlend( Color, GetChartBkColor(), 0.7 ), styleNoLabel | styleCloud | styleNoRescale, Null, Null, Null, -1 );
_SECTION_END();

_SECTION_BEGIN("Volume");
Color = ParamColor("Color", ColorRGB( 128, 128, 192 ) );
Plot( Volume, /*_DEFAULT_NAME()*/"", ColorBlend( Color, GetChartBkColor(), 0.2  ), styleNoTitle | ParamStyle( "Style", styleHistogram | styleOwnScale | styleThick | styleNoLabel, maskHistogram  ), 2 );
_SECTION_END();