Instantly share code, notes, and snippets.
Created
November 24, 2014 00:05
-
Star
(0)
0
You must be signed in to star a gist -
Fork
(3)
3
You must be signed in to fork a gist
-
Save marketcalls/1f2f58bb8976a07ed1fc to your computer and use it in GitHub Desktop.
Manual Button Trading in Amibroker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Title = " "; | |
_SECTION_BEGIN("MaualTradingInt1V00 "); | |
EnableRealTimeControl = ParamList("Enable Controls", "No|Yes", 0); | |
EnableAutoTrade = ParamList("Enable Autotrade", "No|Yes", 0); | |
ClientIdValue = ParamStr("Client Id", "CLIENTID"); | |
PurchaseType = ParamList("Transaction Type", "MIS|NRML", 0); | |
OrderType = ParamList("Order Type", "LIMIT|MARKET", 0); | |
BuyPriceSelection = ParamList("Buy Price", "Bid Price|Ask Price|LTP", 0); | |
SellPriceSelection = ParamList("Sell Price", "Ask Price|Bid Price|LTP", 0); | |
LotQuantity = Param("Lot Quantity", 1000, 50, 100000, 10); // Default Trade Qty. | |
//firstflag=0; | |
if(StaticVarGetText("firstflag")=="") | |
{ | |
StaticVarSet("OrderNo", 0, 1); | |
StaticVarSet("LTPSave", 0); | |
StaticVarSet("LTQSave", 0); | |
StaticVarSet("VolumeTemp", 0); | |
StaticVarSet("AskSave", 0); | |
StaticVarSet("BidSave", 0); | |
StaticVarSetText ("firstflag","0"); | |
} | |
if(StaticVarGetText("firstflag"+Name())=="") | |
{ | |
StaticVarSet(("Buy_Price" + Name()), 0, 1); | |
StaticVarSet(("Buy_Qty" + Name()), 0, 1); | |
StaticVarSet(("Sell_Price" + Name()), 0, 1); | |
StaticVarSet(("Sell_Qty" + Name()), 0, 1); | |
StaticVarSet(("AvgBuy_Price" + Name()), 0, 1); | |
StaticVarSet(("NetBuy_Qty" + Name()), 0, 1); | |
StaticVarSet(("AvgSell_Price" + Name()), 0, 1); | |
StaticVarSet(("NetSell_Qty" + Name()), 0, 1); | |
StaticVarSetText("firstflag"+Name(), "0"); | |
} | |
nestplus = Null; | |
if(EnableAutoTrade == "Yes" && EnableRealTimeControl == "Yes") | |
{ | |
if(IsNull(nestplus)) | |
{ | |
nestplus = CreateObject("Nest.PlusApi"); | |
nestplus.SetObjectName("MaualTradingInt"); | |
} | |
} | |
TempBuyPrice = StaticVarGet(("Buy_Price" + Name())); | |
TempSellPrice = StaticVarGet(("Sell_Price" + Name())); | |
TempBuyQty = StaticVarGet(("Buy_Qty" + Name())); | |
TempSellQty = StaticVarGet(("Sell_Qty" + Name())); | |
LTPTemp = StaticVarGet("LTPSave"); | |
LTQTemp = StaticVarGet("LTQSave"); | |
VolumeTemp = StaticVarGet("VolumeTemp"); | |
AskTemp = StaticVarGet("AskSave"); | |
BidTemp = StaticVarGet("BidSave"); | |
LTPLastTemp = LastValue(C); | |
VolumeLastTemp = LastValue(Volume); | |
LTQLastTemp = (VolumeLastTemp - VolumeTemp); | |
if(LTQLastTemp < 0) | |
{ | |
LTQLastTemp = LTQLastTemp * -1; | |
} | |
if(LTQLastTemp == 0) | |
{ | |
LTQLastTemp = LTQTemp; | |
} | |
AskLastTemp = LastValue(Aux1); | |
BidLastTemp = LastValue(Aux2); | |
LTPColor = colorGrey40; | |
LTQColor = colorGrey40; | |
AskColor = colorGrey40; | |
BidColor = colorGrey40; | |
if(LTPTemp > LTPLastTemp) | |
{ | |
LTPColor = colorRed; | |
} | |
else if(LTPTemp < LTPLastTemp) | |
{ | |
LTPColor = ColorGreen; | |
} | |
if(LTQTemp > LTQLastTemp) | |
{ | |
LTQColor = colorRed; | |
} | |
else if(LTQTemp < LTQLastTemp) | |
{ | |
LTQColor = ColorGreen; | |
} | |
if(AskTemp > AskLastTemp) | |
{ | |
AskColor = colorRed; | |
} | |
else if(AskTemp < AskLastTemp) | |
{ | |
AskColor = ColorGreen; | |
} | |
if(BidTemp > BidLastTemp) | |
{ | |
BidColor = colorRed; | |
} | |
else if(BidTemp < BidLastTemp) | |
{ | |
BidColor = ColorGreen; | |
} | |
StaticVarSet("LTPSave", LTPLastTemp, 1); | |
StaticVarSet("LTQSave", LTQLastTemp, 1); | |
StaticVarSet("VolumeTemp", VolumeLastTemp, 1); | |
StaticVarSet("AskSave", AskLastTemp, 1); | |
StaticVarSet("BidSave", BidLastTemp, 1); | |
X0 = 20; | |
Y0 = 10; | |
procedure DrawData (Text, x1, y1, x2, y2, colorFrom, colorTo) | |
{ | |
GfxSetOverlayMode(0); | |
GfxSelectFont("Verdana", 8.5, 700); | |
GfxSetBkMode(1); | |
GfxGradientRect(x1, y1, x2, y2, colorFrom, colorTo); | |
GfxDrawText(Text, x1, y1, x2, y2, 32|1|4|16); | |
} | |
GfxSetTextColor(colorWhite); | |
BuyAvgPriceDisplay = StaticVarGet(("AvgBuy_Price" + Name())); | |
NetBuyQtyDisplay = StaticVarGet(("NetBuy_Qty" + Name())); | |
SellAvgPriceDisplay = StaticVarGet(("AvgSell_Price" + Name())); | |
NetSellQtyDisplay = StaticVarGet(("NetSell_Qty" + Name())); | |
TempNetQuantity = NetBuyQtyDisplay - NetSellQtyDisplay; | |
TempNetValue = (SellAvgPriceDisplay * NetSellQtyDisplay) - (BuyAvgPriceDisplay * NetBuyQtyDisplay); | |
TempNetQuantityColor = colorGrey40; | |
TempNetValueColor = colorGrey40; | |
if(TempNetQuantity > 0) | |
{ | |
TempNetQuantityColor = colorGreen; | |
} | |
else if(TempNetQuantity < 0) | |
{ | |
TempNetQuantityColor = colorRed; | |
} | |
if(TempNetValue > 0) | |
{ | |
TempNetValueColor = colorGreen; | |
} | |
else if(TempNetValue < 0) | |
{ | |
TempNetValueColor = colorRed; | |
} | |
DrawData (Name(), X0, Y0, X0+150, Y0+20, colorGrey40, colorGrey40); | |
DrawData (Date(), X0+155, Y0, X0+320, Y0+20, colorGrey40, colorGrey40); | |
DrawData ("Open : " + Open, X0+325, Y0, X0+450, Y0+20, colorGrey40, colorGrey40); | |
DrawData ("Close : " + Close, X0+455, Y0, X0+580, Y0+20, colorGrey40, colorGrey40); | |
DrawData ("High : " + High, X0+585, Y0, X0+710, Y0+20, colorGrey40, colorGrey40); | |
DrawData ("Low : " + Low, X0+715, Y0, X0+840, Y0+20, colorGrey40, colorGrey40); | |
DrawData ("Volume : " + Volume, X0+845, Y0, X0+1000, Y0+20, colorGrey40, colorGrey40); | |
DrawData ("% Change : " + NumToStr( (((C-O)*100)/O), 1.2, True), X0+1005, Y0, X0+1130, Y0+20, colorGrey40, colorGrey40); | |
if(EnableRealTimeControl == "Yes") | |
{ | |
DrawData ("Buy Price : " + TempBuyPrice, X0, Y0+25, X0+150, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("Buy Qty : " + TempBuyQty, X0+155 , Y0+25, X0+305, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("Sell Price : " + TempSellPrice, X0+310, Y0+25, X0+460, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("Sell Qty : " + TempSellQty, X0+465, Y0+25, X0+615, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("BuyAvgPrice : " + BuyAvgPriceDisplay, X0+620, Y0+25, X0+770, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("NetBuyQty : " + NetBuyQtyDisplay, X0+775 , Y0+25, X0+925, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("SellAvgPrice : " + SellAvgPriceDisplay, X0+930, Y0+25, X0+1080, Y0+45, colorGrey40, colorGrey40); | |
DrawData ("NetSellQty : " + NetSellQtyDisplay, X0+1085, Y0+25, X0+1235, Y0+45, colorGrey40, colorGrey40); | |
TempNestOredrNo = ClientIdValue + NumToStr(Now(3),1,0) + "00" + StaticVarGet("OrderNo"); | |
DrawData ("NetQty : " + TempNetQuantity, X0+520, Y0+50, X0+670, Y0+70, TempNetQuantityColor, TempNetQuantityColor); | |
DrawData ("NetValue : " + TempNetValue, X0+675, Y0+50, X0+900, Y0+70, TempNetValueColor, TempNetValueColor); | |
DrawData ("Order No : " + TempNestOredrNo, X0+905, Y0+50, X0+1150, Y0+70, colorGrey40, colorGrey40); | |
DrawData ("LTP : " + LTPLastTemp, X0, Y0+50, X0+125, Y0+70, LTPColor, LTPColor); | |
DrawData ("LTQ : " + LTQLastTemp, X0+130, Y0+50, X0+255, Y0+70, LTQColor, LTQColor); | |
DrawData ("Ask : " + AskLastTemp, X0+260, Y0+50, X0+385, Y0+70, AskColor, AskColor); | |
DrawData ("Bid : " + BidLastTemp, X0+390, Y0+50, X0+515, Y0+70, BidColor, BidColor); | |
} | |
X0 = 20; | |
Y0 = 100; | |
X1 = 100; | |
LBClick = GetCursorMouseButtons() == 9; // Click | |
MouseX = Nz(GetCursorXPosition(1)); // | |
MouseY = Nz(GetCursorYPosition(1)); // | |
procedure DrawBut (Text, x1, y1, x2, y2, colorFrom, colorTo) | |
{ | |
GfxSetOverlayMode(0); | |
GfxSelectFont("Verdana", 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) | |
{ | |
DrawBut("Buy", X0+X1+10, Y0, X0+X1+75, Y0+30, colorGrey40, colorGrey40); | |
TempBuy = LastValue(DateTime()); | |
StaticVarSet(("BuyIndex" + Name()), TempBuy, 1); | |
TempBuyLastQty = StaticVarGet(("NetBuy_Qty" + Name())); | |
TempNetBuyQty = (TempBuyLastQty + LotQuantity); | |
TempBuyLastPrice = StaticVarGet(("AvgBuy_Price" + Name())); | |
if(BuyPriceSelection == "Bid Price") | |
{ | |
BuyPriceValue = BidLastTemp; | |
} | |
else if(BuyPriceSelection == "Ask Price") | |
{ | |
BuyPriceValue = AskLastTemp; | |
} | |
else | |
{ | |
BuyPriceValue = LTPLastTemp; | |
} | |
if(TempBuyLastQty == 0) | |
{ | |
TempAvgBuyPrice = BuyPriceValue; | |
} | |
else | |
{ | |
TempAvgBuyPrice = (BuyPriceValue + TempBuyLastPrice)/2; | |
} | |
StaticVarSet(("Buy_Price" + Name()), BuyPriceValue, 1); | |
StaticVarSet(("Buy_Qty" + Name()), LotQuantity, 1); | |
StaticVarSet(("AvgBuy_Price" + Name()), TempAvgBuyPrice, 1); | |
StaticVarSet(("NetBuy_Qty" + Name()), TempNetBuyQty, 1); | |
if(EnableAutoTrade == "Yes" && EnableRealTimeControl == "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, PurchaseType, ClientIdValue); | |
} | |
} | |
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) | |
{ | |
DrawBut("Sell", X0+X1+10, Y0, X0+X1+75, Y0+30, colorGrey40, colorGrey40); | |
TempSell = LastValue(DateTime()); | |
StaticVarSet(("SellIndex" + Name()), TempSell, 1); | |
TempSellLastQty = StaticVarGet(("NetSell_Qty" + Name())); | |
TempNetSellQty = (TempSellLastQty + LotQuantity); | |
TempSellLastPrice = StaticVarGet(("Sell_Price" + Name())); | |
if(SellPriceSelection == "Ask Price") | |
{ | |
SellPriceValue = AskLastTemp; | |
} | |
else if(SellPriceSelection == "Bid Price") | |
{ | |
SellPriceValue = BidLastTemp; | |
} | |
else | |
{ | |
SellPriceValue = LTPLastTemp; | |
} | |
if(TempSellLastQty == 0) | |
{ | |
TempAvgSellPrice = SellPriceValue; | |
} | |
else | |
{ | |
TempAvgSellPrice = (SellPriceValue + TempSellLastPrice)/2; | |
} | |
StaticVarSet(("Sell_Price" + Name()), SellPriceValue, 1); | |
StaticVarSet(("Sell_Qty" + Name()), LotQuantity, 1); | |
StaticVarSet(("AvgSell_Price" + Name()), TempAvgSellPrice, 1); | |
StaticVarSet(("NetSell_Qty" + Name()), TempNetSellQty, 1); | |
if(EnableAutoTrade == "Yes" && EnableRealTimeControl == "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, PurchaseType, ClientIdValue); | |
} | |
} | |
DrawBut ("Clear Data", X0, Y0+80, X0+X1, Y0+110, colorGrey40, colorGrey40); | |
CursorInClearButton = MouseX >= X0 AND MouseX <= X0+X1 AND MouseY >= Y0+80 AND MouseY <= Y0+110; | |
ClearButtonClick = CursorInClearButton AND LBClick; | |
if (ClearButtonClick) | |
{ | |
DrawBut("Clear", X0+X1+10, Y0, X0+X1+75, Y0+30, colorGrey40, colorGrey40); | |
StaticVarRemove(("BuyIndex" + Name())); | |
StaticVarRemove(("SellIndex" + Name())); | |
StaticVarSetText("firstflag"+Name(), ""); | |
} | |
BuyTempData = StaticVarGet(("BuyIndex" + Name())); | |
SellTempData = StaticVarGet(("SellIndex" + Name())); | |
Buy = IIF(DateTime() == BuyTempData, 1, 0); | |
Sell = IIF(DateTime() == SellTempData, 1, 0); | |
Buyshape = Buy * shapeUpArrow; | |
SellShape = Sell * shapeDownArrow; | |
PlotShapes( Buyshape, colorBrightGreen, 0, Low ); | |
PlotShapes( SellShape, colorRed, 0, High ); | |
GraphXSpace = 5; | |
} | |
_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(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment