Create and manage grid trading strategies with OpenMM. Automated buy/sell around center price.
Create automated grid trading strategies that profit from market volatility.
Grid trading places multiple buy and sell orders at preset price intervals around the current center price. As price oscillates, the bot automatically:
The grid uses levels per side and spacing to distribute orders. With 5 levels and 2% spacing (linear), orders are placed at 2%, 4%, 6%, 8%, 10% from center on both sides (10 total orders).
Good for:
Avoid when:
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT --dry-run
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT \
--levels 5 \
--spacing 0.02 \
--size 50 \
--max-position 0.6 \
--safety-reserve 0.3
Press Ctrl+C to gracefully stop. The system will:
--strategy grid — Specifies grid trading strategy--exchange <exchange> — Exchange to trade on (mexc, bitget, gateio, kraken)--symbol <symbol> — Trading pair (e.g., INDY/USDT, SNEK/USDT, ADA/EUR)| Parameter | Description | Default |
|---|---|---|
--levels <number> | Grid levels each side (max: 10, total = levels x 2) | 5 |
--spacing <decimal> | Base price spacing between levels (0.02 = 2%) | 0.02 |
--size <number> | Base order size in quote currency | 50 |
--confidence <decimal> | Minimum price confidence to trade | 0.6 |
--deviation <decimal> | Price deviation to trigger grid recreation | 0.015 |
--debounce <ms> | Delay between grid adjustments | 2000 |
--max-position <decimal> | Max position size as % of balance | 0.8 |
--safety-reserve <decimal> | Safety reserve as % of balance | 0.2 |
--dry-run | Simulate without placing real orders | — |
| Parameter | Description | Default |
|---|---|---|
--spacing-model <model> | linear, geometric, or custom | linear |
--spacing-factor <number> | Geometric spacing multiplier per level | 1.3 |
--size-model <model> | flat, pyramidal, or custom | flat |
--grid-profile <path> | Load grid config from a JSON profile file | — |
| Parameter | Description | Default |
|---|---|---|
--volatility | Enable volatility-based spread adjustment | off |
--volatility-low <decimal> | Low volatility threshold | 0.02 |
--volatility-high <decimal> | High volatility threshold | 0.05 |
Linear (default): Equal spacing between all levels.
With --spacing 0.02 and 5 levels:
Level 1: 2% from center
Level 2: 4% from center
Level 3: 6% from center
Level 4: 8% from center
Level 5: 10% from center
Geometric: Tighter spacing near center, wider gaps at outer levels.
openmm trade --strategy grid --exchange kraken --symbol BTC/USD \
--levels 5 --spacing 0.005 --spacing-model geometric --spacing-factor 1.5
Level 1: 0.50% from center
Level 2: 1.25% from center
Level 3: 2.38% from center
Level 4: 4.06% from center
Level 5: 6.59% from center
Custom: Define exact spacing offsets per level using a grid profile JSON file.
Flat (default): All levels get equal order sizes.
Pyramidal: Larger orders near center price where fills are more likely, tapering at outer levels.
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT \
--levels 5 --size 50 --size-model pyramidal
JSON files for complete grid configuration:
{
"name": "balanced-geometric",
"description": "Geometric spacing with pyramidal sizing",
"levels": 10,
"spacingModel": "geometric",
"baseSpacing": 0.005,
"spacingFactor": 1.3,
"sizeModel": "pyramidal",
"baseSize": 50
}
openmm trade --strategy grid --exchange gateio --symbol SNEK/USDT \
--grid-profile ./profiles/balanced-geometric.json
When enabled, the grid automatically widens during volatile conditions and tightens when the market calms. Tracks price changes over a 5-minute rolling window.
openmm trade --strategy grid --exchange mexc --symbol INDY/USDT \
--levels 10 \
--spacing 0.005 \
--spacing-model geometric \
--spacing-factor 1.3 \
--size-model pyramidal \
--size 5 \
--volatility
openmm trade --strategy grid --exchange bitget --symbol SNEK/USDT \
--levels 2 \
--spacing 0.02 \
--size 20
openmm trade --strategy grid --exchange mexc --symbol BTC/USDT \
--levels 7 \
--spacing 0.005 \
--size 25
openmm trade --strategy grid --exchange kraken --symbol SNEK/EUR \
--levels 10 \
--spacing 0.005 \
--spacing-model geometric \
--spacing-factor 1.5 \
--size-model pyramidal \
--size 5
--max-position — Maximum % of balance used for trading (default: 80%)--safety-reserve — % of balance kept as reserve (default: 20%)--confidence — Minimum price confidence required (default: 60%)--deviation)MEXC/Gate.io: Minimum order value 1 USDT per order Bitget: Minimum 1 USDT. Requires API key, secret, and passphrase. 6 decimal price precision for SNEK/NIGHT pairs. Kraken: Minimum 5 EUR/USD per order. Supports major fiat pairs (EUR, USD, GBP).
openmm balance --exchange <ex>openmm ticker --exchange <ex> --symbol <sym>--size divided by --levels meets exchange minimums