DhanHQ 3.0.1 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ARCHITECTURE.md +47 -1
- data/CHANGELOG.md +98 -0
- data/README.md +392 -6
- data/docs/AUTHENTICATION.md +3 -5
- data/docs/CONFIGURATION.md +3 -2
- data/docs/CONSTANTS_REFERENCE.md +8 -6
- data/docs/ENDPOINTS_AND_SANDBOX.md +1 -0
- data/docs/LIVE_ORDER_UPDATES.md +5 -10
- data/docs/RAILS_INTEGRATION.md +1 -1
- data/docs/RELEASE_GUIDE.md +13 -2
- data/docs/STANDALONE_RUBY_WEBSOCKET_INTEGRATION.md +2 -2
- data/docs/WEBSOCKET_INTEGRATION.md +13 -20
- data/docs/WEBSOCKET_PROTOCOL.md +7 -3
- data/exe/dhanhq-mcp +7 -0
- data/lib/DhanHQ/agent/key_coercion.rb +36 -0
- data/lib/DhanHQ/agent/tool.rb +37 -0
- data/lib/DhanHQ/agent/tool_catalogue.rb +180 -0
- data/lib/DhanHQ/agent/tool_handlers.rb +116 -0
- data/lib/DhanHQ/agent/tool_registry.rb +17 -212
- data/lib/DhanHQ/agent/tool_schemas.rb +160 -0
- data/lib/DhanHQ/client.rb +58 -2
- data/lib/DhanHQ/concerns/order_audit.rb +74 -1
- data/lib/DhanHQ/configuration.rb +70 -1
- data/lib/DhanHQ/constants.rb +104 -2
- data/lib/DhanHQ/contracts/expired_options_data_contract.rb +1 -9
- data/lib/DhanHQ/contracts/forever_order_contract.rb +1 -1
- data/lib/DhanHQ/contracts/global_stocks_estimator_contract.rb +28 -0
- data/lib/DhanHQ/contracts/global_stocks_modify_order_contract.rb +26 -0
- data/lib/DhanHQ/contracts/global_stocks_order_contract.rb +33 -0
- data/lib/DhanHQ/contracts/global_stocks_place_order_contract.rb +75 -0
- data/lib/DhanHQ/contracts/historical_data_contract.rb +1 -21
- data/lib/DhanHQ/contracts/iceberg_order_contract.rb +1 -1
- data/lib/DhanHQ/contracts/multi_order_contract.rb +74 -0
- data/lib/DhanHQ/contracts/place_order_contract.rb +1 -1
- data/lib/DhanHQ/contracts/trade_history_contract.rb +1 -8
- data/lib/DhanHQ/contracts/twap_order_contract.rb +1 -1
- data/lib/DhanHQ/dry_run/ledger.rb +71 -0
- data/lib/DhanHQ/dry_run/simulator.rb +140 -0
- data/lib/DhanHQ/helpers/attribute_helper.rb +23 -0
- data/lib/DhanHQ/mcp/server.rb +172 -9
- data/lib/DhanHQ/models/alert_order.rb +5 -2
- data/lib/DhanHQ/models/global_stocks/funds.rb +56 -0
- data/lib/DhanHQ/models/global_stocks/holding.rb +101 -0
- data/lib/DhanHQ/models/global_stocks/margin.rb +54 -0
- data/lib/DhanHQ/models/global_stocks/market_status.rb +63 -0
- data/lib/DhanHQ/models/global_stocks/order.rb +189 -0
- data/lib/DhanHQ/models/global_stocks/order_estimate.rb +61 -0
- data/lib/DhanHQ/models/global_stocks/trade.rb +74 -0
- data/lib/DhanHQ/models/instrument.rb +44 -14
- data/lib/DhanHQ/models/margin.rb +5 -1
- data/lib/DhanHQ/models/multi_order.rb +130 -0
- data/lib/DhanHQ/rate_limiter.rb +5 -3
- data/lib/DhanHQ/resources/alert_orders.rb +1 -0
- data/lib/DhanHQ/resources/forever_orders.rb +1 -0
- data/lib/DhanHQ/resources/global_stocks/funds.rb +25 -0
- data/lib/DhanHQ/resources/global_stocks/holdings.rb +22 -0
- data/lib/DhanHQ/resources/global_stocks/margin_calculator.rb +70 -0
- data/lib/DhanHQ/resources/global_stocks/market_status.rb +22 -0
- data/lib/DhanHQ/resources/global_stocks/orders.rb +112 -0
- data/lib/DhanHQ/resources/global_stocks/trades.rb +31 -0
- data/lib/DhanHQ/resources/iceberg_orders.rb +1 -0
- data/lib/DhanHQ/resources/multi_orders.rb +58 -0
- data/lib/DhanHQ/resources/orders.rb +2 -0
- data/lib/DhanHQ/resources/pnl_exit.rb +1 -0
- data/lib/DhanHQ/resources/super_orders.rb +1 -0
- data/lib/DhanHQ/resources/twap_orders.rb +1 -0
- data/lib/DhanHQ/risk/checks/concentration.rb +37 -0
- data/lib/DhanHQ/risk/checks/max_loss.rb +24 -0
- data/lib/DhanHQ/risk/checks/position_limits.rb +24 -0
- data/lib/DhanHQ/risk/pipeline.rb +8 -1
- data/lib/DhanHQ/skills/base.rb +54 -3
- data/lib/DhanHQ/skills/builtin/bear_call_spread.rb +87 -0
- data/lib/DhanHQ/skills/builtin/bull_put_spread.rb +87 -0
- data/lib/DhanHQ/skills/builtin/buy_atm_call.rb +10 -13
- data/lib/DhanHQ/skills/builtin/covered_call.rb +85 -0
- data/lib/DhanHQ/skills/builtin/iron_condor.rb +15 -19
- data/lib/DhanHQ/skills/builtin/market_data_summarizer.rb +195 -0
- data/lib/DhanHQ/skills/builtin/protective_put.rb +90 -0
- data/lib/DhanHQ/skills/builtin/square_off_all.rb +5 -8
- data/lib/DhanHQ/skills/builtin/square_off_position.rb +8 -6
- data/lib/DhanHQ/skills/builtin/straddle.rb +88 -0
- data/lib/DhanHQ/skills/builtin/strangle.rb +13 -13
- data/lib/DhanHQ/version.rb +1 -1
- data/lib/DhanHQ/write_paths.rb +57 -0
- data/lib/DhanHQ/ws/client.rb +117 -2
- data/lib/DhanHQ/ws/connection.rb +40 -11
- data/lib/DhanHQ/ws/sub_state.rb +14 -0
- data/lib/dhan_hq.rb +47 -0
- data/lib/dhanhq/analysis/options_buying_advisor.rb +11 -10
- metadata +41 -15
- data/.rspec +0 -3
- data/.rubocop.yml +0 -48
- data/.rubocop_todo.yml +0 -217
- data/AGENTS.md +0 -23
- data/CODE_OF_CONDUCT.md +0 -132
- data/Rakefile +0 -14
- data/TAGS +0 -10
- data/core +0 -0
- data/diagram.html +0 -184
- data/skills/dhanhq-ruby/SKILL.md +0 -74
- data/skills/dhanhq-ruby/references/market_data.md +0 -3
- data/skills/dhanhq-ruby/references/orders.md +0 -7
- data/watchlist.csv +0 -3
data/skills/dhanhq-ruby/SKILL.md
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# DhanHQ Ruby SDK Skill
|
|
2
|
-
|
|
3
|
-
Use this skill when an agent needs to write, review, or operate Ruby code using the `DhanHQ` gem.
|
|
4
|
-
|
|
5
|
-
## Safety rules
|
|
6
|
-
|
|
7
|
-
- Prefer read-only tools and SDK calls unless the user explicitly asks to trade.
|
|
8
|
-
- Resolve instruments before trading with `DhanHQ::Models::Instrument.search` and use the returned `security_id` plus `exchange_segment`.
|
|
9
|
-
- Preview every order with `DhanHQ::Agent::OrderPreview` before any live order placement.
|
|
10
|
-
- Never place, modify, or cancel orders unless both `DHANHQ_MCP_ENABLE_WRITES=true` and `LIVE_TRADING=true` are set and the user has clearly confirmed the action.
|
|
11
|
-
- Include a `correlation_id` for every agent-originated order.
|
|
12
|
-
- Do not ask for or print access tokens.
|
|
13
|
-
|
|
14
|
-
## Setup
|
|
15
|
-
|
|
16
|
-
```ruby
|
|
17
|
-
require "dhan_hq"
|
|
18
|
-
require "dhan_hq/agent"
|
|
19
|
-
|
|
20
|
-
DhanHQ.configure_with_env
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Required environment variables:
|
|
24
|
-
|
|
25
|
-
- `DHAN_CLIENT_ID`
|
|
26
|
-
- `DHAN_ACCESS_TOKEN`
|
|
27
|
-
|
|
28
|
-
Optional agent variables:
|
|
29
|
-
|
|
30
|
-
- `DHANHQ_AGENT_SCOPES`, comma-separated scopes such as `portfolio:read,market:read,orders:read`
|
|
31
|
-
- `DHANHQ_MCP_ENABLE_WRITES=true` for agent write tools
|
|
32
|
-
- `LIVE_TRADING=true` for any live trading write
|
|
33
|
-
|
|
34
|
-
## Common calls
|
|
35
|
-
|
|
36
|
-
```ruby
|
|
37
|
-
DhanHQ::Models::Profile.fetch
|
|
38
|
-
DhanHQ::Models::Funds.fetch
|
|
39
|
-
DhanHQ::Models::Holding.all
|
|
40
|
-
DhanHQ::Models::Position.all
|
|
41
|
-
DhanHQ::Models::Order.all
|
|
42
|
-
DhanHQ::Models::Trade.today
|
|
43
|
-
DhanHQ::Models::Instrument.search("RELIANCE", segments: ["NSE_EQ"], limit: 5)
|
|
44
|
-
DhanHQ::Models::MarketFeed.ltp("NSE_EQ" => ["2885"])
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Order preview
|
|
48
|
-
|
|
49
|
-
```ruby
|
|
50
|
-
preview = DhanHQ::Agent::OrderPreview.new(
|
|
51
|
-
transaction_type: "BUY",
|
|
52
|
-
exchange_segment: "NSE_EQ",
|
|
53
|
-
product_type: "INTRADAY",
|
|
54
|
-
order_type: "MARKET",
|
|
55
|
-
validity: "DAY",
|
|
56
|
-
security_id: "2885",
|
|
57
|
-
quantity: 1,
|
|
58
|
-
correlation_id: "agent-20260702-001"
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
preview.to_h
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## MCP server
|
|
65
|
-
|
|
66
|
-
The gem includes a stdio MCP executable:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
dhanhq-mcp
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Start with read-only scopes. Add write scopes only for explicitly confirmed trading sessions.
|
|
73
|
-
|
|
74
|
-
See the references directory for focused workflows.
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Orders with agents
|
|
2
|
-
|
|
3
|
-
1. Search or otherwise verify the instrument.
|
|
4
|
-
2. Build order params using Dhan constants and API docs.
|
|
5
|
-
3. Run `DhanHQ::Agent::OrderPreview.new(params).to_h`.
|
|
6
|
-
4. Ask the user to confirm the preview.
|
|
7
|
-
5. Place only if `DHANHQ_MCP_ENABLE_WRITES=true`, `LIVE_TRADING=true`, and `orders:write` scope are present.
|
data/watchlist.csv
DELETED