Trading core
Skill marketcalls/openalgo-claude-plugin/plugins/openalgo-python/skills/trading-core
Core trading operations with OpenAlgo - place orders, smart orders, basket orders, split orders, and order management across 25+ Indian brokersFrom its SKILL.md
npx -y skills add marketcalls/openalgo-claude-plugin --skill trading-coreAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 1 credential source: `OPENALGO_API_KEY`.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 4 commands, including `python scripts/place_order.py --symbol RELIANCE --exchange NSE --action BUY --quantity 1 --product MIS` and 3 more.
SKILL.md
8.0 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it
OpenAlgo Trading Core
Execute trading operations using OpenAlgo's unified Python SDK. Supports NSE, BSE, NFO, MCX, and currency derivatives with a single API across 25+ brokers.
Environment Setup
The OPENALGO_API_KEY must be set. Get your API key from your OpenAlgo application.
from openalgo import api
client = api(
api_key='your_api_key_here',
host='http://127.0.0.1:5000' # Your OpenAlgo server
)
Quick Start Scripts
Place Market Order
python scripts/place_order.py --symbol RELIANCE --exchange NSE --action BUY --quantity 1 --product MIS
Place Smart Order (Position-Aware)
python scripts/smart_order.py --symbol TATAMOTORS --exchange NSE --action SELL --quantity 5 --position-size 10
Basket Order (Multiple Symbols)
python scripts/basket_order.py --orders '[{"symbol":"INFY","action":"BUY","quantity":1},{"symbol":"TCS","action":"BUY","quantity":1}]'
Split Order (Large Quantities)
python scripts/split_order.py --symbol YESBANK --exchange NSE --action SELL --quantity 500 --split-size 100
Order Constants
Exchanges
| Code | Description |
|---|---|
NSE | NSE Equity |
BSE | BSE Equity |
NFO | NSE Futures & Options |
BFO | BSE Futures & Options |
CDS | NSE Currency Derivatives |
BCD | BSE Currency Derivatives |
MCX | MCX Commodity |
NCDEX | NCDEX Commodity |
NSE_INDEX | NSE Indices (for quotes only) |
BSE_INDEX | BSE Indices (for quotes only) |
Product Types
| Code | Description | Use Case |
|---|---|---|
CNC | Cash & Carry | Equity delivery (hold overnight) |
NRML | Normal | F&O positions (hold overnight) |
MIS | Intraday | Auto square-off at market close |
Price Types
| Code | Description |
|---|---|
MARKET | Market Order (immediate execution) |
LIMIT | Limit Order (specify price) |
SL | Stop Loss Limit Order |
SL-M | Stop Loss Market Order |
Actions
| Code | Description |
|---|---|
BUY | Buy order |
SELL | Sell order |
Core API Methods
1. Place Order
Place a single order with full control over parameters:
response = client.placeorder(
strategy="MyStrategy",
symbol="RELIANCE",
action="BUY",
exchange="NSE",
price_type="MARKET",
product="MIS",
quantity=1
)
# Response: {'orderid': '250408000989443', 'status': 'success'}
Limit Order Example:
response = client.placeorder(
strategy="MyStrategy",
symbol="YESBANK",
action="BUY",
exchange="NSE",
price_type="LIMIT",
product="MIS",
quantity=1,
price=16.50,
trigger_price=0,
disclosed_quantity=0
)
Stop Loss Order Example:
response = client.placeorder(
strategy="MyStrategy",
symbol="SBIN",
action="SELL",
exchange="NSE",
price_type="SL",
product="MIS",
quantity=10,
price=750, # Limit price
trigger_price=752 # Trigger price
)
2. Smart Order (Position-Aware)
Automatically adjusts order quantity based on current position:
response = client.placesmartorder(
strategy="SmartBot",
symbol="TATAMOTORS",
action="SELL",
exchange="NSE",
price_type="MARKET",
product="MIS",
quantity=1,
position_size=5 # Desired final position
)
# If current position is 0, sells 5 to reach -5
# If current position is 3, sells 8 to reach -5
Use Cases:
- Rebalancing: Set
position_sizeto target position - Reversal: Set
actionopposite to current direction - Scale-in/out: Adjust
quantitydynamically
3. Basket Order
Execute multiple orders simultaneously:
basket_orders = [
{
"symbol": "INFY",
"exchange": "NSE",
"action": "BUY",
"quantity": 1,
"pricetype": "MARKET",
"product": "MIS"
},
{
"symbol": "TCS",
"exchange": "NSE",
"action": "BUY",
"quantity": 1,
"pricetype": "MARKET",
"product": "MIS"
},
{
"symbol": "WIPRO",
"exchange": "NSE",
"action": "BUY",
"quantity": 1,
"pricetype": "MARKET",
"product": "MIS"
}
]
response = client.basketorder(orders=basket_orders)
# Response includes status for each order
4. Split Order
Break large orders into smaller chunks to avoid market impact:
response = client.splitorder(
symbol="YESBANK",
exchange="NSE",
action="SELL",
quantity=500,
splitsize=100, # Each order will be max 100
price_type="MARKET",
product="MIS"
)
# Creates 5 orders of 100 each
Response:
{
"status": "success",
"split_size": 100,
"total_quantity": 500,
"results": [
{"order_num": 1, "orderid": "123", "quantity": 100, "status": "success"},
{"order_num": 2, "orderid": "124", "quantity": 100, "status": "success"},
...
]
}
Order Management
Modify Order
response = client.modifyorder(
order_id="250408001002736",
strategy="MyStrategy",
symbol="YESBANK",
action="BUY",
exchange="NSE",
price_type="LIMIT",
product="MIS",
quantity=1,
price=17.00 # New price
)
Cancel Order
response = client.cancelorder(
order_id="250408001002736",
strategy="MyStrategy"
)
Cancel All Orders
response = client.cancelallorder(strategy="MyStrategy")
# Cancels all open and trigger-pending orders
Close All Positions
response = client.closeposition(strategy="MyStrategy")
# Squares off all open positions
Get Order Status
response = client.orderstatus(
order_id="250408001002736",
strategy="MyStrategy"
)
# Returns: order_status, average_price, quantity, timestamp
Get Open Position
response = client.openposition(
strategy="MyStrategy",
symbol="RELIANCE",
exchange="NSE",
product="MIS"
)
# Returns: {'quantity': '10', 'status': 'success'}
Symbol Format
OpenAlgo uses standardized symbol formats across all brokers:
Equity
RELIANCE,INFY,TCS,SBIN
Futures
- Format:
[SYMBOL][DDMMMYY]FUT - Examples:
NIFTY30JAN25FUT,BANKNIFTY30JAN25FUT
Options
- Format:
[SYMBOL][DDMMMYY][STRIKE][CE/PE] - Examples:
NIFTY30JAN2526000CE,BANKNIFTY30JAN2555000PE
Common Patterns
Intraday Scalping
# Entry
entry = client.placeorder(
strategy="Scalper",
symbol="SBIN",
action="BUY",
exchange="NSE",
price_type="MARKET",
product="MIS",
quantity=100
)
# Exit with profit target (use limit order)
exit_order = client.placeorder(
strategy="Scalper",
symbol="SBIN",
action="SELL",
exchange="NSE",
price_type="LIMIT",
product="MIS",
quantity=100,
price=current_price * 1.005 # 0.5% profit
)
Swing Trading Entry
response = client.placeorder(
strategy="SwingTrader",
symbol="TATASTEEL",
action="BUY",
exchange="NSE",
price_type="LIMIT",
product="CNC", # Delivery
quantity=10,
price=150.00
)
Risk Management - Stop Loss
# Place stop loss immediately after entry
sl_order = client.placeorder(
strategy="Scalper",
symbol="SBIN",
action="SELL",
exchange="NSE",
price_type="SL-M",
product="MIS",
quantity=100,
trigger_price=entry_price * 0.995 # 0.5% stop loss
)
Error Handling
response = client.placeorder(...)
if response.get('status') == 'success':
print(f"Order placed: {response['orderid']}")
else:
print(f"Error: {response.get('message', 'Unknown error')}")
Notes
- Always verify
OPENALGO_API_KEYis set before trading - Use
MISfor intraday,CNC/NRMLfor positional trades - Test with small quantities first
- Use Analyzer mode for paper trading:
client.analyzertoggle(mode=True)
What ships with it: 5 files
20.7 KB alongside SKILL.md, 4 of them executable
scripts/
- basket_order.pyruns5.6 KB
- place_order.pyruns5.3 KB
- smart_order.pyruns4.8 KB
- split_order.pyruns4.9 KB
- requirements.txt23 B
Gives 0 of the 12 instructions most finance skills give in ~2.2k tokens
Counted across 469 of the 469 authors here whose files we hold, read 2026-08-07
- Extract date vendor amount and descriptionin 15 of 469, across 3 files
- Scan folder for invoice filesin 14 of 469, across 2 files
- Rename files to standard formatin 14 of 469, across 2 files
- Show organization plan before movingin 14 of 469, across 2 files
- Generate summary CSVin 14 of 469, across 2 files
- Organize files by categoryin 13 of 469, across 1 file
- Preserve original filesin 13 of 469, across 1 file
- Flag files missing critical infoin 13 of 469, across 1 file
- Produce the requested output filein 9 of 469, across 4 files
- Build best, base, and worst case scenariosin 9 of 469, across 5 files
- Implement backoff if rate limit errors occurin 8 of 469, across 3 files
- Determine the weighted average cost of capitalin 8 of 469, across 4 files
Said here and by no other author read
- Activate analyzer mode for paper trading
- verify OPENALGO_API_KEY is set before trading
- use MIS for intraday trades
- use CNC or NRML for positional trades
- test with small quantities first
- place stop loss immediately after entry
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.