james S/R Trend Pro v6//@version=6
strategy("james S/R Trend Pro v6", overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.05,
slippage=1)
// --- 사용자 입력 (Inputs) ---
group_date = "1. 백테스트 기간"
start_date = input.time(timestamp("2024-01-01 00:00:00"), "시작일", group=group_date)
end_date = input.time(timestamp("2026-12-31 23:59:59"), "종료일", group=group_date)
is_within_date = time >= start_date and time <= end_date
group_main = "2. 지표 설정 (S/R & Trend)"
lookback_sr = input.int(15, "지지/저항 탐색 기간", minval=5, group=group_main)
atr_period = input.int(14, "ATR 기간", group=group_main)
atr_mult = input.float(3.5, "추세선 민감도", step=0.1, group=group_main)
group_color = "3. 다크모드 색상 설정"
trend_up_color = input.color(color.rgb(200, 200, 200), "상승 추세선 (밝은 회색)", group=group_color)
trend_down_color = input.color(color.rgb(255, 255, 255), "하락 추세선 (흰색)", group=group_color)
res_color = input.color(#ff1100, "저항선 (네온 레드)", group=group_color)
sup_color = input.color(#00e1ff, "지지선 (네온 사이언)", group=group_color)
// --- 데이터 처리 (Calculations) ---
// 1. 추세선 (검은색 배경용 고대비 설정)
= ta.supertrend(atr_mult, atr_period)
// 2. 지지/저항선 (피벗 기반)
ph = ta.pivothigh(high, lookback_sr, lookback_sr)
pl = ta.pivotlow(low, lookback_sr, lookback_sr)
var float res_line = na
var float sup_line = na
if not na(ph)
res_line := high
if not na(pl)
sup_line := low
// --- 전략 로직 (Condition) ---
long_condition = direction < 0 and ta.crossover(close, sup_line)
short_condition = direction > 0 and ta.crossunder(close, res_line)
// --- 주문 실행 (Execution) ---
if is_within_date
if long_condition
strategy.entry("Long", strategy.long, comment="BUY")
if short_condition
strategy.entry("Short", strategy.short, comment="SHORT")
// 청산 로직
if strategy.position_size > 0
strategy.exit("TP-L", "Long", limit=res_line, qty_percent=50, comment="분할익절")
if ta.crossunder(close, trend_line)
strategy.close("Long", comment="추세이탈")
if strategy.position_size < 0
strategy.exit("TP-S", "Short", limit=sup_line, qty_percent=50, comment="분할익절")
if ta.crossover(close, trend_line)
strategy.close("Short", comment="추세이탈")
// --- 시각화 (Visualization - 다크 모드 최적화) ---
// 1. 추세선: 검은 배경에서 잘 보이도록 하얀색/회색 계열 사용
plot(trend_line, color=direction < 0 ? trend_up_color : trend_down_color, linewidth=2, title="Trend Line")
// 2. 지지/저항선: 네온 컬러로 시인성 극대화
plot(res_line, color=color.new(res_color, 0), style=plot.style_linebr, linewidth=2, title="Resistance")
plot(sup_line, color=color.new(sup_color, 0), style=plot.style_linebr, linewidth=2, title="Support")
// 3. 진입 시그널 라벨
plotshape(long_condition, style=shape.triangleup, location=location.belowbar, color=sup_color, size=size.small, title="Buy Label")
plotshape(short_condition, style=shape.triangledown, location=location.abovebar, color=res_color, size=size.small, title="Short Label")
// 4. 추세 배경색 (매우 옅게 설정하여 캔들을 방해하지 않음)
fill_color = direction < 0 ? color.new(sup_color, 90) : color.new(res_color, 90)
fill(plot(trend_line), plot(close), color=fill_color, title="Trend Fill")
インジケーターとストラテジー
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)
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
yaman short longThis indicator provides clear Long and Short signals to help traders identify potential market direction and trading opportunities with higher confidence.
It is designed to follow price momentum and trend strength, allowing traders to enter trades when the market shows clear directional bias. The indicator focuses on clean signals and avoids unnecessary noise, making it suitable for both beginners and experienced traders.
Key Features:
Clear Long and Short signals displayed on the chart
Helps identify potential trend continuation and reversals
Designed to reduce false signals during choppy market conditions
Suitable for scalping, intraday, and swing trading
Works across multiple markets and timeframes
How to Use:
Long Signal: Indicates potential upward movement when bullish conditions align
Short Signal: Indicates potential downward movement when bearish conditions align
Best used with proper stop-loss and risk management rules
Can be combined with support/resistance or higher timeframe confirmation
Best Markets:
Forex pairs
Gold (XAUUSD)
Cryptocurrencies
Indices
Notes:
Signals are generated after candle close
The indicator does not repaint
This tool is meant to assist decision-making, not guarantee profits
Williams Fractal MA Pullback Strategy (1.5 RR) - BY DANISHOverview
This strategy is a price action and moving average-based scalping strategy designed for low timeframes (1m, 5m, 15m). It combines trend alignment with pullbacks to key moving averages and uses Williams Fractals as entry triggers.
It aims to catch high-probability scalping trades in the direction of the prevailing trend while keeping strict risk management with a 1.5:1 risk-to-reward ratio.
Indicators Used
Three Simple Moving Averages (SMA):
Fast SMA: 20 periods (Green)
Medium SMA: 50 periods (Yellow)
Slow SMA: 100 periods (Red)
Williams Fractals (Period 2):
Identifies short-term local highs (red) and lows (green) for potential reversal or continuation setups.
Trend Rules
Bullish Trend (Long Setup):
Fast SMA (20) > Medium SMA (50) > Slow SMA (100)
Moving averages must not be crossing
Bearish Trend (Short Setup):
Slow SMA (100) > Medium SMA (50) > Fast SMA (20)
Moving averages must not be crossing
This ensures trades are only taken in the direction of the prevailing trend.
Entry Rules
Long Entry (Buy):
Price pulls back to either the 20 SMA (fast) or 50 SMA (medium) without closing below the 100 SMA (slow).
A green Williams Fractal forms after the pullback.
Confirm all trend alignment rules (20>50>100).
Enter a long position at the close of the candle that confirms the fractal.
Short Entry (Sell):
Price pulls back to either the 20 SMA (fast) or 50 SMA (medium) without closing above the 100 SMA (slow).
A red Williams Fractal forms after the pullback.
Confirm all trend alignment rules (100>50>20).
Enter a short position at the close of the candle that confirms the fractal.
Risk Management & Stop Loss
Long Trades:
If price stayed above 50 SMA during pullback → SL is just below 50 SMA
If price dipped below 50 SMA but stayed above 100 SMA → SL is just below 100 SMA
Short Trades:
If price stayed below 50 SMA during pullback → SL is just above 50 SMA
If price rose above 50 SMA but stayed below 100 SMA → SL is just above 100 SMA
Take Profit (TP)
Fixed 1.5 Risk-to-Reward ratio
TP = Risk × 1.5
This ensures each trade has a positive expectancy and follows consistent risk-reward management.
Additional Rules
Fractals Confirmation:
The strategy waits for 2 bars to close before confirming the fractal signal to avoid repainting.
No trades are taken if the price violates the 100-period SMA during the pullback.
Designed for scalping on low timeframes: 1m, 5m, or 15m charts.
Visuals on Chart
SMA Lines:
20 SMA (Green)
50 SMA (Yellow)
100 SMA (Red)
Fractal Arrows:
Green fractal → potential long entry
Red fractal → potential short entry
Trade Highlights: Strategy plots entries and exit levels automatically with stop loss and take profit.
How to Use
Add the script to a 1m, 5m, or 15m chart.
Enable the strategy tester to see backtesting results.
Follow the trend alignment rules strictly for high-probability scalping trades.
Optionally, combine with volume filters or market structure analysis for better performance.
Benefits
Trades only in aligned trend direction, avoiding counter-trend traps.
Pullback + fractal logic provides high-probability entries.
Risk-to-reward of 1.5:1 ensures good risk management.
Avoids fractal repainting by waiting for candle close.
Ideal Conditions
Works best on volatile assets like crypto or forex pairs with clear trending moves.
Best applied to liquid markets with tight spreads for scalping.
✅ Summary:
Trend-aligned scalping strategy
Pullback to MA + fractal confirmation
Fixed 1.5 RR risk management
Works on low timeframes (1m, 5m, 15m)
Clean visual signals with SMMAs and fractals
EMA + VWAP Strategy# EMA + VWAP Crossover Strategy
## Overview
This is a trend-following intraday strategy that combines fast and slow EMAs with VWAP to identify high-probability entries. It's designed primarily for 5-15 minute charts and includes a smart filter to avoid trading when VWAP is ranging flat.
## How It Works
### Core Concept
The strategy uses three main components working together:
- **Fast EMA (9)** - Responds quickly to price changes and generates entry signals
- **Slow EMA (21)** - Acts as a trend filter to keep you on the right side of the market
- **VWAP** - Serves as a dynamic support/resistance level and the primary trigger for entries
### Entry Rules
**Long Entry:**
- EMA 9 crosses above VWAP (bullish momentum)
- EMA 9 is above EMA 21 (confirming uptrend)
- VWAP has a clear directional slope (not flat/ranging)
- Only during weekdays (Monday-Friday)
**Short Entry:**
- EMA 9 crosses below VWAP (bearish momentum)
- EMA 9 is below EMA 21 (confirming downtrend)
- VWAP has a clear directional slope (not flat/ranging)
- Only during weekdays (Monday-Friday)
### The VWAP Flat Filter
One of the key features is the VWAP slope filter. When VWAP is moving sideways (flat), it indicates the market is likely consolidating or ranging. The strategy skips these periods because crossover signals tend to be less reliable in choppy conditions. You'll see small gray diamonds at the top of the chart when VWAP is considered flat.
### Risk Management
The strategy uses a proper risk-reward approach with multiple stop loss options:
1. **ATR-Based (Recommended)** - Adapts to market volatility automatically. Default is 1.5x ATR(14), which gives your trades room to breathe while protecting capital.
2. **Swing Low/High** - Places stops at recent price structure points for a more technical approach.
3. **Slow EMA** - Uses the trend-defining EMA as your stop level, good for trend-following with wider stops.
4. **Fixed Percentage** - Simple percentage-based stops if you prefer consistency.
Take profits are automatically calculated based on your risk-reward ratio (default 2:1), meaning if you risk $100, you're aiming to make $200.
### Weekday Trading Filter
The strategy includes an option to trade only Monday through Friday. This is particularly useful for crypto markets where weekend liquidity can be thin and price action more erratic. You can toggle this on/off to test whether avoiding weekends improves your results.
### Visual Features
- **Color-coded background** - Green tint when EMA 9 is above EMA 21 (bullish bias), red tint when below (bearish bias)
- **ATR bands** - Dotted lines showing where stops would be placed (when using ATR stops)
- **Active trade levels** - Solid red line for your stop loss, green line for your take profit when you're in a position
- **Weekend highlighting** - Gray background on Saturdays and Sundays when weekday filter is active
## Best Practices
**Timeframe:** Designed for 5-minute charts but can be adapted to other intraday timeframes.
**Markets:** Works on any liquid market - stocks, forex, crypto, futures. Just make sure there's enough volume.
**Position Sizing:** The strategy uses percentage of equity by default. Adjust based on your risk tolerance.
**Backtesting Tips:**
- Test with and without the weekday filter to see which performs better on your instrument
- Try different ATR multipliers (1.0-2.5) to find the sweet spot between stop-outs and letting profits run
- Experiment with risk-reward ratios (1.5R, 2R, 3R) to optimize for your win rate
**What to Watch:**
- Win rate vs. profit factor balance
- How many trades are filtered out by the VWAP flat condition
- Performance difference between weekdays and weekends
- Whether the trend filter (EMA 21) is keeping you out of bad trades
## Parameters You Can Adjust
- Fast EMA length (default 9)
- Slow EMA length (default 21)
- VWAP flat threshold (default 0.01%)
- Stop loss type and parameters
- Risk-reward ratio
- Weekday trading on/off
- ATR length and multiplier
## Disclaimer
This strategy is for educational purposes. Past performance doesn't guarantee future results. Always test thoroughly on historical data and paper trade before risking real money. Use proper position sizing and never risk more than you can afford to lose.
---
*Built with Pine Script v5 for TradingView*
Big Trend Catcher: Dual-Gate EMA & ATR Trailing Swing TraderThe Big Trend Catcher: Long-Only Progressive Swing System
OVERVIEW
The Big Trend Catcher is a high-conviction, long-only swing trading strategy designed to identify and ride sustained market moves. Unlike traditional trend-following systems that often get "chopped out" during sideways consolidation, this strategy utilizes a Dual-Gate Filter to ensure you only enter when short-term momentum and the long-term trend are in total alignment.
It is specifically tuned for high-growth stocks and ETFs where capturing the lion’s share of a multi-week or multi-month move is the primary objective.
CORE LOGIC: THE DUAL-GATE SYSTEM
To maintain a high quality of entries, the strategy requires a "confirmed launch" through two distinct filters:
The Momentum Gate (20 EMA): Identifies immediate price acceleration and volume-backed impulse.
The Long-Term Gate (100 EMA): Acts as the ultimate trend filter. The script utilizes a "Signal Memory" logic—if an impulse happens while price is still below the 100 EMA, the trade is held in a "Pending" state. The entry only triggers once the price closes firmly above the 100 EMA.
Goal: This prevents "bottom fishing" in established downtrends and keeps you in cash during sideways "death loops" when the long-term direction is unclear.
KEY FEATURES
1. Progressive Pyramiding (Scale-In)
The biggest profits in swing trading are often made by adding to winners. This system features two automated scale-in triggers:
Velocity Adds (VOLC): Adds to the position if the stock is up >10% and moving with rising momentum, allowing you to build a larger position as the trend proves its strength.
Pullback Adds: Adds to the position when the price tests the 20 EMA and holds, allowing you to buy the "dip" within a healthy uptrend.
2. The Phoenix Re-Entry
This logic is designed to catch "V-shaped" recoveries. If the strategy exits on a trend break but the price aggressively reclaims the 20 EMA on massive volume shortly after, it re-enters the trade. This ensures you aren't left behind during the second leg of a major run after a temporary shakeout.
3. Iron-Floor ATR Exit
We use a 3.5x ATR Trailing Stop combined with the 100 EMA. This wider-than-average "breathing room" is designed to keep you in for significant gains while ignoring the minor daily volatility that often shakes out traders with tighter stops.
HOW TO USE
Best Timeframes: Daily (D) is recommended for identifying major cycles, but it can be applied to the 4-Hour (4H) for more active swing trading.
Settings:
* 20 EMA: Your short-term momentum guide.
* 100 EMA: Your long-term trend guide.
* ATR Multiplier: Set to 3.5 for maximum "trend hugging."
SUMMARY OF VISUALS
Blue Line (100 EMA): The Long-Term Trend.
Yellow Line (20 EMA): The Short-Term Momentum.
Red Stepped Line: Your ATR Trailing Floor (The "Iron Floor").
Lime Triangle: Initial Trade Entry.
Blue/Orange Shapes: Progressive Scale-in points.
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
Tick-Tock (UT Bot Alert + Linear Regression Candles)The video stated to use LineReg Candels indicator combined with UT Bot Alerts
Setting the inputs to the defvalues i've setted
setting the chart on heiken ashi and a 30m interval
Have in mind to follow indicator signals as a strategy, the confirmation of the signal and the entry happen in the
next open. entering always late, yes but never failing and with automation possibilities. no fakouts real backtest
as proven by the backtest this is not a good strategy! i should make a ticktok strategies series to disprove them
Always backtest strategies published in ticktock! www.facebook.com
if you have more strategies from ticktok you want dissproven hit me.
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.
Strict EMA Wick Pullback Trend ContinuationThis script is a strict EMA pullback entry model
designed exclusively for trend continuation traders.
It does NOT attempt to predict tops or bottoms.
It waits for established trends and enters only
on shallow pullbacks with defined risk.
OVERVIEW
This strategy is built for disciplined trend continuation trading.
It looks for shallow pullbacks into a fast EMA during established uptrends
and exits when trend structure breaks.
There is no counter-trend logic and no optimization for win rate.
ENTRY LOGIC
A long entry is triggered when:
• Price pulls back into the fast EMA area (wick touch)
• The pullback remains above the slow EMA (trend integrity)
• The candle closes bullish
• Optional: slow EMA is rising (trend filter)
RISK MANAGEMENT
• A dynamic stop is placed just below the fast EMA
• The stop only tightens — it never loosens
• Losses are small and predefined
• The system is designed to be scaled via position sizing
EXIT LOGIC
• Positions are closed when the fast EMA crosses below the slow EMA
• This represents a breakdown of trend continuation structure
WHAT THIS STRATEGY IS
• A trend continuation entry module
• Risk-first by design
• Low win-rate, high payoff profile
• Designed for trending markets
WHAT THIS STRATEGY IS NOT
• Not a reversal system
• Not a scalping strategy
• Not a signal service
• Not optimized for ranging markets
• Not a promise of profitability
IMPORTANT NOTES
• Long-only by design (BTC context)
• No repainting logic
• Best used with higher-timeframe trend confirmation
• This is a tool, not financial advice
Recommended markets: BTCUSD / BTCUSDT
Timeframe: 1D
Trend filter: ON
Risk: fixed % per trade (user-defined)
RSI-RS StrategyRSI-RS Strategy: Smart Trend Following 🚀
Overview
This strategy combines Multi-Timeframe RSI with Mansfield Relative Strength to identify high-momentum breakouts in strong stocks. Unlike standard RSI strategies, it features a "Smart Trailing Stop" that tightens when momentum weakens but respects key RSI 50 support levels to avoid shaking you out of winning trades.
Key Features ✨
1. 🎯 High-Probability Entries
Multi-Confirmations: Requires Monthly RSI > 60 and Weekly RSI > 60 (Trend is Up).
Dual Trigger: Enters on a Daily RSI Breakout (>60) OR a Weekly RSI Catch-up, ensuring you don't miss late moves.
RS Filter: Only buys stocks outperforming the Index (RS > 0).
New Listing Safe: Automatically skips Monthly checks for new IPOs lacking history.
2. 🛡️ Advanced "Hybrid" Stop Loss
This strategy solves the "Wick Out" problem:
Confirmation Exit: If price drops below the Stop Loss, it waits for the Next Candle to confirm the breakdown. It ignores intraday wicks!
Crash Protection: Includes a "Panic Button" (Default 3% buffer). If price crashes rapidly intraday, it exits immediately to save capital.
Smart Trailing: The Stop Loss moves UP when RSI shows weakness (<60), locking in profits.
3. 🧠 Smart Support Buffer
Wait for 50: Uniquely detects when RSI is resting on 50 Support (Zone 50-55).
Patience: It ignores minor weakness signals in this zone, waiting for a bounce instead of exiting prematurely.
4. 🧹 Clean Visuals
Minimalist Labels: Transparent Entry/Exit labels that don't declutter the chart.
Setup Watch: Visually signals "Watch > " before the trade triggers.
Transparency: "SL Update" diamonds prove exactly why the stop moved (showing the RSI value).
Settings Guide ⚙️
Confirmation Window: How many bars the breakout remains valid (Default: 2).
RSI Support Buffer: The "Safe Zone" range above 50 (Default: 5).
Crash Buffer %: Distance below SL for immediate emergency exit (Default: 3.0%).
Visuals: Toggle Setup Labels and SL Diamonds on/off to keep your chart clean.
How to Trade It
Green Background: You are in a trade.
Red Line: Your Hard Stop Loss (Closing Basis).
Maroon Dotted Line: Your Crash Limit (Intraday Danger Zone).
Orange Diamond: Warning! RSI Weakness detected, SL has tightened.
Disclaimer
Backtested on Indian Equities (NSE). Designed for Swing Trading on Daily Timeframe. Always manage your own risk.
Quality-Controlled Trend StrategyOverview
This strategy demonstrates a clean, execution-aware trend framework with fully isolated risk management.
Entry conditions and risk logic are intentionally separated so risk parameters can be adjusted without altering signal behavior.
All calculations are evaluated on confirmed bars to ensure backtest behavior reflects real-time execution.
Design intent
Many scripts mix entries and exits in ways that make results fragile or misleading.
This strategy focuses on structural clarity by enforcing:
confirmed-bar logic only
fixed and transparent risk handling
consistent indicator calculations
one position at a time
It is intended as a baseline framework rather than an optimized system.
Trading logic (high level)
Trend context
EMA 50 vs EMA 200 defines directional bias
Entry
Price alignment with EMA 50
RSI used as a momentum confirmation, not as an overbought/oversold signal
Risk management
Stop-loss based on ATR
Fixed risk–reward structure
Risk logic is isolated from entry logic
Editing risk without affecting signals
All stop-loss and take-profit calculations are handled in a dedicated block.
Users can adjust:
ATR length
stop-loss multiplier
risk–reward ratio
without modifying entry conditions.
This allows controlled experimentation while preserving signal integrity.
Usage notes
Results vary by market, timeframe, and volatility conditions.
This script is provided for testing and educational purposes and should be validated across multiple symbols and forward-tested before use in live environments.
Kadunagra-Pivot Point SuperTrend-trades analysis
📊 Pivot Point SuperTrend Strategy (MA-Filtered, 100% Equity)
This strategy is a trend-following system that combines Pivot Point–based SuperTrend logic with a higher-timeframe Moving Average filter and percentage-based risk control.
---
🔹 Core Logic
1️⃣ Trend Detection (Pivot Point SuperTrend)
Uses pivot highs and lows to calculate a dynamic center line
Builds ATR-based upper and lower bands
Determines market trend:
Bullish trend when price breaks above the trailing band
Bearish trend when price breaks below the trailing band
Trend changes generate:
Buy signal → trend flips from bearish to bullish
Sell signal → trend flips from bullish to bearish
---
2️⃣ Moving Average Trend Filter (User-Selectable)
A single Moving Average is used as a higher-timeframe confirmation
User can select the MA type from a dropdown:
SMA, EMA, WMA, VWMA, RMA, or HMA
Trade rules:
Long trades only when price is above the selected MA
Short trades only when price is below the selected MA
This helps avoid counter-trend trades and improves signal quality.
---
3️⃣ Trade Execution & Position Sizing
Strategy uses 100% of account equity per trade
No pyramiding
Long and short trades are handled symmetrically
---
4️⃣ Risk Management (Percentage Stop-Loss)
Uses a fixed percentage stop-loss
Stop-loss is calculated from the actual entry price:
Long SL → Entry Price − SL%
Short SL → Entry Price + SL%
Ensures consistent risk control across all trades
---
⏱ Recommended Timeframe & Market
✅ Default / Optimized Use Case
Timeframe: 4-Hour (4H)
Market: BTC (Bitcoin)
MA Length (default): 200 EMA
ATR Factor & Period: Tuned for swing-style trend moves
These default parameters are best suited for 4H BTC based on trend behavior and volatility.
---
⚙️ Customization & Flexibility
All parameters are fully adjustable and can be optimized for:
Different timeframes (1H, Daily, etc.)
Other cryptocurrencies or markets
More aggressive or conservative risk profiles
You can modify:
Pivot period
ATR factor & period
MA type and length
Stop-loss percentage
---
🧠 Strategy Style Summary
✔ Trend-following
✔ MA-filtered confirmation
✔ No repaint logic
✔ Works best in trending markets
✔ Suitable for swing trading
SSL MACD - nhuthang83supertrend method, supertrend method, supertrend method, supertrend method, supertrend method,
RSI + martingaleТорговая стратегия основанная на совмещении торговой системы Мартингейл и индекса относительной сила RSI.
Скрипт входит в сделку после пересечения заданных уровней перекупленности и перепроданности RSI. Набирает позицию, по умолчанию умнажая размер каждой докупки x2. Закрывается по тейк-профиту.
A trading strategy based on combining the Martingale trading system and the Relative Strength Index (RSI).
The script enters the trade after crossing the set overbought and oversold levels of the RSI. It takes a position, by default multiplying the size of each additional purchase by x2. It closes with a take profit.
MoneyMakers Scalping Signals1-5 min frame, a versatile market indicator designed to highlight emerging trends and structural shifts in crypto price action before they fully develop. By combining price dynamics, momentum behavior and market context into a clean visual output, it helps traders make more informed decisions without noise or lag. Suitable for both short- and mid-term analysis, the indicator offers a clearer view of potential reversal zones, trend continuations and key market cycles.
Turtle System 1Turtle Trader system is a famous trend-following trading methodology created by Richard Dennis and his partner William Eckhardt in the early 1980s.
The backstory is almost as interesting as the system itself:
Dennis believed trading success was a skill that could be taught, while Eckhardt thought it was more about innate talent.
To settle the debate, they recruited a group of ordinary people — with little to no trading experience — and trained them in a simple rules-based strategy. These students became known as the "Turtles".
The system focused on trading breakouts in futures markets (commodities, currencies, bonds, stock indices) with strict risk management.
System 1 (Short-Term)
Entry: Buy when price breaks above the 20-day high. Sell short when price breaks below the 20-day low.
Exit: Opposite 10-day breakout (i.e., sell long positions if price breaks below the 10-day low).
Ichimoku + EMA + RSI [Enhanced]# **Ichimoku + EMA + RSI Strategy - User Instructions**
---
## **📋 TABLE OF CONTENTS**
1. (#installation)
2. (#strategy-overview)
3. (#parameter-configuration)
4. (#understanding-the-dashboard)
5. (#entry--exit-rules)
6. (#best-practices)
7. (#optimization-guide)
8. (#troubleshooting)
---
## **🚀 INSTALLATION**
### **Step 1: Add to TradingView**
1. Open TradingView.com
2. Click **Pine Editor** (bottom of screen)
3. Click **"New"** → Select **"Blank indicator"**
4. Delete all default code
5. **Copy and paste** the complete script
6. Click **"Save"** (give it a name: "Ichimoku EMA RSI Strategy")
7. Click **"Add to Chart"**
### **Step 2: Verify Installation**
✅ You should see:
- Orange **200 EMA** line
- Blue **Tenkan** line
- Red **Kijun** line
- Green/Red **Cloud** (Ichimoku cloud)
- **Dashboard** in top-right corner
- **Strategy Tester** tab at bottom
---
## **📊 STRATEGY OVERVIEW**
### **What This Strategy Does**
Combines three powerful technical indicators to identify high-probability trades:
| Component | Purpose |
|-----------|---------|
| **200 EMA** | Determines overall trend direction |
| **Ichimoku Cloud** | Provides support/resistance and momentum |
| **RSI** | Filters momentum strength |
| **Dashboard** | Real-time signal analysis |
### **Trading Logic**
- **LONG**: Enter when all bullish conditions align
- **SHORT**: Enter when all bearish conditions align
- **EXITS**: Automatic via trailing stops, cloud breach, or TK cross reversal
---
## **⚙️ PARAMETER CONFIGURATION**
### **🔵 Trend Filter Settings**
```
EMA Length: 200 (default)
```
- **Lower (100-150)**: More sensitive, faster signals
- **Higher (250-300)**: More stable, slower signals
- **Recommendation**: Keep at 200 for most timeframes
---
### **🟢 RSI Settings**
```
RSI Length: 14 (default)
RSI Long Minimum: 55
RSI Short Maximum: 45
```
**Adjustment Guide:**
- **Aggressive** (more signals): Long=50, Short=50
- **Balanced** (default): Long=55, Short=45
- **Conservative** (fewer signals): Long=60, Short=40
---
### **🟡 Ichimoku Settings**
```
Tenkan Period: 9
Kijun Period: 26
Senkou B Period: 52
Displacement: 26
```
**Standard Configurations:**
| Timeframe | Tenkan | Kijun | Senkou B |
|-----------|--------|-------|----------|
| **1H - 4H** | 9 | 26 | 52 |
| **15m - 1H** | 7 | 22 | 44 |
| **Daily** | 9 | 26 | 52 |
**Filters:**
- ✅ **Require Chikou Confirmation**: Adds extra validation (recommended)
- ✅ **Require Cloud Position**: Price must be above/below cloud (recommended)
---
### **🔴 Risk Management**
```
ATR Length: 14
ATR Stop Loss Multiplier: 2.0
ATR Take Profit Multiplier: 3.0
Min Bars Between Trades: 3
```
**Risk/Reward Profiles:**
| Profile | SL Multiplier | TP Multiplier | Description |
|---------|---------------|---------------|-------------|
| **Conservative** | 2.5 | 4.0 | Wider stops, higher R:R |
| **Balanced** | 2.0 | 3.0 | Default settings |
| **Aggressive** | 1.5 | 2.5 | Tighter stops, faster exits |
---
### **🎨 Display Settings**
```
Show Dashboard: ON
Show Entry Signals: ON
```
- **Dashboard**: Shows real-time analysis
- **Entry Signals**: Green/Red arrows on chart
---
## **📈 UNDERSTANDING THE DASHBOARD**
### **Dashboard Components**
```
┌─────────────────────┬──────────┐
│ Component │ Status │
├─────────────────────┼──────────┤
│ EMA Trend │ BULL/BEAR│
│ Cloud │ ABOVE/BELOW/INSIDE│
│ TK Cross │ BULL/BEAR│
│ RSI │ 55.3 │
│ Chikou │ BULL/BEAR│
│ Signal │ STRONG LONG│
└─────────────────────┴──────────┘
```
### **Signal Interpretation**
| Signal | Score | Meaning | Action |
|--------|-------|---------|--------|
| **STRONG LONG** | 7+ | All conditions aligned | High confidence LONG |
| **LONG** | 4-6 | Most conditions met | Moderate confidence |
| **NEUTRAL** | <4 | Mixed signals | Wait for clarity |
| **SHORT** | 4-6 | Bearish bias | Moderate SHORT |
| **STRONG SHORT** | 7+ | All bearish conditions | High confidence SHORT |
---
## **📍 ENTRY & EXIT RULES**
### **✅ LONG ENTRY CONDITIONS**
All must be TRUE:
1. ✅ Price **above** 200 EMA
2. ✅ Price **above** Ichimoku Cloud
3. ✅ Tenkan **crosses above** Kijun (TK Bull Cross)
4. ✅ RSI **above** 55
5. ✅ Chikou **above** price 26 bars ago
6. ✅ Minimum bars since last trade met
**Visual Confirmation:**
- 🟢 Green triangle **below** candle
- Dashboard shows **"STRONG LONG"**
---
### **❌ LONG EXIT CONDITIONS**
Any ONE triggers exit:
1. ❌ Price closes **below** cloud bottom
2. ❌ Tenkan **crosses below** Kijun
3. ❌ ATR trailing stop hit (2.0 × ATR)
4. ❌ Take profit hit (3.0 × ATR)
---
### **✅ SHORT ENTRY CONDITIONS**
All must be TRUE:
1. ✅ Price **below** 200 EMA
2. ✅ Price **below** Ichimoku Cloud
3. ✅ Tenkan **crosses below** Kijun (TK Bear Cross)
4. ✅ RSI **below** 45
5. ✅ Chikou **below** price 26 bars ago
6. ✅ Minimum bars since last trade met
**Visual Confirmation:**
- 🔴 Red triangle **above** candle
- Dashboard shows **"STRONG SHORT"**
---
### **❌ SHORT EXIT CONDITIONS**
Any ONE triggers exit:
1. ❌ Price closes **above** cloud top
2. ❌ Tenkan **crosses above** Kijun
3. ❌ ATR trailing stop hit (2.0 × ATR)
4. ❌ Take profit hit (3.0 × ATR)
---
## **💡 BEST PRACTICES**
### **Recommended Timeframes**
| Timeframe | Trading Style | Signals/Week |
|-----------|---------------|--------------|
| **15m** | Scalping | 20-30 |
| **1H** | Day Trading | 10-15 |
| **4H** | Swing Trading | 5-10 |
| **Daily** | Position Trading | 2-5 |
---
### **Asset Classes**
✅ **Best Performance:**
- Major Forex pairs (EUR/USD, GBP/USD)
- Crypto (BTC/USD, ETH/USD)
- Major indices (SPX, NAS100)
⚠️ **Use Caution:**
- Low liquidity pairs
- Highly volatile altcoins
- Stocks with gaps
---
### **Risk Management Rules**
```
1. Never risk more than 2% per trade
2. Use the built-in ATR stops (don't override)
3. Respect the "Min Bars Between Trades" cooldown
4. Don't trade during major news events
5. Monitor dashboard - only trade STRONG signals
```
---
## **🔧 OPTIMIZATION GUIDE**
### **Step 1: Run Initial Backtest**
1. Open **Strategy Tester** tab (bottom of screen)
2. Set date range (minimum 6 months)
3. Review:
- **Net Profit**
- **Win Rate** (target: >50%)
- **Profit Factor** (target: >1.5)
- **Max Drawdown** (target: <20%)
---
### **Step 2: Optimize Parameters**
**If Win Rate is Low (<45%):**
- Increase RSI thresholds (Long=60, Short=40)
- Enable both Chikou + Cloud filters
- Increase "Min Bars Between Trades" to 5
**If Too Few Signals:**
- Decrease RSI thresholds (Long=50, Short=50)
- Reduce EMA to 150
- Adjust Ichimoku to faster settings (7/22/44)
**If Drawdown is High (>25%):**
- Increase ATR Stop Loss Multiplier to 2.5
- Add longer cooldown period (5+ bars)
- Trade only STRONG signals
---
### **Step 3: Forward Test**
```
1. Paper trade for 2-4 weeks
2. Compare results to backtest
3. Adjust if live results differ significantly
4. Only go live after consistent paper trading success
```
---
## **🛠️ TROUBLESHOOTING**
### **Problem: No Signals Appearing**
**Solutions:**
- Check RSI levels aren't too restrictive
- Verify timeframe is appropriate (try 1H or 4H)
- Ensure both filters aren't enabled on ranging markets
- Review dashboard - components may be conflicting
---
### **Problem: Too Many Losing Trades**
**Solutions:**
- Enable **both** Chikou + Cloud filters
- Increase RSI thresholds (more conservative)
- Only trade when dashboard shows "STRONG" signals
- Increase cooldown period to avoid overtrading
---
### **Problem: Dashboard Not Showing**
**Solutions:**
- Verify "Show Dashboard" is enabled in settings
- Check chart isn't zoomed out too far
- Refresh chart (F5)
- Re-add indicator to chart
---
### **Problem: Stops Too Tight/Wide**
**Solutions:**
- **Too Tight**: Increase ATR Stop Loss Multiplier to 2.5-3.0
- **Too Wide**: Decrease to 1.5-1.8
- Verify ATR Length is appropriate for timeframe
- Consider asset volatility (crypto needs wider stops)
---
## **📞 QUICK REFERENCE CARD**
```
═══════════════════════════════════════════════════
STRATEGY QUICK REFERENCE
═══════════════════════════════════════════════════
BEST TIMEFRAMES: 1H, 4H, Daily
BEST ASSETS: Major Forex, BTC, ETH, Indices
RISK PER TRADE: 1-2% of capital
LONG ENTRY:
✓ Price > 200 EMA
✓ Price > Cloud
✓ TK Bull Cross
✓ RSI > 55
✓ Dashboard = STRONG LONG
SHORT ENTRY:
✓ Price < 200 EMA
✓ Price < Cloud
✓ TK Bear Cross
✓ RSI < 45
✓ Dashboard = STRONG SHORT
EXITS:
× Cloud breach
× TK reverse cross
× ATR trailing stop
× Take profit (3:1 R:R)
═══════════════════════════════════════════════════
```
---
## **⚠️ DISCLAIMER**
This strategy is for **educational purposes only**. Always:
- Backtest thoroughly on your specific assets
- Paper trade before going live
- Never risk more than you can afford to lose
- Past performance ≠ future results
- Consider market conditions and your risk tolerance
---
**Happy Trading! 📈**
TradingView — Track All Markets
Where the world charts, chats, and trades markets. We're a supercharged super-charting platform and social network for traders and investors. Free to sign up.
ICT Entry V2 [TS_Indie]📌 Description – ICT Entry V2
The market structure, liquidity, FVG, and iFVG mechanisms remain the same as in Version 1.
However, the price action for order entries is different, with the positions of the FVG and iFVG swapped.
Pending orders and stop loss are placed at the iFVG.
⚙️ Core Logic & Working Mechanism
I won’t explain FVG in detail, as most traders are already familiar with it.
Let’s focus on the mechanism of iFVG instead.
The concept of iFVG is based on a supply-to-demand flip and a demand-to-supply flip within an FVG zone.
For an iFVG to be confirmed, the candle close must break through the FVG.
A wick alone does not count as a valid iFVG confirmation.
The confirmation of market structure swings uses a pivot length mechanism combined with price action.
It validates a swing by detecting a structure break formed by candles making new highs or new lows.
📈 Buy Setup
1.Liquidity sweep on the demand side, with price closing above the liquidity level.
2.A demand zone is formed as iFVG and FVG, where FVG is located above iFVG.
3.The gap between the upper box of iFVG and the lower box of FVG must be within the defined Min and Max range.
4.Market Structure must be in a Bullish trend.
5.Place a Pending Order at the upper box of iFVG and set Stop Loss at the lower box of iFVG (Entry and Stop Loss can be adjusted using Entry Zone and ATR-based Stop Loss).
📉 Sell Setup
1.Liquidity sweep on the supply side, with price closing below the liquidity level.
2.A supply zone is formed as iFVG and FVG, where FVG is located below iFVG.
3.The gap between the lower box of iFVG and the upper box of FVG must be within the defined Min and Max range.
4.Market Structure must be in a Bearish trend.
5.Place a Pending Order at the lower box of iFVG and set Stop Loss at the upper box of iFVG (Entry and Stop Loss can be adjusted using Entry Zone and ATR-based Stop Loss).
⚙️ Liquidity Sweep Conditions
➯ When a liquidity sweep occurs on the demand side, the system will start looking for Buy Setup conditions.
➯ When a liquidity sweep occurs on the supply side, the system will immediately switch to looking for Sell Setup conditions.
➯ The system will always prioritize the most recent liquidity sweep and search for setups based on that direction.
➯ The liquidity sweep condition will be invalidated when price closes back below (for demand sweep) or above (for supply sweep) the most recently swept liquidity level.
⭐ Pending Order Cancellation Conditions
A Pending Order will be canceled under the following conditions:
1.A new Price Action signal appears on either the Buy or Sell side.
2.When Time Session is enabled, the Pending Order is canceled once price exits the selected session.
🕹 Order Management Rule
When there is an active open position, the indicator restricts the creation of new Pending Orders to prevent overlapping positions.
⚠️ Disclaimer
This indicator is designed for educational and research purposes only. It does not guarantee profits and should not be considered financial advice. Trading in financial markets involves significant risk, including the potential loss of capital.
🥂 Community Sharing
If you find parameter settings that work well or produce strong statistical results, feel free to share them with the community so we can improve and develop this indicator together.






















