
এটি একটি ব্রেক-আউট ট্রেডিং কৌশল যা খাঁটি মূল্যের ক্রিয়াকলাপের উপর ভিত্তি করে তৈরি করা হয়েছে, যা 1: 5 এর উচ্চ ঝুঁকিপূর্ণ রিটার্ন অনুপাতের সাথে ডিজাইন করা হয়েছে। কৌশলটি মূল মূল্যের স্তরের ব্রেক-আউটগুলি সনাক্ত করে এবং বাজারের কাঠামোর গতিশীলতার সাথে স্টপ লস এবং লাভের লক্ষ্য নির্ধারণ করে। কৌশলটি কোনও প্রযুক্তিগত সূচকের উপর নির্ভর করে না এবং সম্পূর্ণরূপে রিয়েল-টাইম মূল্যের ক্রিয়াকলাপের উপর ভিত্তি করে ট্রেডিং সিদ্ধান্ত নেয়।
কৌশলটির মূল যুক্তিতে নিম্নলিখিত মূল অংশগুলি অন্তর্ভুক্ত রয়েছে:
প্রশমন ব্যবস্থা:
এটি একটি কঠোর, যুক্তিসঙ্গতভাবে সুস্পষ্ট মূল্য ক্রিয়াকলাপের ট্রেডিং কৌশল। উচ্চ ঝুঁকি-ফেরতের অনুপাতের নকশা, কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণের সাথে উল্লেখযোগ্য লাভের সন্ধান করা। কৌশলটির সুবিধা হ’ল খাঁটি মূল্য চালিত, প্যারামিটারগুলি নমনীয়ভাবে সামঞ্জস্যযোগ্য এবং ঝুঁকি নিয়ন্ত্রণের নিখুঁততা। যদিও কিছু ভুয়া বিপর্যয়ের ঝুঁকি রয়েছে, তবে প্রস্তাবিত অপ্টিমাইজেশনের দিকনির্দেশের মাধ্যমে কৌশলটির স্থায়িত্ব এবং নির্ভরযোগ্যতা আরও বাড়ানো যেতে পারে। কৌশলটি প্রবণতাযুক্ত বাজারের পরিবেশে ব্যবহারের জন্য উপযুক্ত এবং ব্যবসায়ীদের কঠোরভাবে ট্রেডিং শৃঙ্খলা মেনে চলতে হবে।
/*backtest
start: 2024-02-19 00:00:00
end: 2024-11-14 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Filtered Price Action Breakout", overlay=true)
// === INPUTS ===
lookback = input.int(20, title="Breakout Lookback Period", minval=5)
stopLookback = input.int(10, title="Stop Loss Lookback Period", minval=3)
rrMultiplier = input.float(5.0, title="Risk-to-Reward Multiplier", step=0.1)
maxTradesPerDay = input.int(5, title="Max Trades Per Day", minval=1)
// Ensure there are enough bars for calculations
inRange = bar_index >= lookback
// === CALCULATIONS ===
// Highest high and lowest low over the 'lookback' period
highestHigh = ta.highest(high, lookback)
lowestLow = ta.lowest(low, lookback)
// Define breakout conditions (using previous bar's level)
bullBreakout = ta.crossover(close, highestHigh[1])
bearBreakout = ta.crossunder(close, lowestLow[1])
// Store breakout signals in variables to prevent inconsistencies
bullBreakoutSignal = bullBreakout
bearBreakoutSignal = bearBreakout
// Determine stop levels based on recent swing lows/highs
longStop = ta.lowest(low, stopLookback)
shortStop = ta.highest(high, stopLookback)
// Track number of trades per day (fixing boolean condition issue)
newDay = ta.change(time("D")) != 0
todayTrades = ta.barssince(newDay)
tradeCount = 0
if newDay
tradeCount := 0
else
tradeCount := tradeCount + 1
// === STRATEGY LOGIC: ENTRY & EXIT ===
if bullBreakoutSignal and tradeCount < maxTradesPerDay
entryPrice = close
stopLevel = longStop
risk = entryPrice - stopLevel
if risk > 0
target = entryPrice + rrMultiplier * risk
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=stopLevel, limit=target)
tradeCount := tradeCount + 1
// // Draw Markups
// label.new(bar_index, entryPrice, text="Long Entry", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
// line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.green, width=2)
// line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.red, width=2, style=line.style_dotted)
// line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
// label.new(bar_index, stopLevel, text="Stop Loss", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_down)
// label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_up)
if bearBreakoutSignal and tradeCount < maxTradesPerDay
entryPrice = close
stopLevel = shortStop
risk = stopLevel - entryPrice
if risk > 0
target = entryPrice - rrMultiplier * risk
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=stopLevel, limit=target)
tradeCount := tradeCount + 1
// // Draw Markups
// label.new(bar_index, entryPrice, text="Short Entry", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
// line.new(x1=bar_index, y1=entryPrice, x2=bar_index + 5, y2=entryPrice, color=color.red, width=2)
// line.new(x1=bar_index, y1=stopLevel, x2=bar_index + 5, y2=stopLevel, color=color.green, width=2, style=line.style_dotted)
// line.new(x1=bar_index, y1=target, x2=bar_index + 5, y2=target, color=color.blue, width=2, style=line.style_dashed)
// label.new(bar_index, stopLevel, text="Stop Loss", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_up)
// label.new(bar_index, target, text="Target", color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_down)
// === PLOTTING ===
plot(highestHigh, color=color.green, title="Highest High (Breakout Level)")
plot(lowestLow, color=color.red, title="Lowest Low (Breakout Level)")