RSI Session & Risk ManagerThis is a disciplined RSI mean-reversion strategy designed for traders who prioritize risk management and session confluence. Instead of trading 24/7, this strategy focuses on high-liquidity market sessions (London, New York, etc.) and uses dynamic position sizing to ensure a consistent dollar-amount risk per trade.
How it Works:
Entry Logic: The strategy triggers a Long when the RSI crosses above the Oversold level (30) and a Short when it crosses below the Overbought level (70).
Session Filtering: Built-in filters allow you to restrict trading to specific days of the week and specific market hours (NY, London, Tokyo, or Sydney sessions).
Force Close: An optional feature to automatically close open positions at the end of a trading session to avoid overnight gap risk.
Pro-Level Risk Management:
Dynamic Sizing: The script automatically calculates your position size based on a fixed dollar risk (e.g., $5 per trade).
Technical Stops: Stop losses are automatically placed at the high (for shorts) or low (for longs) of the entry candle.
Fixed Reward-to-Risk: Trades are executed with a customizable R:R ratio (default 2.0), ensuring your winners are twice the size of your losses.
Visual Features:
Real-time TP/SL lines while a trade is active.
Post-trade labels indicating "Win" or "Loss" markers.
Clean, organized input menu for easy optimization.
Best Used On:
Timeframes: 5m, 15m, or 1h.
Assets: Forex pairs, Indices (US30, NAS100), and liquid Crypto pairs.
Candlestick analysis
RSI + Smoothed HA Strategy 🚀 RSI + SMOOTHED HEIKEN ASHI STRATEGY (TRAILING TP, 1% SL) 📊
🎯 STRATEGY OVERVIEW
This professional trading strategy combines MOMENTUM ANALYSIS with TREND CONFIRMATION using two powerful technical indicators. The system executes LONG-ONLY POSITIONS when bullish conditions align, featuring AUTOMATED RISK MANAGEMENT with a fixed stop loss and dynamic trailing exit.
⚙️ CORE COMPONENTS
📈 INDICATOR 1: RELATIVE STRENGTH INDEX (RSI)
CALCULATION: Standard 14-period RSI (configurable)
ENTRY THRESHOLD: 55 LEVEL (adjustable parameter)
PURPOSE: Identifies MOMENTUM STRENGTH and OVERBOUGHT CONDITIONS
VISUAL: Blue RSI line with gray threshold level plotted separately
🕯️ INDICATOR 2: DOUBLE-SMOOTHED HEIKEN ASHI
UNIQUE FEATURE: DOUBLE EMA SMOOTHING applied to Heiken Ashi candles
SMOOTHING LAYERS:
FIRST LAYER: EMA applied to raw OHLC data (default: 10 periods)
SECOND LAYER: EMA applied to Heiken Ashi values (default: 10 periods)
COLOR SCHEME:
🟢 LIME GREEN: Bullish candle (close > open)
🔴 RED: Bearish candle (close < open)
BENEFIT: REDUCES MARKET NOISE while maintaining trend clarity
🎮 ENTRY CONDITIONS
📈 LONG POSITIONS ACTIVATE WHEN ALL THREE CONDITIONS CONVERGE:
RSI MOMENTUM: RSI ≥ 55 (configurable level)
TREND CONFIRMATION: Current smoothed Heiken Ashi candle is GREEN
TREND REVERSAL SIGNAL: Previous smoothed Heiken Ashi candle was RED
✅ ENTRY LOGIC: This triple-filter approach ensures trades are taken only during CONFIRMED BULLISH SHIFTS with underlying momentum strength.
🛡️ RISK MANAGEMENT SYSTEM
⛔ STOP LOSS PROTECTION
FIXED 1% RISK PER TRADE
AUTOMATIC CALCULATION: Stop placed at 99% of entry price
IMMEDIATE ACTIVATION: Engages upon position entry
BENEFIT: CAPS MAXIMUM LOSS regardless of market volatility
💰 TRAILING TAKE-PROFIT MECHANISM
DYNAMIC EXIT STRATEGY: Tracks trend continuation
EXIT CONDITION: Closes position when smoothed Heiken Ashi turns RED
ADVANTAGE: LOCKS IN PROFITS during trend reversals
LOGIC: Allows winners to run while protecting gains
💼 POSITION SIZING
CAPITAL ALLOCATION: 10% of equity per trade (fully customizable)
INITIAL CAPITAL: $10,000 (user-adjustable)
FLEXIBILITY: Compatible with various account sizes
✨ KEY ADVANTAGES
🎯 PRECISE TIMING
Combines MOMENTUM FILTER (RSI) with TREND FILTER (Heiken Ashi)
Reduces false signals through CONFIRMATION SEQUENCE
🛡️ DISCIPLINED RISK CONTROL
PREDEFINED 1% STOP LOSS eliminates emotional decisions
SYSTEMATIC EXITS remove subjective profit-taking
👁️ VISUAL CLARITY
CLEAN CHART PLOTTING with color-coded candles
SEPARATE RSI DISPLAY for momentum monitoring
REAL-TIME SIGNALS directly on price chart
⚡ OPTIMIZATION TIPS
ADJUST RSI LEVEL based on asset volatility (55-70 range)
MODIFY SMOOTHING PERIODS for different timeframes
TEST POSITION SIZE according to risk tolerance
COMBINE WITH VOLUME CONFIRMATION for enhanced accuracy
📊 RECOMMENDED MARKETS
TRENDING FOREX PAIRS (EUR/USD, GBP/USD)
LIQUID INDICES (S&P 500, NASDAQ)
HIGH-CAP CRYPTO (BTC/USD, ETH/USD)
TIME FRAMES: 1-hour to daily charts
⚠️ RISK DISCLAIMER
This strategy is a TOOL FOR ANALYSIS, not financial advice. Always:
BACKTEST extensively before live trading
START WITH SMALL CAPITAL
USE PROPER RISK MANAGEMENT
CONSULT FINANCIAL PROFESSIONALS
ATR + BB Swing StrategyMechanical daily stock swing strategy using ATR stops, Heikin Ashi trend confirmation, and Bollinger Bands context. Entries occur above 50 SMA on bullish Heikin Ashi candles; initial stop is 3xATR with trailing stop of highest close minus 2xAtr, reducing to 1.5xATR when profit protection triggers (+2R and momentum weakening). Exits are fully ATR-based, giving a simple, rules-driven approach to ride trends while protecting gains
GOLD TERTIUM estrategiaThis indicator is a visual tool for TradingView designed to help you read trend structure using EMAs and highlight potential long and short entries on the MGC 1‑minute chart, while filtering pullbacks and avoiding trades when the 200 EMA is flat.
It calculates five EMAs (32, 50, 110, 200, 250) and plots them in different colors so you can clearly see the moving‑average stack and overall direction. The main trend is defined by the 200 EMA: bullish when price and the fast EMAs (32 and 50) are above it with a positive slope, and bearish when they are below it with a negative slope; if the 200 EMA is almost flat, signals are blocked to reduce trading in choppy markets.
TJR asia session sweep//@version=5
strategy("TJR asia session sweep", "TJR Asia Sweep", overlay=true, max_lines_count=500, max_labels_count=500)
// Input settings
show_asian = input.bool(true, "Show Asian Session", group="Visual Settings")
show_london = input.bool(true, "Show London Session", group="Visual Settings")
show_swing_points = input.bool(true, "Show Asian Swing Points", group="Visual Settings")
show_market_structure = input.bool(true, "Show Market Structure", group="Visual Settings")
show_bos = input.bool(true, "Show Break of Structure", group="Visual Settings")
// Session Time Settings
asian_start_hour_input = input.int(22, "Asian Session Start Hour", minval=0, maxval=23, group="Session Times")
asian_end_hour_input = input.int(3, "Asian Session End Hour", minval=0, maxval=23, group="Session Times")
london_start_hour_input = input.int(3, "London Session Start Hour", minval=0, maxval=23, group="Session Times")
london_end_hour_input = input.int(8, "London Session End Hour", minval=0, maxval=23, group="Session Times")
session_timezone = input.string("America/New_York", "Session Timezone", options= , group="Session Times")
// Risk Management Settings
use_atr_sl = input.bool(false, "Use ATR Multiplier for Stop Loss", group="Risk Management")
atr_length = input.int(14, "ATR Length", minval=1, maxval=50, group="Risk Management")
atr_multiplier = input.float(2.0, "ATR Multiplier for Stop Loss", minval=0.5, maxval=10.0, group="Risk Management")
force_london_close = input.bool(true, "Force Close at London Session End", group="Risk Management")
cutoff_minutes = input.int(60, "Minutes Before Session End to Stop New Trades", minval=0, maxval=300, group="Risk Management")
// Position Sizing Settings
position_sizing_method = input.string("USD Risk", "Position Sizing Method", options= , group="Position Sizing")
usd_risk_per_trade = input.float(100.0, "USD Risk Per Trade", minval=1.0, maxval=10000.0, group="Position Sizing")
fixed_contracts = input.float(1.0, "Fixed Number of Contracts", minval=0.01, maxval=1000.0, step=0.01, group="Position Sizing")
// Color settings
asian_color = input.color(color.red, "Asian Session Color")
london_color = input.color(color.blue, "London Session Color")
swing_high_color = input.color(color.orange, "Swing High Color")
swing_low_color = input.color(color.lime, "Swing Low Color")
bullish_structure_color = input.color(color.green, "Bullish Structure Color")
bearish_structure_color = input.color(color.red, "Bearish Structure Color")
bos_color = input.color(color.orange, "Break of Structure Color")
// Line settings
line_width = input.int(2, "Line Width", minval=1, maxval=5)
// ATR calculation for stop loss
atr = ta.atr(atr_length)
// Position size calculation function
calculate_position_size(entry_price, stop_loss_price) =>
var float position_size = na
if position_sizing_method == "Fixed Contracts"
position_size := fixed_contracts
else // USD Risk method
stop_distance = math.abs(entry_price - stop_loss_price)
if stop_distance > 0
// Calculate position size based on USD risk per trade
// For forex: position_size = risk_amount / (stop_distance * point_value)
// For most forex pairs, point value = 1 (since we're dealing with price differences directly)
position_size := usd_risk_per_trade / stop_distance
else
position_size := fixed_contracts // Fallback to fixed contracts if stop distance is 0
position_size
// Session time definitions (using input variables)
asian_start_hour = asian_start_hour_input
asian_end_hour = asian_end_hour_input
london_start_hour = london_start_hour_input
london_end_hour = london_end_hour_input
// Get current hour using selected timezone
current_hour = hour(time, session_timezone)
// Previous hour for transition detection
prev_hour = hour(time , session_timezone)
// Session transition detection
asian_start = current_hour == asian_start_hour and prev_hour != asian_start_hour
asian_end = current_hour == asian_end_hour and prev_hour != asian_end_hour
london_start = current_hour == london_start_hour and prev_hour != london_start_hour
london_end = current_hour == london_end_hour and prev_hour != london_end_hour
// Session activity detection
asian_active = (current_hour >= asian_start_hour) or (current_hour < asian_end_hour)
london_active = (current_hour >= london_start_hour) and (current_hour < london_end_hour)
// Session boxes - keep previous sessions visible
var box asian_session_box = na
var box london_session_box = na
// Create Asian session box
if show_asian and asian_start
// Create new box at session start (previous box remains visible)
asian_session_box := box.new(bar_index, high, bar_index + 1, low,
border_color=asian_color, bgcolor=color.new(asian_color, 90),
border_width=2, border_style=line.style_solid)
// Pre-calculate session highs and lows for consistency
asian_session_length = asian_active and not na(asian_session_box) ? bar_index - box.get_left(asian_session_box) + 1 : 1
current_asian_high = ta.highest(high, asian_session_length)
current_asian_low = ta.lowest(low, asian_session_length)
// Update Asian session box continuously during session
if show_asian and asian_active and not na(asian_session_box)
box.set_right(asian_session_box, bar_index)
// Update box to contain session highs and lows
box.set_top(asian_session_box, current_asian_high)
box.set_bottom(asian_session_box, current_asian_low)
// Create London session box
if show_london and london_start
// Create new box at session start (previous box remains visible)
london_session_box := box.new(bar_index, high, bar_index + 1, low,
border_color=london_color, bgcolor=color.new(london_color, 90),
border_width=2, border_style=line.style_solid)
// Pre-calculate London session highs and lows for consistency
london_session_length = london_active and not na(london_session_box) ? bar_index - box.get_left(london_session_box) + 1 : 1
current_london_high = ta.highest(high, london_session_length)
current_london_low = ta.lowest(low, london_session_length)
// Update London session box continuously during session
if show_london and london_active and not na(london_session_box)
box.set_right(london_session_box, bar_index)
// Update box to contain session highs and lows
box.set_top(london_session_box, current_london_high)
box.set_bottom(london_session_box, current_london_low)
// Asian Session Swing Points Detection
var float asian_session_high = na
var float asian_session_low = na
var int asian_high_bar = na
var int asian_low_bar = na
// Asian Session Absolute High/Low for TP levels
var float asian_absolute_high = na
var float asian_absolute_low = na
var line asian_high_line = na
var line asian_low_line = na
var label asian_high_label = na
var label asian_low_label = na
var bool high_broken = false
var bool low_broken = false
// London Session High/Low tracking for stop loss
var float london_session_high = na
var float london_session_low = na
// Market structure tracking variables
var string breakout_direction = na // "bullish" or "bearish"
var float last_hh_level = na // Last Higher High level
var float last_hl_level = na // Last Higher Low level
var float last_ll_level = na // Last Lower Low level
var float last_lh_level = na // Last Lower High level
var int structure_count = 0
var string last_structure_type = na // "HH", "HL", "LL", "LH"
// Legacy variables for compatibility
var float last_swing_high = na
var float last_swing_low = na
var int last_high_bar = na
var int last_low_bar = na
// Market structure state tracking
var float pending_high = na
var float pending_low = na
var int pending_high_bar = na
var int pending_low_bar = na
var bool waiting_for_confirmation = false
// Break of Structure tracking variables
var float most_recent_hl = na
var float most_recent_lh = na
var int most_recent_hl_bar = na
var int most_recent_lh_bar = na
var bool bos_detected = false
// Trading variables
var bool trade_taken = false
// Trade visualization boxes (based on Casper strategy approach)
var box current_profit_box = na
var box current_sl_box = na
// Update swing points during Asian session
if asian_active and show_swing_points
// Always track absolute high/low for both TP levels and breakout detection
if na(asian_absolute_high) or high > asian_absolute_high
asian_absolute_high := high
if na(asian_absolute_low) or low < asian_absolute_low
asian_absolute_low := low
// Use absolute high/low for breakout levels (simplified logic)
if na(asian_session_high) or high > asian_session_high
asian_session_high := high
asian_high_bar := bar_index
if na(asian_session_low) or low < asian_session_low
asian_session_low := low
asian_low_bar := bar_index
// Track London session high/low for stop loss levels
if london_active
if na(london_session_high) or high > london_session_high
london_session_high := high
if na(london_session_low) or low < london_session_low
london_session_low := low
// Draw initial lines when Asian session ends
if asian_end and show_swing_points
if not na(asian_session_high) and not na(asian_high_bar)
// Draw extending line for high
asian_high_line := line.new(asian_high_bar, asian_session_high, bar_index + 200, asian_session_high,
color=swing_high_color, width=2, style=line.style_dashed, extend=extend.right)
asian_high_label := label.new(bar_index + 5, asian_session_high, "Asian High: " + str.tostring(asian_session_high, "#.####"), style=label.style_label_left, color=swing_high_color, textcolor=color.white, size=size.small)
if not na(asian_session_low) and not na(asian_low_bar)
// Draw extending line for low
asian_low_line := line.new(asian_low_bar, asian_session_low, bar_index + 200, asian_session_low,
color=swing_low_color, width=2, style=line.style_dashed, extend=extend.right)
asian_low_label := label.new(bar_index + 5, asian_session_low, "Asian Low: " + str.tostring(asian_session_low, "#.####"), style=label.style_label_left, color=swing_low_color, textcolor=color.white, size=size.small)
// Reset break flags for new session
high_broken := false
low_broken := false
// Check for breakouts during London session
if london_active and show_swing_points and not na(asian_session_high) and not na(asian_session_low)
// Check if Asian high is broken
if not high_broken and not low_broken and high > asian_session_high
high_broken := true
// Update high line to end at break point
if not na(asian_high_line)
line.set_x2(asian_high_line, bar_index)
line.set_extend(asian_high_line, extend.none)
// Remove the low line (first break wins)
if not na(asian_low_line)
line.delete(asian_low_line)
if not na(asian_low_label)
label.delete(asian_low_label)
// Add break marker
label.new(bar_index, asian_session_high * 1.001, "HIGH BREAK!",
style=label.style_label_down, color=color.red, textcolor=color.white, size=size.normal)
// Set breakout direction and initialize structure tracking
breakout_direction := "bullish"
last_swing_high := asian_session_high
last_swing_low := asian_session_low
last_high_bar := bar_index
structure_count := 0
// Check if Asian low is broken
if not low_broken and not high_broken and low < asian_session_low
low_broken := true
// Update low line to end at break point
if not na(asian_low_line)
line.set_x2(asian_low_line, bar_index)
line.set_extend(asian_low_line, extend.none)
// Remove the high line (first break wins)
if not na(asian_high_line)
line.delete(asian_high_line)
if not na(asian_high_label)
label.delete(asian_high_label)
// Add break marker
label.new(bar_index, asian_session_low * 0.999, "LOW BREAK!",
style=label.style_label_up, color=color.red, textcolor=color.white, size=size.normal)
// Set breakout direction and initialize structure tracking
breakout_direction := "bearish"
last_swing_high := asian_session_high
last_swing_low := asian_session_low
last_low_bar := bar_index
structure_count := 0
// Stop extending lines when London session ends (if not already broken)
if london_end and show_swing_points
if not high_broken and not na(asian_high_line)
line.set_x2(asian_high_line, bar_index)
line.set_extend(asian_high_line, extend.none)
if not low_broken and not na(asian_low_line)
line.set_x2(asian_low_line, bar_index)
line.set_extend(asian_low_line, extend.none)
// Force close all trades at London session end (if enabled)
if london_end and force_london_close
if strategy.position_size != 0
// Extend boxes immediately before session close to prevent timing issues
if not na(current_profit_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na // Clear reference after extending
if not na(current_sl_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na // Clear reference after extending
strategy.close_all(comment="London Close")
trade_taken := false // Reset trade flag for next session
// Market structure detection after breakout (only during London session and before first BoS)
if show_market_structure and not na(breakout_direction) and london_active and not bos_detected
// Bullish structure tracking (HH, HL alternating)
if breakout_direction == "bullish"
// Check for Higher High pattern: Bullish candle followed by bearish candle
pattern_high = math.max(high , high)
prev_hh = na(last_hh_level) ? last_swing_high : last_hh_level
// HH Detection: Only if we expect HH next (no last structure or last was HL)
if (na(last_structure_type) or last_structure_type == "HL") and close > open and close < open and pattern_high > prev_hh and close > prev_hh
// Check consolidation
is_too_close = not na(last_high_bar) and (bar_index - last_high_bar) <= 4
should_create_hh = true
if is_too_close and structure_count > 0 and pattern_high <= last_hh_level
should_create_hh := false
if should_create_hh
structure_count := structure_count + 1
label.new(bar_index - 1, high + (high * 0.0003), "HH" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_hh_level := pattern_high
last_swing_high := pattern_high
last_high_bar := bar_index
last_structure_type := "HH"
// HL Detection: Only if we expect HL next (last was HH)
pattern_low = math.min(low , low)
prev_hl = na(last_hl_level) ? last_swing_low : last_hl_level
if last_structure_type == "HH" and close < open and close > open and pattern_low > prev_hl and close > prev_hl
// Check consolidation
is_too_close = not na(last_low_bar) and (bar_index - last_low_bar) <= 4
should_create_hl = true
if is_too_close and pattern_low <= last_hl_level
should_create_hl := false
if should_create_hl
structure_count := structure_count + 1
label.new(bar_index - 1, low - (low * 0.0003), "HL" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_hl_level := pattern_low
most_recent_hl := pattern_low // Update most recent HL for BoS detection
most_recent_hl_bar := bar_index - 1 // Store HL bar position
last_low_bar := bar_index
last_structure_type := "HL"
// Bearish structure tracking (LL, LH alternating)
if breakout_direction == "bearish"
// Check for Lower Low pattern: Bearish candle followed by bullish candle
pattern_low = math.min(low , low)
prev_ll = na(last_ll_level) ? last_swing_low : last_ll_level
// LL Detection: Only if we expect LL next (no last structure or last was LH)
if (na(last_structure_type) or last_structure_type == "LH") and close < open and close > open and pattern_low < prev_ll and close < prev_ll
// Check consolidation
is_too_close = not na(last_low_bar) and (bar_index - last_low_bar) <= 4
should_create_ll = true
if is_too_close and structure_count > 0 and pattern_low >= last_ll_level
should_create_ll := false
if should_create_ll
structure_count := structure_count + 1
label.new(bar_index - 1, low - (low * 0.0003), "LL" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_ll_level := pattern_low
last_swing_low := pattern_low
last_low_bar := bar_index
last_structure_type := "LL"
// LH Detection: Only if we expect LH next (last was LL)
pattern_high = math.max(high , high)
prev_lh = na(last_lh_level) ? last_swing_high : last_lh_level
if last_structure_type == "LL" and close > open and close < open and pattern_high < prev_lh and close < prev_lh
// Check consolidation
is_too_close = not na(last_high_bar) and (bar_index - last_high_bar) <= 4
should_create_lh = true
if is_too_close and pattern_high >= last_lh_level
should_create_lh := false
if should_create_lh
structure_count := structure_count + 1
label.new(bar_index - 1, high + (high * 0.0003), "LH" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_lh_level := pattern_high
most_recent_lh := pattern_high // Update most recent LH for BoS detection
most_recent_lh_bar := bar_index - 1 // Store LH bar position
last_high_bar := bar_index
last_structure_type := "LH"
// Check if we're within the cutoff period before London session end
current_minute = minute(time, session_timezone)
london_end_time_minutes = london_end_hour * 60 // Convert London end hour to minutes
current_time_minutes = current_hour * 60 + current_minute // Current time in minutes
// Calculate minutes remaining in London session
london_session_minutes_remaining = london_end_time_minutes - current_time_minutes
// Handle day rollover case (e.g., if london_end is 8:00 (480 min) and current is 23:30 (1410 min))
if london_session_minutes_remaining < 0
london_session_minutes_remaining := london_session_minutes_remaining + (24 * 60) // Add 24 hours in minutes
// Only allow trades if more than cutoff_minutes remaining in London session
allow_new_trades = london_session_minutes_remaining > cutoff_minutes
// Break of Structure (BoS) Detection and Trading Logic - Only first BoS per London session and outside cutoff period
if show_bos and london_active and show_market_structure and not bos_detected and not trade_taken and allow_new_trades
// Bullish BoS: Price closes below the most recent HL (after bullish breakout) - SELL SIGNAL
if breakout_direction == "bullish" and not na(most_recent_hl) and not na(most_recent_hl_bar)
// Check minimum distance requirement (at least 4 candles between BoS and HL)
if close < most_recent_hl and (bar_index - most_recent_hl_bar) >= 4
// Draw dotted line from HL position to BoS point
line.new(most_recent_hl_bar, most_recent_hl, bar_index, most_recent_hl,
color=bos_color, width=2, style=line.style_dotted, extend=extend.none)
// Calculate center position for BoS label
center_bar = math.round((most_recent_hl_bar + bar_index) / 2)
// Draw BoS label below the line for HL break
label.new(center_bar, most_recent_hl - (most_recent_hl * 0.0005), "BoS",
style=label.style_none, color=color.new(color.white, 100),
textcolor=bos_color, size=size.normal)
// SELL ENTRY
if not na(london_session_high) and not na(asian_absolute_low)
// Calculate stop loss based on settings
stop_loss_level = use_atr_sl ? close + (atr * atr_multiplier) : london_session_high
take_profit_level = asian_absolute_low
entry_price = close
// Calculate position size based on user settings
position_size = calculate_position_size(entry_price, stop_loss_level)
strategy.entry("SELL", strategy.short, qty=position_size, comment="BoS Sell")
strategy.exit("SELL EXIT", "SELL", stop=stop_loss_level, limit=take_profit_level, comment="SL/TP")
// Create trade visualization boxes (TradingView style) - minimum 8 bars width
// Blue profit zone box (from entry to take profit)
current_profit_box := box.new(left=bar_index, top=take_profit_level, right=bar_index + 8, bottom=entry_price,
bgcolor=color.new(color.blue, 70), border_width=0)
// Red stop loss zone box (from entry to stop loss)
current_sl_box := box.new(left=bar_index, top=entry_price, right=bar_index + 8, bottom=stop_loss_level,
bgcolor=color.new(color.red, 70), border_width=0)
trade_taken := true
bos_detected := true // Mark BoS as detected for this session
// Bearish BoS: Price closes above the most recent LH (after bearish breakout) - BUY SIGNAL
if breakout_direction == "bearish" and not na(most_recent_lh) and not na(most_recent_lh_bar)
// Check minimum distance requirement (at least 4 candles between BoS and LH)
if close > most_recent_lh and (bar_index - most_recent_lh_bar) >= 4
// Draw dotted line from LH position to BoS point
line.new(most_recent_lh_bar, most_recent_lh, bar_index, most_recent_lh,
color=bos_color, width=1, style=line.style_dotted, extend=extend.none)
// Calculate center position for BoS label
center_bar = math.round((most_recent_lh_bar + bar_index) / 2)
// Draw BoS label above the line for LH break
label.new(center_bar, most_recent_lh + (most_recent_lh * 0.0005), "BoS",
style=label.style_none, color=color.new(color.white, 100),
textcolor=bos_color, size=size.normal)
// BUY ENTRY
if not na(london_session_low) and not na(asian_absolute_high)
// Calculate stop loss based on settings
stop_loss_level = use_atr_sl ? close - (atr * atr_multiplier) : london_session_low
take_profit_level = asian_absolute_high
entry_price = close
// Calculate position size based on user settings
position_size = calculate_position_size(entry_price, stop_loss_level)
strategy.entry("BUY", strategy.long, qty=position_size, comment="BoS Buy")
strategy.exit("BUY EXIT", "BUY", stop=stop_loss_level, limit=take_profit_level, comment="SL/TP")
// Create trade visualization boxes (TradingView style) - minimum 8 bars width
// Blue profit zone box (from entry to take profit)
current_profit_box := box.new(left=bar_index, top=entry_price, right=bar_index + 8, bottom=take_profit_level,
bgcolor=color.new(color.blue, 70), border_width=0)
// Red stop loss zone box (from entry to stop loss)
current_sl_box := box.new(left=bar_index, top=stop_loss_level, right=bar_index + 8, bottom=entry_price,
bgcolor=color.new(color.red, 70), border_width=0)
trade_taken := true
bos_detected := true // Mark BoS as detected for this session
// Position close detection for extending boxes (based on Casper strategy)
if barstate.isconfirmed and strategy.position_size == 0 and strategy.position_size != 0
// Extend trade visualization boxes to exact exit point when position closes
if not na(current_profit_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na // Clear reference after extending
if not na(current_sl_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na // Clear reference after extending
// Backup safety check - extend boxes if position is closed but boxes still active
if not na(current_profit_box) and strategy.position_size == 0
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na
if not na(current_sl_box) and strategy.position_size == 0
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na
// Reset everything when new Asian session starts
if asian_start and show_swing_points
asian_session_high := na
asian_session_low := na
asian_high_bar := na
asian_low_bar := na
// Reset absolute levels
asian_absolute_high := na
asian_absolute_low := na
asian_high_line := na
asian_low_line := na
asian_high_label := na
asian_low_label := na
high_broken := false
low_broken := false
// Reset London session levels
london_session_high := na
london_session_low := na
// Reset market structure tracking
breakout_direction := na
last_hh_level := na
last_hl_level := na
last_ll_level := na
last_lh_level := na
last_swing_high := na
last_swing_low := na
last_high_bar := na
last_low_bar := na
structure_count := 0
last_structure_type := na
pending_high := na
pending_low := na
pending_high_bar := na
pending_low_bar := na
waiting_for_confirmation := false
// Reset BoS tracking
most_recent_hl := na
most_recent_lh := na
most_recent_hl_bar := na
most_recent_lh_bar := na
bos_detected := false
// Reset trading
trade_taken := false
// Reset current trade boxes
current_profit_box := na
current_sl_box := na
// Debug info (optional)
show_debug = input.bool(false, "Show Debug Info")
if show_debug
var table debug_table = table.new(position.top_right, 2, 3, bgcolor=color.white, border_width=1)
if barstate.islast
table.cell(debug_table, 0, 0, "Current Hour:", text_color=color.black)
table.cell(debug_table, 1, 0, str.tostring(current_hour), text_color=color.black)
table.cell(debug_table, 0, 1, "Asian Active:", text_color=color.black)
table.cell(debug_table, 1, 1, str.tostring((current_hour >= asian_start_hour) or (current_hour < asian_end_hour)), text_color=color.black)
table.cell(debug_table, 0, 2, "London Active:", text_color=color.black)
table.cell(debug_table, 1, 2, str.tostring((current_hour >= london_start_hour) and (current_hour < london_end_hour)), text_color=color.black)
SSL MACD - nhuthang83supertrend method, supertrend method, supertrend method, supertrend method, supertrend method,
SMC Liquidity Grab ProSMC LIquidity GRab Pro is an high probability strategy for the Smart Money Concept (SMC).
It looks for liquidity sweeps also known as stop hunts, where large financial institutions move the price beyond significant levels in order to trigger market orders and then reverse the price quickly.
Features
1. Liquidity Sweeps : It follows the previous 4 hour high/low liquidity in order to pinpoint stop runs.
2. Liquidity grab confirmation: Trade setup where price momentarily breaks through the liquidity level but then ends up again inside the range suggests that there’s been a false breakout.
3.Structure-Based Risk Management: Stop losses are placed beyond the latest swing high/low pivot, instead of basing it on a pip value.
- Live Performance Dashboard - Allows you to display real-time data such as net profit, win rate, and active trade on your chart.
-Customizable Risk-to-Reward- Traders can set risk/reward ratio as per their requirement. Default value is 2.0 RR. Graph Timeframe: This strategy is used on 5-minute or 15-minute charts.
Chart Timeframe: Apply the strategy to 5-minute or 15-minute charts.
HTF Configuration: Set the higher timeframe above your execution chart e.g., 240 minutes for 4-hours.
Fine-Tuning: Adjust the swing lookback parameter to adapt stop-loss placement according to market volatility.
My Swift-like Algo ALIMOJANIDSwift Algo Chart is a trend-following trading indicator designed to provide clear bias, precise entries, and visual risk management.
It combines EMA trend direction, pullback-based signals, market structure (HH/HL/LH/LL), and ATR-based Stop Loss & Take Profit levels to help traders make disciplined decisions.
🔑 Key Features
Trend Regime Detection
Identifies LONG, SHORT, or NO TRADE conditions using Fast & Slow EMAs.
Pullback Entry Signals
Signals appear only in the direction of the active trend, with optional RSI confirmation.
ATR-Based Risk Levels
Automatically plots SL, TP1, and TP2, including exact price values on the chart.
Preview Levels
Shows projected SL/TP levels when a trend is active, even before an entry.
Market Structure Visualization
Marks HH / HL / LH / LL, draws structure lines, and highlights BOS and CHOCH.
Clean & Non-Repainting Logic
Uses confirmed pivots and closed candles for stability.
Strategy-Compatible
Can be used for discretionary trading or full strategy backtesting.
🧠 Best Used For
Crypto, Forex, Indices
15m to 4H timeframes
Traders who want structure + trend + risk clarity in one tool
My Swift-like Algo J.ALIMOJANIDSwift Algo Chart — Trend, Structure & ATR Risk
Swift Algo Chart is a trend-following trading indicator designed to provide clear bias, precise entries, and visual risk management.
It combines EMA trend direction, pullback-based signals, market structure (HH/HL/LH/LL), and ATR-based Stop Loss & Take Profit levels to help traders make disciplined decisions.
🔑 Key Features
Trend Regime Detection
Identifies LONG, SHORT, or NO TRADE conditions using Fast & Slow EMAs.
Pullback Entry Signals
Signals appear only in the direction of the active trend, with optional RSI confirmation.
ATR-Based Risk Levels
Automatically plots SL, TP1, and TP2, including exact price values on the chart.
Preview Levels
Shows projected SL/TP levels when a trend is active, even before an entry.
Market Structure Visualization
Marks HH / HL / LH / LL, draws structure lines, and highlights BOS and CHOCH.
Clean & Non-Repainting Logic
Uses confirmed pivots and closed candles for stability.
Strategy-Compatible
Can be used for discretionary trading or full strategy backtesting.
🧠 Best Used For
Crypto, Forex, Indices
15m to 4H timeframes
Traders who want structure + trend + risk clarity in one tool
My Swiftlike Algo Backtest ATR SL/TP HH/HL/LH/LL BOS/CHOCHSwift-Like Algo is a trend-following strategy that trades pullbacks using EMA trend direction, market structure (HH/HL/LH/LL), and ATR-based risk management.
It enters only in the direction of the trend, with automatic Stop-Loss, TP1, and TP2, and supports full strategy backtesting.
Best used on 15m–4H timeframes for crypto, forex, and indices.
⚠️ For educational and testing purposes only.
HARSI RSI Shadow SHORT Strategy M1HARSI – Heikin Ashi RSI Shadow Indicator
HARSI (Heikin Ashi RSI Shadow) is a momentum-based oscillator that combines the concept of Heikin Ashi smoothing with the Relative Strength Index (RSI) to reduce market noise and highlight short-term trend strength.
Instead of plotting traditional price candles, HARSI transforms RSI values into a zero-centered oscillator (RSI − 50), allowing traders to clearly identify bullish and bearish momentum around the median line. The smoothing mechanism inspired by Heikin Ashi candles helps filter out false signals, making the indicator especially effective on lower timeframes such as M1.
The RSI Shadow reacts quickly to momentum shifts while maintaining smooth transitions, which makes it suitable for scalping and intraday trading. Key threshold levels (such as ±20 and ±30) can be used to detect momentum expansion, exhaustion, and potential continuation setups.
mua HARSI RSI Shadow Strategy M1 (Fixed)HARSI – Heikin Ashi RSI Shadow Indicator
HARSI (Heikin Ashi RSI Shadow) is a momentum-based oscillator that combines the concept of Heikin Ashi smoothing with the Relative Strength Index (RSI) to reduce market noise and highlight short-term trend strength.
Instead of plotting traditional price candles, HARSI transforms RSI values into a zero-centered oscillator (RSI − 50), allowing traders to clearly identify bullish and bearish momentum around the median line. The smoothing mechanism inspired by Heikin Ashi candles helps filter out false signals, making the indicator especially effective on lower timeframes such as M1.
The RSI Shadow reacts quickly to momentum shifts while maintaining smooth transitions, which makes it suitable for scalping and intraday trading. Key threshold levels (such as ±20 and ±30) can be used to detect momentum expansion, exhaustion, and potential continuation setups.
HARSI works best in liquid markets and can be used as a standalone momentum indicator or combined with trend filters such as moving averages or VWAP for higher-probability trades.
Key Features:
Zero-centered RSI oscillator (RSI − 50)
Heikin Ashi–style smoothing to reduce noise
Clear momentum-based entry signals
Optimized for lower timeframes (M1 scalping)
Suitable for both Spot and Futures trading
mua HARSI RSI Shadow Strategy M1 (Fixed)HARSI – Heikin Ashi RSI Shadow Indicator
HARSI (Heikin Ashi RSI Shadow) is a momentum-based oscillator that combines the concept of Heikin Ashi smoothing with the Relative Strength Index (RSI) to reduce market noise and highlight short-term trend strength.
Instead of plotting traditional price candles, HARSI transforms RSI values into a zero-centered oscillator (RSI − 50), allowing traders to clearly identify bullish and bearish momentum around the median line. The smoothing mechanism inspired by Heikin Ashi candles helps filter out false signals, making the indicator especially effective on lower timeframes such as M1.
The RSI Shadow reacts quickly to momentum shifts while maintaining smooth transitions, which makes it suitable for scalping and intraday trading. Key threshold levels (such as ±20 and ±30) can be used to detect momentum expansion, exhaustion, and potential continuation setups.
HARSI works best in liquid markets and can be used as a standalone momentum indicator or combined with trend filters such as moving averages or VWAP for higher-probability trades.
Key Features:
Zero-centered RSI oscillator (RSI − 50)
Heikin Ashi–style smoothing to reduce noise
Clear momentum-based entry signals
Optimized for lower timeframes (M1 scalping)
Suitable for both Spot and Futures trading
Old Indicator Multi-Component Decision StrategyStrategy to test signals based on rsi and few other technicals
Bullish Engulfing at Daily Support (Pivot Low) - R Target (v6)1. What this strategy really is (in human terms)
This strategy is not about predicting the market.
It’s about waiting for proof that buyers are stepping in at a price where they already should.
Think of it like this:
“I only buy when price falls into a known ‘floor’ and buyers visibly take control.”
That’s it.
Everything in the script enforces that idea.
2. The two ingredients (nothing else)
Ingredient #1: Daily Support (the location)
Support is an area where price previously fell and then reversed upward.
In the script:
Support is defined as the most recent confirmed daily swing low
A swing low means:
Price went down
Stopped
Then went up enough to prove that buyers defended that level
This matters because:
You’re not guessing where support might be
You’re using a level where buyers already proved themselves
“At support” doesn’t mean exact
Markets don’t bounce off perfect lines.
So the script allows a small zone (the “support tolerance”):
Example: 0.5% tolerance
If support is at 100
Anywhere between ~99.5–100.5 counts
This prevents missing good trades just because price was off by a few ticks.
Ingredient #2: Bullish Engulfing Candle (the trigger)
This is the confirmation.
A bullish engulfing candle means:
Sellers were in control
Buyers stepped in hard enough to fully overpower them
The bullish candle’s body “swallows” the previous candle
Psychologically, it says:
“Sellers tried, failed, and buyers just took control.”
That’s why this candle works only at support.
A bullish engulfing in the middle of nowhere means nothing.
3. Why daily timeframe matters
The daily chart:
Filters out noise
Reflects decisions made by institutions, not random scalpers
Produces fewer but higher-quality signals
That’s why:
The script uses daily data
You typically get very few trades per month
Most days: no trade
That “boredom” is the edge.
4. When a trade is taken (exact conditions)
A trade happens only if ALL are true:
Price drops into a recent daily support zone
A bullish engulfing candle forms on the daily chart
Risk is clearly defined (entry, stop, target)
If any one is missing → no trade
5. How risk is controlled (this is crucial)
The stop loss (where you admit you’re wrong)
The stop is placed:
Below the support level
Or below the low of the engulfing candle
With a small ATR buffer so normal noise doesn’t stop you out
Meaning:
“If price breaks below this area, buyers were wrong. I’m out.”
No hoping. No moving stops. No exceptions.
Position sizing (why this strategy survives losing streaks)
Each trade risks a fixed % of your account (default 1%).
So:
Big stop = smaller position
Small stop = larger position
This keeps every trade equal in risk, not equal in size.
That’s professional behavior.
6. The take-profit logic (why 2.8R matters)
Instead of guessing targets:
The strategy uses a multiple of risk (R)
Example:
Risk = $1
Target = $2.80
You can lose many times and still come out ahead.
This is why:
Win rate ≈ 60% is more than enough
Even 40–45% could still work if discipline is perfect
7. Why patience is the real edge (not the pattern)
The bullish engulfing is common.
Bullish engulfing at daily support is rare.
Most people fail because they:
Trade engulfings everywhere
Ignore location
Lower standards when bored
Add “just one more indicator”
Your edge is:
Saying no 95% of the time
Taking only trades that look obvious after they work
8. How to use this strategy effectively (rules to follow)
Rule 1: Only take “clean” setups
Skip trades when:
Support is messy or unclear
Price is chopping sideways
The engulfing candle is tiny
The market is news-chaotic (earnings, FOMC, etc.)
If you have to convince yourself, skip it.
Rule 2: One trade at a time
This strategy works best when:
You’re not stacked in multiple correlated trades
You treat each setup like it matters
Quality > quantity.
Rule 3: Journal screenshots, not just numbers
After each trade, save:
Daily chart screenshot
Support level marked
Entry / stop / target
After 50–100 trades, patterns jump out:
Best tolerance %
Best stop buffer
Markets that behave well vs poorly
That’s how the original trader refined it.
Rule 4: Expect boredom and drawdowns
You will have:
Weeks with zero trades
Clusters of losses
Long flat periods
That’s normal.
If you “fix” it by adding more trades:
You destroy the edge.
9. Who this strategy is perfect for
This fits you if:
You don’t want screen addiction
You prefer process over excitement
You’re okay being wrong often
You want something you can execute for years
It is not for:
Scalpers
Indicator collectors
People who need action every day
10. The mindset shift (the real lesson of that story)
The money didn’t come from bullish engulfings.
It came from:
Defining one repeatable behavior
Removing everything else
Trusting math + patience
Doing nothing most of the time
If you want, next we can:
Walk through real example trades bar-by-bar
Optimize settings for a specific market you trade
Add filters that increase quality without adding complexity
EMA Multi-Type StrategyThis is a price-action + EMA trend strategy that:
Uses EMA as trend filter
Looks for pullbacks and structure shifts near the EMA
Trades 3 different entry patterns (TYPE 1 / 2 / 3)
Allows:
Fixed SL–TP (RR based)
OR ATR trailing stop
Optionally blocks opposite trades until the current trade exits
Think of it as:
“Trade continuation after pullback in EMA trend, with multiple confirmation strengths.”
BTC Pro High-Win Scalper w/ % Risk Hello,
I have been working on this 15min scalper for bitcoin. Its still in progress but is showing some promising results.
Check it out and let me know your thoughts
Thanks
Crypto 15M Volume + Supertrend + RSI StrategyThis is AI generated Signal Base on Supertrend, RSI, And Volume Base indicator to create code
The Blessed Trader Ph. | Double EMA + RSI (20) Strategy v1.0📊 The Blessed Trader Ph.
Double EMA + RSI (20) Strategy — v1.0
1️⃣ Strategy Overview
This is a trend-following breakout strategy designed to:
Catch strong directional moves
Filter out weak trades using momentum confirmation
Control risk with ATR-based stop-loss and take-profit
It works best in trending markets such as:
Crypto (BTC, ETH, altcoins)
Forex (major & minor pairs)
Indices (NAS100, US30, SPX)
2️⃣ Indicators Used
🔹 Double EMA Channel
EMA 20 High → Dynamic resistance
EMA 20 Low → Dynamic support
These two EMAs create a price channel:
Break above → bullish strength
Break below → bearish weakness
Unlike a single EMA on close, using High & Low EMAs helps:
Reduce fake breakouts
Confirm real price expansion
🔹 RSI (20)
Measures momentum strength
RSI > 50 → bullish momentum
RSI < 50 → bearish momentum
RSI is used only as a filter, not as an overbought/oversold signal.
🔹 ATR (14)
Measures market volatility
Used to calculate:
Stop Loss (1.5 × ATR)
Take Profit (3.0 × ATR)
This makes the strategy:
Adaptive to any market
Effective across timeframes
3️⃣ Trade Rules (Very Important)
✅ BUY (LONG) Conditions
A buy trade is opened only when all conditions are met:
Price closes above EMA 20 High
RSI (20) is above 50
Candle is confirmed (bar close)
➡️ This means:
“Price has broken resistance with strong momentum.”
❌ SELL / EXIT Conditions
The long trade is closed when:
Price closes below EMA 20 Low
RSI (20) is below 50
➡️ This signals:
“Trend strength is weakening or reversing.”
🛑 Stop Loss & 🎯 Take Profit
Stop Loss = Entry − (ATR × 1.5)
Take Profit = Entry + (ATR × 3.0)
Risk–Reward ≈ 1 : 2
This protects capital and lets winners run.
4️⃣ Why This Strategy Works
✔ Trades with the trend
✔ Avoids ranging markets
✔ Uses confirmation, not prediction
✔ Non-repainting (bar close only)
✔ Works on any timeframe
5️⃣ 🔥 Why Heikin Ashi Candles Improve Results
What are Heikin Ashi candles?
Heikin Ashi candles smooth price action by averaging price data instead of using raw OHLC values.
Benefits for THIS strategy:
✅ 1. Cleaner Trend Detection
Fewer false EMA breakouts
Smoother closes above EMA High
Stronger continuation signals
✅ 2. Reduced Whipsaws
RSI stays more stable
Fewer fake buy signals during consolidation
✅ 3. Better Trade Holding
Keeps you in trends longer
Avoids early exits caused by noise
6️⃣ How to Use Heikin Ashi with This Strategy
On TradingView:
Open your chart
Click Candles
Select Heikin Ashi
Apply the strategy
📌 Important Tip
EMAs & RSI will now be calculated using Heikin Ashi data
This is ideal for trend-following, not scalping ranges
7️⃣ Best Settings & Recommendations
⏱ Timeframes
5m / 15m → Crypto & Forex intraday
1H / 4H → Swing trading
Daily → Position trading
📈 Market Conditions
Best in strong trends
Avoid low-volatility ranges
🎯 Pro Tip
Combine with:
Higher-timeframe trend bias
Session filter (London / New York)
Volume confirmation
8️⃣ Final Advice from
🙏 The Blessed Trader Ph.
“This strategy doesn’t predict — it confirms.
Be patient. Wait for clean Heikin Ashi closes.
Trade less, but trade better.”
Bot Scalping XAUUSD(Volatilidad + TP Parcial + Modo Intermedio)Probar un nuevo bot.
En oro dando entradas para scalping con TP, SL Y BE






















