我希望生成一个JSON文件并使用python提交。这有可能吗?怎么可能?有可能使用requests.post吗?
实际文件在这里。我只是在python https://kite.trade/docs/connect/v3/basket/中实现这一点。
我在下面添加了全部文档,希望通过python发送2个或更多订单。
我认为最后一个块正是我所需要的,但不是渲染链接,只是直接执行从python,使用风筝连接执行多个顺序使用篮子,同时使用python而不是java脚本。
离地订单执行功能允许您将用户重定向到Kite的交换批准订单页面,在该页面中,他们可以无缝地返回到应用程序,就像支付网关一样。这样,您就不必为订单执行屏幕构建、维护和获得exchange批准。Kite Publisher程序使用非现场订单执行来提供不需要任何API集成的可嵌入Javascript+HTML交易按钮。
启动订单示例JSON篮
[{
"variety": "regular",
"tradingsymbol": "INFY",
"exchange": "NSE",
"transaction_type": "BUY",
"order_type": "MARKET",
"quantity": 10,
"readonly": false
}, {
"variety": "regular",
"tradingsymbol": "NIFTY15DECFUT",
"exchange": "NFO",
"transaction_type": "SELL",
"order_type": "LIMIT",
"price": 7845,
"quantity": 1,
"readonly": false
},
{
"variety": "bo",
"tradingsymbol": "RELIANCE",
"exchange": "NSE",
"transaction_type": "BUY",
"order_type": "LIMIT",
"product": "MIS",
"price": 915.15,
"quantity": 1,
"stoploss": 5,
"squareoff": 7,
"trailing_stoploss": 1.5,
"readonly": true
}]
Posting the JSON basket
<form method="post" id="basket-form" action="https://kite.zerodha.com/connect/basket">
<input type="hidden" name="api_key" value="xxx" />
<input type="hidden" id="basket" name="data" value="" />
</form>
<script>
document.getElementById("basket").value = your_basket;
document.getElementById("basket-form").submit();
</script>用户可以发送多个订单,然后在类似于购物篮的界面上进行确认。您应该准备一个使用所需的订单参数进行交易的JSON工具列表,并将其作为一个表单字段,连同您的api_key到https://kite.zerodha.com/connect/basket的名称数据一起发布。
这是一个browser / mobile (webview)请求,必须在用户端进行,尽管篮子准备可以在后端进行。发出请求的最简单方法是创建一个隐藏表单,将JSON有效负载插入其中,然后使用Javascript自动提交它。
如果您正在准备web应用程序上的购物篮客户端,可以使用Kite Publisher javascript插件来简化工作。
备注
您不必使用登录API启动登录以执行非现场订单。如果用户还没有登录,他们将被要求登录,否则,他们将被直接带到订单篮。无论是哪种方式,最终,您都将在redirect_url上接收状态和redirect_url,就像登录流中的一样。
将脱机执行链接到Kite Connect,除登录后出现的订单篮外,与登录的流程相同。一旦用户下完订单,篮子将重定向回您注册的redirect_login和一个request_key,就像登录一样。您可以使用这个键为进一步的API交互创建一个新的Kite会话,或者完全忽略它。
Publisher JS插件,Kite Publisher Javascript插件允许您在网页中添加一键交易按钮。它的工作原理就像一个篮子和一个支付网关,其中一个内联弹出弹出在你的网页上打开,引导用户通过交易,并使用户回到你的页面上。正如偏移量订单执行部分所描述的那样,可以从这个流中捕获request_token,以启动Kite连接会话。
您可以使用Javascript插件动态地向篮子中添加一个或多个股票(最多10股),或者使用普通HTML嵌入简单的静态按钮。
开始
<script src="https://kite.trade/publisher.js?v=3"></script>将Kite Publisher包含在网页的末尾,在结束标记之前粘贴下面的脚本标记。您只需要包含此一次,就可以在页面上呈现任意数量的按钮。
品牌HTML5按钮
<!-- A link that initiates a buy (market) of the SBIN stock //-->
<kite-button href="#" data-kite="your_api_key"
data-exchange="NSE"
data-tradingsymbol="SBIN"
data-transaction_type="BUY"
data-quantity="1"
data-order_type="MARKET">Buy SBI stock</kite-button>您可以使用自定义的HTML5标记来呈现带有品牌的风筝按钮,这些按钮只需单击一次就可以启动交易。品牌按钮的工作方式类似于社交媒体按钮,您可以在页面中包含任意数量的按钮。
自定义HTML5按钮
<a href="#" data-kite="your_api_key"
data-exchange="NSE"
data-tradingsymbol="SBIN"
data-transaction_type="BUY"
data-quantity="1"
data-order_type="MARKET">Buy SBI stock</a>
<!-- A button that initiates a sell (LIMIT) of the RELIANCE stock //-->
<button data-kite="your_api_key"
data-exchange="NSE"
data-tradingsymbol="RELIANCE"
data-transaction_type="SELL"
data-quantity="1"
data-order_type="LIMIT"
data-price="100">Buy RELIANCE</button>
<!-- A button that initiates a BO of the RELIANCE stock //-->
<button data-kite="your_api_key"
data-exchange="NSE"
data-tradingsymbol="RELIANCE"
data-transaction_type="BUY"
data-quantity="1"
data-order_type="LIMIT"
data-variety="bo"
data-product="MIS"
data-price="915"
data-stoploss="5"
data-squareoff="7"
data-trailing_stoploss="1.5"
>Buy RELIANCE (Bracket Order)</button>您可以在任何HTML元素上使用HTML5数据属性,并将其转换为一个贸易按钮,只需单击一次即可调用该按钮。右边的例子显示了一个链接和一个被转换成交易按钮的按钮。
用Javascript生成动态按钮
<!-- A Kite button will be generated inside this container //-->
<p id="default-button"> </p>
<!-- The basket will be linked to this element's onClick //-->
<button id="custom-button">Buy the basket</button><script>
// Only run your custom code once KiteConnect has fully initialised.
// Use KiteConnect.ready() to achieve this.
KiteConnect.ready(function() {
// Initialize a new Kite instance.
// You can initialize multiple instances if you need.
var kite = new KiteConnect("your_api_key");
// Add a stock to the basket
kite.add({
"exchange": "NSE",
"tradingsymbol": "INFY",
"quantity": 5,
"transaction_type": "BUY",
"order_type": "MARKET"
});
// Add another stock
kite.add({
"exchange": "NSE",
"tradingsymbol": "SBIN",
"quantity": 1,
"order_type": "LIMIT",
"transaction_type": "SELL",
"price": 105
});
// Add a Bracket Order
kite.add({
"tradingsymbol": "RELIANCE",
"exchange": "NSE",
"transaction_type": "BUY",
"order_type": "LIMIT",
"product": "MIS",
"price": 915.15,
"quantity": 1,
"variety": "bo",
"stoploss": 5,
"squareoff": 7,
"trailing_stoploss": 1.5,
"readonly": true
});
// Register an (optional) callback.
kite.finished(function(status, request_token) {
alert("Finished. Status is " + status);
});
// Render the in-built button inside a given target
kite.renderButton("#default-button");
// OR, link the basket to any existing element you want
kite.link("#custom-button");
});您可以创建一个股票篮,并获得插件来呈现执行它的Kite按钮,或者将其链接到您自己的按钮(或任何HTML元素)。
插件异步加载它的资产,所以在它完全加载之后初始化自定义KiteConnect调用是很重要的。您需要使用KiteConnect.ready()函数来实现这一点。
发布于 2021-08-11 10:03:23
对于第一部分的问题,如何生成json结构,可以从标准库中使用json模块。然后,根据json的位置(存储为字符串变量或文本文件),可以使用json.loads或json.load将其转换为python对象。有关详细信息,请查看文档。
import json
# string from file
with open('file', 'r') as fd:
py = json.load(fd.read())
print(type(py))
# do smt
# from variable string
js_text ="""
[{
"variety": "regular",
"tradingsymbol": "INFY",
"exchange": "NSE",
"transaction_type": "BUY",
"order_type": "MARKET",
"quantity": 10,
"readonly": false
}, # ... as above
]"""
py = json.loads(js_text)
print(type(py))对于第二部分,您应该提供一个最小的工作示例..。太多的可能性
编辑:第二部分
再说一次,有很多可能性.您可以尝试使用requests模块(而不是从标准库)。此外,您应该查看响应,以了解连接所需的内容和方式。这里是一个说明性的例子
url = # smt
headers = {} # such as user-agent, ...
req = requests.post(url, json=js_text[0], headers=headers) # post request最终尝试json={'json_payload': js_text[0]}
...and提供一些代码快照!!
在这里你能找到requests的文档吗?
https://stackoverflow.com/questions/68736818
复制相似问题