🔴 Place SELL STOP using Points Offset¶
Convenience method: places a SELL STOP order using points offset from current Bid price. Automatically calculates entry price and SL/TP levels for breakdown trading. Easier than manual price calculation.
API Information:
- Sugar method:
MT5Sugar.sellStopPoints(String symbol, double volume, double pointsOffset, double stopLossPoints, double takeProfitPoints) - Underlying methods:
sellStop()- underlying pending order methodMT5Service.symbolInfoTick()- get current pricesgetPoint()- get point size- Source: MT5Sugar convenience layer
🔽 Input¶
| Parameter | Type | Required | Description |
|---|---|---|---|
symbol |
String |
✅ | Symbol name (e.g., "EURUSD") |
volume |
double |
✅ | Volume in lots (e.g., 0.1) |
pointsOffset |
double |
✅ | Points offset from Bid (negative = below price) |
stopLossPoints |
double |
✅ | SL distance in points (0 = no SL) |
takeProfitPoints |
double |
✅ | TP distance in points (0 = no TP) |
⬆️ Output¶
Returns: long - Order ticket number (pending order ticket)
Throws: ApiExceptionMT5 if order fails (contains error code and description)
Execution:
- Automatically calculates entry price: Bid + (pointsOffset * point)
- Automatically calculates SL: entry + (stopLossPoints * point)
- Automatically calculates TP: entry - (takeProfitPoints * point)
- Places SELL STOP order with calculated prices
💬 Just the essentials¶
- What it is. SELL STOP with automatic price calculation from points (breakdown entry).
- Why you need it. Simpler breakdown orders - just specify points below current price.
- Auto-handled. All price calculations, symbol selection, normalization.
- Use case. Support breakdowns, momentum trading, downward breakouts.
🎯 Purpose¶
Use this method when you need to:
- Place SELL STOP without calculating exact prices.
- Set breakdown orders using point offsets.
- Simplify momentum trading setup.
- Standardize breakdown distance across symbols.
🔗 Usage Examples¶
1) Simple SELL STOP 50 points below¶
String symbol = "EURUSD";
double volume = 0.1;
// Sell on breakdown 50 points below Bid, SL=50p, TP=150p
long ticket = sugar.sellStopPoints(symbol, volume, -50, 50, 150);
System.out.printf("SELL STOP order placed: #%d%n", ticket);
System.out.printf("Entry: 50 points below Bid (breakdown)%n");
System.out.printf("SL: 50 points above entry%n");
System.out.printf("TP: 150 points below entry%n");
// Output:
// SELL STOP order placed: #123456789
// Entry: 50 points below Bid (breakdown)
// SL: 50 points above entry
// TP: 150 points below entry
2) SELL STOP breakdown with 1:2 risk/reward¶
String symbol = "GBPUSD";
double volume = 0.5;
int breakdownOffset = -100; // 100 points below Bid
int slPoints = 60; // 60 points SL
int tpPoints = 120; // 120 points TP (1:2 R/R)
long ticket = sugar.sellStopPoints(symbol, volume, breakdownOffset, slPoints, tpPoints);
double bid = sugar.getBid(symbol);
double point = sugar.getPoint(symbol);
double entry = bid + (breakdownOffset * point);
System.out.printf("SELL STOP breakdown %s: %.2f lots%n", symbol, volume);
System.out.printf(" Current Bid: %.5f%n", bid);
System.out.printf(" Breakdown entry: %.5f (%d points below)%n", entry, Math.abs(breakdownOffset));
System.out.printf(" Risk/Reward: 1:%.1f%n", (double) tpPoints / slPoints);
System.out.printf(" Ticket: #%d%n", ticket);
3) Multiple SELL STOP orders (breakdown cascade)¶
String symbol = "EURUSD";
double volume = 0.01;
int slPoints = 40;
int tpPoints = 120;
System.out.printf("Placing SELL STOP cascade:%n");
// Place orders at -50, -100, -150 points (different breakdown levels)
for (int i = 1; i <= 3; i++) {
int offset = -50 * i;
long ticket = sugar.sellStopPoints(symbol, volume, offset, slPoints, tpPoints);
System.out.printf(" Level %d: #%d at %d points below Bid%n", i, ticket, Math.abs(offset));
}
// Output:
// Placing SELL STOP cascade:
// Level 1: #111 at 50 points below Bid
// Level 2: #222 at 100 points below Bid
// Level 3: #333 at 150 points below Bid
4) SELL STOP without SL/TP¶
String symbol = "USDJPY";
double volume = 0.1;
int breakdownOffset = -30; // 30 points below
// No SL/TP (pass 0)
long ticket = sugar.sellStopPoints(symbol, volume, breakdownOffset, 0, 0);
System.out.printf("✅ SELL STOP placed: #%d%n", ticket);
System.out.printf(" Breakdown: %d points below Bid%n", Math.abs(breakdownOffset));
System.out.printf(" No SL/TP (manual management)%n");
5) SELL STOP on support breakdown¶
String symbol = "XAUUSD";
double volume = 0.01;
double bid = sugar.getBid(symbol);
double supportLevel = 2500.0;
double point = sugar.getPoint(symbol);
// Calculate offset to support - buffer
int pointsToSupport = (int) ((supportLevel - bid) / point);
int breakdownBuffer = -10; // 10 points below support
int totalOffset = pointsToSupport + breakdownBuffer;
// Place order with SL above support
long ticket = sugar.sellStopPoints(symbol, volume, totalOffset, 60, 200);
System.out.printf("✅ SELL STOP on support breakdown:%n");
System.out.printf(" Current Bid: %.2f%n", bid);
System.out.printf(" Support: %.2f%n", supportLevel);
System.out.printf(" Entry offset: %d points (support - %d buffer)%n",
totalOffset, Math.abs(breakdownBuffer));
System.out.printf(" Ticket: #%d%n", ticket);
6) SELL STOP with tight SL for scalping¶
String symbol = "EURUSD";
double volume = 0.2;
int breakdownOffset = -20; // Small breakdown
int slPoints = 15; // Tight SL
int tpPoints = 30; // Quick TP
long ticket = sugar.sellStopPoints(symbol, volume, breakdownOffset, slPoints, tpPoints);
System.out.printf("Scalping SELL STOP:%n");
System.out.printf(" Entry: %d points below Bid%n", Math.abs(breakdownOffset));
System.out.printf(" SL: %d points (tight)%n", slPoints);
System.out.printf(" TP: %d points (quick)%n", tpPoints);
System.out.printf(" R/R: 1:%.1f%n", (double) tpPoints / slPoints);
System.out.printf(" Ticket: #%d%n", ticket);
📌 Important Notes¶
- Points offset:
- Negative offset = below current Bid (typical for SELL STOP)
- Positive offset would place order above Bid (invalid for SELL STOP)
-
Entry price =
Bid + (pointsOffset * point) -
Stop Loss calculation:
- SL distance is above entry for SELL
SL = entry + (stopLossPoints * point)- Often placed above support level
-
Pass
0for no stop loss -
Take Profit calculation:
- TP distance is below entry for SELL
TP = entry - (takeProfitPoints * point)-
Pass
0for no take profit -
Breakdown trading:
- Used for downward momentum and support breakdowns
- Entry confirms bearish direction
-
Typically with tight SL above support
-
Automatic price fetching:
- Method fetches current Bid automatically
- No need to call
getBid()manually -
Prices calculated at order placement time
-
vs sellStop():
sellStop()- requires absolute pricessellStopPoints()- requires only point offsets- This method is simpler for breakdown setups
Calculation flow:
// What happens internally:
Bid = 1.12340
point = 0.00001
pointsOffset = -50 (breakdown level)
entry = Bid + (pointsOffset × point)
= 1.12340 + (-50 × 0.00001)
= 1.12340 - 0.00050
= 1.12290 (breakdown entry)
SL = entry + (stopLossPoints × point)
= 1.12290 + (40 × 0.00001)
= 1.12290 + 0.00040
= 1.12330 (above support)
TP = entry - (takeProfitPoints × point)
= 1.12290 - (120 × 0.00001)
= 1.12290 - 0.00120
= 1.12170 (profit target)
Common patterns:
// Pattern 1: Breakdown with SL/TP
sugar.sellStopPoints(symbol, volume, -50, 40, 120);
// Pattern 2: Breakdown without SL/TP
sugar.sellStopPoints(symbol, volume, -50, 0, 0);
// Pattern 3: Tight scalping
sugar.sellStopPoints(symbol, volume, -20, 15, 30);
// Pattern 4: Wide swing trading
sugar.sellStopPoints(symbol, volume, -100, 80, 200);
SELL STOP vs SELL LIMIT:
| Aspect | SELL STOP | SELL LIMIT |
|---|---|---|
| Offset direction | Negative (below) | Positive (above) |
| Use case | Breakdown trading | Sell at premium |
| Entry timing | Price drops | Price rises |
| Psychology | Sell momentum | Sell rallies |
See also¶
- Absolute price version:
sellStop()- use exact prices - Related points methods:
buyLimitPoints(),sellLimitPoints(),buyStopPoints() - Market order:
sellMarket() - Price helpers:
getPoint(),getBid() - Risk management:
calculateVolume()