/***************************************************************** Provided By : eSignal. (c) Copyright 2004 Notes: To enable/disable the trading buttons on the chart, right-click on the "Endabled" or "Disabled" label just below the Buy/Sell buttons. This formula is written for Interactive Broker Plug-in with version 7.7. *****************************************************************/ /* Generic Broker functions ***** buyMarket(symbol, quantity [, route [, expiry]]) buyLimit(symbol, quantity, dLimit [, route [, expiry]]) buyStop(symbol, quantity, dStop [, route [, expiry]]) buyStopLimit(symbol, quantity, dLimit, dStop [, route [, expiry]]) sellMarket(symbol, quantity [, route [, expiry]]) sellLimit(symbol, quantity, dLimit [, route [, expiry]]) sellStop(symbol, quantity, dStop [, route [, expiry]]) sellStopLimit(symbol, quantity, dLimit, dStop [, route [, expiry]]) *****************************/ function preMain() { setStudyTitle("IB Trade Buttons 1 "); setPriceStudy(true); setShowCursorLabel(false); // default parameters var dp0 = new FunctionParameter("Enable", FunctionParameter.BOOLEAN); dp0.setName("Enable Trading"); dp0.setDefault(false); var dp1 = new FunctionParameter("Size", FunctionParameter.NUMBER); dp1.setName("Default Lot Size"); dp1.setLowerLimit(1); dp1.setDefault(1); /*var dp2 = new FunctionParameter("Type", FunctionParameter.STRING); dp2.setName("Default Trade Type"); dp2.addOption("LIMIT"); dp2.addOption("MARKET"); dp2.addOption("STOP"); dp2.setDefault("MARKET");*/ } var bEdit = true; var vEnable = "false"; var vSize = null; var vType = "MARKET"; function main(Enable, Size) { var nState = getBarState(); if (bEdit == true) { if (Enable != null) { vEnable = Enable+""; setGlobalValue("IBTrade", vEnable); } vSize = Size; var sellText = " Sell "; var buyText = " Buy "; var enabledText = "Enabled"; var eColor = Color.green; if (vEnable == "false" || vEnable == false) { enabledText = "Disabled"; eColor = Color.red; } drawTextAbsolute(5, 15, " ", Color.black, Color.lightgrey, Text.RELATIVETOLEFT | Text.RELATIVETOBOTTOM | Text.FRAME | Text.BOLD | Text.CENTER, "Arial", 43, "border"); drawTextAbsolute(5, 15, enabledText+"@URL=EFS:editParameters", eColor, Color.lightgrey, Text.RELATIVETOLEFT | Text.RELATIVETOBOTTOM | Text.ONTOP | Text.CENTER, "Arial", 10, "msg"); drawTextAbsolute(5, 49, " Buy "+Size+" @URL=EFS:BuyCallBack", Color.white, Color.green, Text.RELATIVETOLEFT | Text.RELATIVETOBOTTOM | Text.FRAME | Text.ONTOP | Text.BOLD | Text.CENTER, "Arial", 12, "OB"); drawTextAbsolute(5, 29, " Sell "+Size+"@URL=EFS:SellCallBack", Color.white, Color.red, Text.RELATIVETOLEFT | Text.RELATIVETOBOTTOM | Text.FRAME | Text.ONTOP | Text.BOLD | Text.CENTER, "Arial", 12, "OS"); bEdit = false; } return; } /****************** *** Functions **** ******************/ function BuyCallBack(nButtonPressed) { var bTrade = getGlobalValue("IBTrade"); if (bTrade == "true") { Alert.playSound("pop.wav"); if (nButtonPressed == BUTTON_LEFT) { if (vType == "MARKET") buyMarket(getSymbol(), vSize); } } } function SellCallBack(nButtonPressed) { var bTrade = getGlobalValue("IBTrade"); if (bTrade == "true") { Alert.playSound("tap2.wav"); if (nButtonPressed == BUTTON_LEFT) { if (vType == "MARKET") sellMarket(getSymbol(), vSize); } } } var nClick = 0; function editParameters(nButtonPressed) { if(nButtonPressed == BUTTON_RIGHT) nClick++; if(nButtonPressed == BUTTON_RIGHT && nClick == 1) { bEdit = true; var bTrade = getGlobalValue("IBTrade"); if (bTrade == "false") { bTrade = "true"; } else if (bTrade == "true") { bTrade = "false"; } main(bTrade); } else if (nButtonPressed == BUTTON_LEFT) { askForInput("Trading Parameters"); } if (nClick >= 2) nClick = 0; return; }