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", "[email protected]");
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();