Options Button Trading Module
//Rajandran R - Creator of OpenAlgo
//website - openalgo.in / marketcalls.in
//OpenAlgo - Amibroker Options Button Trading Module v1.0
//Date - 20/08/2024
_SECTION_BEGIN("OpenAlgo Options Button Trading");
RequestTimedRefresh(1,False);
EnableTextOutput(False);
SetOption("StaticVarAutoSave", 30 );
apikey = ParamStr("OpenAlgo API Key", "******");
strategy = ParamStr("Strategy Name", "Test Strategy");
spot = Paramlist("Spot Symbol","NIFTY|BANKNIFTY|FINNIFTY|SENSEX");
expiry = ParamStr("Expiry Date","22AUG24");
exchange = ParamList("Exchange","NFO|BFO|MCX",0);
Symbol = ParamStr("Underlying Symbol","NIFTY");
iInterval= Param("Strike Interval",50,1,10000,1);
StrikeCalculation = Paramlist("Strike Calculation","PREVOPEN|PREVCLOSE|TODAYSOPEN",0);
LotSize = Param("Lot Size",25,1,10000,1);
ATMoffsetCE = Param("ATM CE Offset",0,-40,40,1);
ITMoffsetCE = Param("ITM CE Offset",-2,-40,-1,1);
OTMoffsetCE = Param("OTM CE Offset",4,1,40,1);
ATMoffsetPE = Param("ATM PE Offset",0,-40,40,1);
ITMoffsetPE = Param("ITM PE Offset",-2,-40,-1,1);
OTMoffsetPE = Param("OTM PE Offset",4,1,40,1);
pricetype = ParamList("Order Type","MARKET",0);
product = ParamList("Product","MIS|NRML",1);
tradetype = ParamList("Option Trade Type","BUY|SELL",0);
quantity = Param("quanity(Lot Size)",1,0,10000)*LotSize;
price = 0;
disclosed_quantity = 0;
trigger_price = 0;
host = ParamStr("host","http://127.0.0.1:5000");
ver = ParamStr("API Version","v1");
VoiceAlert = ParamList("Voice Alert","Disable|Enable",1);
EnableAlgo = ParamList("AlgoStatus","Disable|Enable",0);
bridgeurl = host+"/api/"+ver;
resp = "";
//Static Variables for Order protection
static_name_ = Name()+GetChartID()+interval(2)+strategy;
static_name_algo = Name()+GetChartID()+interval(2)+strategy+"algostatus";
//OpenAlgo Dashboard
GfxSelectFont( "BOOK ANTIQUA", 14, 100 );
GfxSetBkMode( 1 );
if(EnableAlgo == "Enable")
{
AlgoStatus = "Algo Enabled";
GfxSetTextColor( colorGreen );
GfxTextOut( "Algostatus : "+AlgoStatus , 20, 40);
if(Nz(StaticVarGet(static_name_algo),0)!=1)
{
_TRACE("Algo Status : Enabled");
StaticVarSet(static_name_algo, 1);
}
}
if(EnableAlgo == "Disable")
{
AlgoStatus = "Algo Disabled";
GfxSetTextColor( colorRed );
GfxTextOut( "Algostatus : "+AlgoStatus , 20, 40);
if(Nz(StaticVarGet(static_name_algo),0)!=0)
{
_TRACE("Algo Status : Disabled");
StaticVarSet(static_name_algo, 0);
}
}
if(StrikeCalculation=="PREVOPEN")
{
SetForeign(Symbol);
spotC = Ref(OPEN,-1);
RestorePriceArrays();
}
if(StrikeCalculation=="PREVCLOSE")
{
SetForeign(Symbol);
spotC = Ref(Close,-1);
RestorePriceArrays();
}
if(StrikeCalculation=="TODAYSOPEN")
{
SetForeign(Symbol);
spotC = TimeFrameGetPrice("O",inDaily);
RestorePriceArrays();
}
//Maintain Array to Store ATM Strikes for each and every bar
strike = IIf(spotC % iInterval > iInterval/2, spotC - (spotC%iInterval) + iInterval,
spotC - (spotC%iInterval));
//ATM/ITM/OTM Entry/Exit Strikes
ATMstrikeCE = strike + (ATMoffsetCE * iInterval);
ATMstrikePE = strike - (ATMoffsetPE * iInterval);
ITMstrikeCE = strike + (ITMoffsetCE * iInterval);
ITMstrikePE = strike - (ITMoffsetPE * iInterval);
OTMstrikeCE = strike + (OTMoffsetCE * iInterval);
OTMstrikePE = strike - (OTMoffsetPE * iInterval);
//ATM/ITM/OTM OpenAlgoSymbol Format
ATMsymbolCE = spot+expiry+ATMstrikeCE+"CE";
ATMsymbolPE = spot+expiry+ATMstrikePE+"PE";
ITMsymbolCE = spot+expiry+ITMstrikeCE+"CE";
ITMsymbolPE = spot+expiry+ITMstrikePE+"PE";
OTMsymbolCE = spot+expiry+OTMstrikeCE+"CE";
OTMsymbolPE = spot+expiry+OTMstrikePE+"PE";
printf("\nATMsymbolCE = "+ATMsymbolCE);
printf("\nATMsymbolPE = "+ATMsymbolPE);
printf("\nITMsymbolCE = "+ITMsymbolCE);
printf("\nITMsymbolPE = "+ITMsymbolPE);
printf("\nOTMsymbolCE = "+OTMsymbolCE);
printf("\nOTMsymbolPE = "+OTMsymbolPE);
printf("\n ------Internal Memory-------");
printf("\n ATMsymbolCE is : " + StaticVarGetText(static_name_+"ATMsymbolCE"));
printf("\n ITMsymbolCE is : " + StaticVarGetText(static_name_+"ITMsymbolCE"));
printf("\n OTMsymbolCE is : " + StaticVarGetText(static_name_+"OTMsymbolCE"));
printf("\n ATMsymbolPE is : " + StaticVarGetText(static_name_+"ATMsymbolPE"));
printf("\n ITMsymbolPE is : " + StaticVarGetText(static_name_+"ITMsymbolPE"));
printf("\n OTMsymbolPE is : " + StaticVarGetText(static_name_+"OTMsymbolPE"));
_SECTION_BEGIN("OpenAlgo Bridge Controls");
EnableScript("VBScript");
<%
Public Sub PlaceOrder(symbol,action, quantity)
Dim oXMLHTTP
Dim oStream
Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP")
' Define variables with the specified values
Dim apikey, strategy , exchange, pricetype, product
apikey = AFL.Var("apikey")
strategy = AFL.Var("strategy")
exchange = AFL.Var("exchange")
pricetype = AFL.Var("pricetype")
product = AFL.Var("product")
' Construct the JSON string for the POST message
Dim jsonRequestBody
jsonRequestBody = "{""apikey"":""" & apikey & _
""",""strategy"":""" & strategy & _
""",""symbol"":""" & symbol & _
""",""action"":""" & action & _
""",""exchange"":""" & exchange & _
""",""pricetype"":""" & pricetype & _
""",""product"":""" & product & _
""",""quantity"":""" & quantity & """}"
' Set the URL
Dim url
url = AFL.Var("bridgeurl")&"/placeorder"
' MsgBox "API Request: " & jsonRequestBody, vbInformation, "API Information"
' Configure the HTTP request for POST method
oXMLHTTP.Open "POST", url, False
oXMLHTTP.setRequestHeader "Content-Type", "application/json"
oXMLHTTP.setRequestHeader "Cache-Control", "no-cache"
oXMLHTTP.setRequestHeader "Pragma", "no-cache"
' Send the request with the JSON body
oXMLHTTP.Send jsonRequestBody
api_parameters = "Strategy :" & strategy & " Symbol :" & symbol & " Exchange :" & exchange & _
" Action :" & action & " Pricetype :" & pricetype & _
" Product :" & product & " Quantity:" & quantity & _
" api_url :" & url
' MsgBox "API Request: " & oXMLHTTP.responseText, vbInformation, "API Information"
AFL("api_request") = api_parameters
AFL("api_response") = oXMLHTTP.responseText
' Optionally, handle the response here
' Dim response
' response = oXMLHTTP.responseText
' Response handling code...
End Sub
Public Sub ExitOrder(symbol)
Dim oXMLHTTP
Dim oStream
Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP")
' Define variables with the specified values
Dim apikey, strategy , exchange, pricetype, product
apikey = AFL.Var("apikey")
strategy = AFL.Var("strategy")
exchange = AFL.Var("exchange")
pricetype = AFL.Var("pricetype")
product = AFL.Var("product")
position_size = "0"
quantity = "0"
' Construct the JSON string for the POST message
Dim jsonRequestBody
jsonRequestBody = "{""apikey"":""" & apikey & _
""",""strategy"":""" & strategy & _
""",""symbol"":""" & symbol & _
""",""action"":""" & "SELL" & _
""",""exchange"":""" & exchange & _
""",""pricetype"":""" & pricetype & _
""",""product"":""" & product & _
""",""quantity"":""" & quantity & _
""",""position_size"":""" & position_size & """}"
' Set the URL
Dim url
url = AFL.Var("bridgeurl")&"/placesmartorder"
' Configure the HTTP request for POST method
oXMLHTTP.Open "POST", url, False
oXMLHTTP.setRequestHeader "Content-Type", "application/json"
oXMLHTTP.setRequestHeader "Cache-Control", "no-cache"
oXMLHTTP.setRequestHeader "Pragma", "no-cache"
' Send the request with the JSON body
oXMLHTTP.Send jsonRequestBody
api_parameters = "Strategy :" & strategy & " Symbol :" & symbol & " Exchange :" & exchange & _
" Action :" & action & " Pricetype :" & pricetype & _
" Product :" & product & " Quantity:" & quantity & _
" Position Size :" & position_size & " api_url :" & url
AFL("ex_api_request") = api_parameters
AFL("ex_api_response") = oXMLHTTP.responseText
' Optionally, handle the response here
' Dim response
' response = oXMLHTTP.responseText
' Response handling code...
End Sub
Public Sub SquareoffAll()
Dim oXMLHTTP
Dim oStream
Set oXMLHTTP = CreateObject("Msxml2.XMLHTTP")
' Define variables with the specified values
Dim apikey, strategy
apikey = AFL.Var("apikey")
strategy = AFL.Var("strategy")
' Construct the JSON string for the POST message
Dim jsonRequestBody
jsonRequestBody = "{""apikey"":""" & apikey & _
""",""strategy"":""" & strategy & """}"
' Set the URL
Dim url
url = AFL.Var("bridgeurl")&"/closeposition"
' Configure the HTTP request for POST method
oXMLHTTP.Open "POST", url, False
oXMLHTTP.setRequestHeader "Content-Type", "application/json"
oXMLHTTP.setRequestHeader "Cache-Control", "no-cache"
oXMLHTTP.setRequestHeader "Pragma", "no-cache"
' Send the request with the JSON body
oXMLHTTP.Send jsonRequestBody
api_parameters = "Strategy :" & strategy & " api_url :" & url
AFL("sq_api_request") = api_parameters
AFL("sq_api_response") = oXMLHTTP.responseText
' Optionally, handle the response here
' Dim response
' response = oXMLHTTP.responseText
' Response handling code...
End Sub
%>
openalgo = GetScriptObject();
_SECTION_BEGIN("Button Trading - For Old Amibroker Versions");
X0 = 20;
Y0 = 100;
X1 = 60;
X2 = 20;
Y2 = 240;
X3 = 60;
LBClick = GetCursorMouseButtons() == 9; // Click
MouseX = Nz(GetCursorXPosition(1)); //
MouseY = Nz(GetCursorYPosition(1)); //
procedure DrawButton (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(EnableAlgo == "Enable")
{
DrawButton("ATM CE", X0, Y0, X0+X1+50, Y0+50, colorGreen, colorGreen);
CursorInATMCEButton = MouseX >= X0 AND MouseX <= X0+X1+50 AND MouseY >= Y0 AND MouseY <= Y0+50;
ATMCEButtonClick = CursorInATMCEButton AND LBClick;
DrawButton("ITM CE", X0+115, Y0, X0+X1+165, Y0+50, colorRed, colorRed);
CursorInITMCEButton = MouseX >= X0+115 AND MouseX <= X0+X1+165 AND MouseY >= Y0 AND MouseY <= Y0+50;
ITMCEButtonClick = CursorInITMCEButton AND LBClick;
DrawButton("OTM CE", X0+230, Y0, X0+X1+280, Y0+50, colorBlue, colorBlue);
CursorInOTMCEButton = MouseX >= X0+230 AND MouseX <= X0+X1+280 AND MouseY >= Y0 AND MouseY <= Y0+50;
OTMCEButtonClick = CursorInOTMCEButton AND LBClick;
DrawButton("x ATM CE", X0, Y0+55, X0+X1+50, Y0+105, colorGreen, colorGreen);
xCursorInATMCEButton = MouseX >= X0 AND MouseX <= X0+X1+50 AND MouseY >= Y0+55 AND MouseY <= Y0+105;
xATMCEButtonClick = xCursorInATMCEButton AND LBClick;
DrawButton("x ITM CE", X0+115, Y0+55, X0+X1+165, Y0+105, colorRed, colorRed);
xCursorInITMCEButton = MouseX >= X0+115 AND MouseX <= X0+X1+165 AND MouseY >= Y0+55 AND MouseY <= Y0+105;
xITMCEButtonClick = xCursorInITMCEButton AND LBClick;
DrawButton("x OTM CE", X0+230, Y0+55, X0+X1+280, Y0+105, colorBlue, colorBlue);
xCursorInOTMCEButton = MouseX >= X0+230 AND MouseX <= X0+X1+280 AND MouseY >= Y0+55 AND MouseY <= Y0+105;
xOTMCEButtonClick = xCursorInOTMCEButton AND LBClick;
DrawButton("ATM PE", X2, Y2, X2+X3+50, Y2+50, colorGreen, colorGreen);
CursorInATMPEButton = MouseX >= X2 AND MouseX <= X2+X3+50 AND MouseY >= Y2 AND MouseY <= Y2+50;
ATMPEButtonClick = CursorInATMPEButton AND LBClick;
DrawButton("ITM PE", X2+115, Y2, X2+X3+165, Y2+50, colorRed, colorRed);
CursorInITMPEButton = MouseX >= X2+115 AND MouseX <= X2+X3+165 AND MouseY >= Y2 AND MouseY <= Y2+50;
ITMPEButtonClick = CursorInITMPEButton AND LBClick;
DrawButton("OTM PE", X2+230, Y2, X2+X3+280, Y2+50, colorBlue, colorBlue);
CursorInOTMPEButton = MouseX >= X2+230 AND MouseX <= X2+X3+280 AND MouseY >= Y2 AND MouseY <= Y2+50;
OTMPEButtonClick = CursorInOTMPEButton AND LBClick;
DrawButton("x ATM PE", X2, Y2+55, X2+X3+50, Y2+105, colorGreen, colorGreen);
xCursorInATMPEButton = MouseX >= X2 AND MouseX <= X2+X3+50 AND MouseY >= Y2+55 AND MouseY <= Y2+105;
xATMPEButtonClick = xCursorInATMPEButton AND LBClick;
DrawButton("x ITM PE", X2+115, Y2+55, X2+X3+165, Y2+105, colorRed, colorRed);
xCursorInITMPEButton = MouseX >= X2+115 AND MouseX <= X2+X3+165 AND MouseY >= Y2+55 AND MouseY <= Y2+105;
xITMPEButtonClick = xCursorInITMPEButton AND LBClick;
DrawButton("x OTM PE", X2+230, Y2+55, X2+X3+280, Y2+105, colorBlue, colorBlue);
xCursorInOTMPEButton = MouseX >= X2+230 AND MouseX <= X2+X3+280 AND MouseY >= Y2+55 AND MouseY <= Y2+105;
xOTMPEButtonClick = xCursorInOTMPEButton AND LBClick;
DrawButton("CLOSE ALL", X0, Y0+270, X0+X1+65, Y0+320, colorRed, colorRed);
CursorInCXButton = MouseX >= X0 AND MouseX <= X0+X1+65 AND MouseY >= Y0+270 AND MouseY <= Y0+320;
CXButtonClick = CursorInCXButton AND LBClick;
// Logic for all buttons
// ATM CE entry and exit logic
if (ATMCEButtonClick AND StaticVarGet(static_name_ + "ATMCEAlgo") == 0) {
_TRACE("Placing ATM CE Entry Order");
openalgo.placeorder(ATMsymbolCE, tradetype, quantity);
StaticVarSetText(static_name_+"ATMsymbolCE",ATMsymbolCE,True);
if (VoiceAlert == "Enable") { Say("ATM CE Order Triggered"); }
_TRACE("API Request : " + api_request);
_TRACE("API Response : " + api_response);
StaticVarSet(static_name_ + "ATMCEAlgo", 1);
} else { StaticVarSet(static_name_ + "ATMCEAlgo", 0); }
if (xATMCEButtonClick AND StaticVarGet(static_name_ + "xATMCEAlgo") == 0) {
_TRACE("Placing ATM CE Exit Order");
exitsymbol = StaticVarGetText(static_name_+"ATMsymbolCE");
if(exitsymbol!="")
{
openalgo.exitorder(exitsymbol);
StaticVarSetText(static_name_+"ATMsymbolCE","");
if (VoiceAlert == "Enable") { Say("Exit ATM CE Order Triggered"); }
_TRACE("API Request : " + ex_api_request);
_TRACE("API Response : " + ex_api_response);
StaticVarSet(static_name_ + "xATMCEAlgo", 1);
}
else
{
Say("No Open Orders to Exit");
_TRACE("No Open Orders to Exit");
}
} else { StaticVarSet(static_name_ + "xATMCEAlgo", 0); }
// ITM CE entry and exit logic
if (ITMCEButtonClick AND StaticVarGet(static_name_ + "ITMCEAlgo") == 0) {
_TRACE("Placing ITM CE Entry Order");
openalgo.placeorder(ITMsymbolCE, tradetype, quantity);
StaticVarSetText(static_name_+"ITMsymbolCE",ITMsymbolCE,True);
if (VoiceAlert == "Enable") { Say("ITM CE Order Triggered"); }
_TRACE("API Request : " + api_request);
_TRACE("API Response : " + api_response);
StaticVarSet(static_name_ + "ITMCEAlgo", 1);
} else { StaticVarSet(static_name_ + "ITMCEAlgo", 0); }
if (xITMCEButtonClick AND StaticVarGet(static_name_ + "xITMCEAlgo") == 0) {
_TRACE("Placing ITM CE Exit Order");
exitsymbol = StaticVarGetText(static_name_+"ITMsymbolCE");
if(exitsymbol!="")
{
openalgo.exitorder(exitsymbol);
StaticVarSetText(static_name_+"ITMsymbolCE","");
if (VoiceAlert == "Enable") { Say("Exit ITM CE Order Triggered"); }
_TRACE("API Request : " + ex_api_request);
_TRACE("API Response : " + ex_api_response);
StaticVarSet(static_name_ + "xITMCEAlgo", 1);
}
else
{
Say("No Open Orders to Exit");
_TRACE("No Open Orders to Exit");
}
} else { StaticVarSet(static_name_ + "xITMCEAlgo", 0); }
// OTM CE entry and exit logic
if (OTMCEButtonClick AND StaticVarGet(static_name_ + "OTMCEAlgo") == 0) {
_TRACE("Placing OTM CE Entry Order");
openalgo.placeorder(OTMsymbolCE, tradetype, quantity);
StaticVarSetText(static_name_+"OTMsymbolCE",OTMsymbolCE,True);
if (VoiceAlert == "Enable") { Say("OTM CE Order Triggered"); }
_TRACE("API Request : " + api_request);
_TRACE("API Response : " + api_response);
StaticVarSet(static_name_ + "OTMCEAlgo", 1);
} else { StaticVarSet(static_name_ + "OTMCEAlgo", 0); }
if (xOTMCEButtonClick AND StaticVarGet(static_name_ + "xOTMCEAlgo") == 0) {
_TRACE("Placing OTM CE Exit Order");
exitsymbol = StaticVarGetText(static_name_+"OTMsymbolCE");
if(exitsymbol!="")
{
openalgo.exitorder(exitsymbol);
StaticVarSetText(static_name_+"OTMsymbolCE","");
if (VoiceAlert == "Enable") { Say("Exit OTM CE Order Triggered"); }
_TRACE("API Request : " + ex_api_request);
_TRACE("API Response : " + ex_api_response);
StaticVarSet(static_name_ + "xOTMCEAlgo", 1);
}
else
{
Say("No Open Orders to Exit");
_TRACE("No Open Orders to Exit");
}
} else { StaticVarSet(static_name_ + "xOTMCEAlgo", 0); }
// ATM PE entry and exit logic
if (ATMPEButtonClick AND StaticVarGet(static_name_ + "ATMPEAlgo") == 0) {
_TRACE("Placing ATM PE Entry Order");
openalgo.placeorder(ATMsymbolPE, tradetype, quantity);
StaticVarSetText(static_name_+"ATMsymbolPE",ATMsymbolPE,True);
if (VoiceAlert == "Enable") { Say("ATM PE Order Triggered"); }
_TRACE("API Request : " + api_request);
_TRACE("API Response : " + api_response);
StaticVarSet(static_name_ + "ATMPEAlgo", 1);
} else { StaticVarSet(static_name_ + "ATMPEAlgo", 0); }
if (xATMPEButtonClick AND StaticVarGet(static_name_ + "xATMPEAlgo") == 0) {
_TRACE("Placing ATM PE Exit Order");
exitsymbol = StaticVarGetText(static_name_+"ATMsymbolPE");
if(exitsymbol!="")
{
openalgo.exitorder(exitsymbol);
StaticVarSetText(static_name_+"ATMsymbolPE","");
if (VoiceAlert == "Enable") { Say("Exit ATM PE Order Triggered"); }
_TRACE("API Request : " + ex_api_request);
_TRACE("API Response : " + ex_api_response);
StaticVarSet(static_name_ + "xATMPEAlgo", 1);
}
else
{
Say("No Open Orders to Exit");
_TRACE("No Open Orders to Exit");
}
} else { StaticVarSet(static_name_ + "xATMPEAlgo", 0); }
// ITM PE entry and exit logic
if (ITMPEButtonClick AND StaticVarGet(static_name_ + "ITMPEAlgo") == 0) {
_TRACE("Placing ITM PE Entry Order");
openalgo.placeorder(ITMsymbolPE, tradetype, quantity);
StaticVarSetText(static_name_+"ITMsymbolPE",ITMsymbolPE,True);
if (VoiceAlert == "Enable") { Say("ITM PE Order Triggered"); }
_TRACE("API Request : " + api_request);
_TRACE("API Response : " + api_response);
StaticVarSet(static_name_ + "ITMPEAlgo", 1);
} else { StaticVarSet(static_name_ + "ITMPEAlgo", 0); }
if (xITMPEButtonClick AND StaticVarGet(static_name_ + "xITMPEAlgo") == 0) {
_TRACE("Placing ITM PE Exit Order");
exitsymbol = StaticVarGetText(static_name_+"ITMsymbolPE");
if(exitsymbol!="")
{
openalgo.exitorder(exitsymbol);
StaticVarSetText(static_name_+"ITMsymbolPE","");
if (VoiceAlert == "Enable") { Say("Exit ITM PE Order Triggered"); }
_TRACE("API Request : " + ex_api_request);
_TRACE("API Response : " + ex_api_response);
StaticVarSet(static_name_ + "xITMPEAlgo", 1);
}
else
{
Say("No Open Orders to Exit");
_TRACE("No Open Orders to Exit");
}
} else { StaticVarSet(static_name_ + "xITMPEAlgo", 0); }
// OTM PE entry and exit logic
if (OTMPEButtonClick AND StaticVarGet(static_name_ + "OTMPEAlgo") == 0) {
_TRACE("Placing OTM PE Entry Order");
openalgo.placeorder(OTMsymbolPE, tradetype, quantity);
StaticVarSetText(static_name_+"OTMsymbolPE",OTMsymbolPE,True);
if (VoiceAlert == "Enable") { Say("OTM PE Order Triggered"); }
_TRACE("API Request : " + api_request);
_TRACE("API Response : " + api_response);
StaticVarSet(static_name_ + "OTMPEAlgo", 1);
} else { StaticVarSet(static_name_ + "OTMPEAlgo", 0); }
if (xOTMPEButtonClick AND StaticVarGet(static_name_ + "xOTMPEAlgo") == 0) {
_TRACE("Placing OTM PE Exit Order");
exitsymbol = StaticVarGetText(static_name_+"OTMsymbolPE");
if(exitsymbol!="")
{
openalgo.exitorder(exitsymbol);
StaticVarSetText(static_name_+"OTMsymbolPE","");
if (VoiceAlert == "Enable") { Say("Exit OTM PE Order Triggered"); }
_TRACE("API Request : " + ex_api_request);
_TRACE("API Response : " + ex_api_response);
StaticVarSet(static_name_ + "xOTMPEAlgo", 1);
}
else
{
Say("No Open Orders to Exit");
_TRACE("No Open Orders to Exit");
}
} else { StaticVarSet(static_name_ + "xOTMPEAlgo", 0); }
if( CXButtonClick AND StaticVarGet(Name()+GetChartID()+"CXAlgo")==0 )
{
openalgo.Squareoffall();
if(VoiceAlert == "Enable"){
Say("Squareoff All Triggered");
}
_TRACE("API Request : "+sq_api_request);
_TRACE("API Response : "+sq_api_response);
StaticVarSet(Name()+GetChartID()+"CXAlgo",1);
}
else
{
StaticVarSet(Name()+GetChartID()+"CXAlgo",0);
}
}
_SECTION_END();
_SECTION_BEGIN("Candlestick Charts with Date & Time Axis");
//Enable the Date & Time Axis
SetChartOptions(0, chartShowArrows | chartShowDates);
//Plotting Candlestick charts
Plot(Close,"Candle",colorDefault,styleCandle);
_SECTION_END();
Last updated