
এই কৌশলটি একটি সমন্বিত প্রবণতা ট্র্যাকিং এবং গতিশীলতা সমন্বিত ট্রেডিং সিস্টেম, যা মূলত সুষম প্রবণতা বিচার এবং অপেক্ষাকৃত শক্তিশালী সূচক (আরএসআই) গতিশীলতা নিশ্চিতকরণের উপর ভিত্তি করে উচ্চ সম্ভাব্যতার ব্যবসায়ের সুযোগগুলি সনাক্ত করে। কৌশলটির মূলটি “অগ্রগতিশীল” ট্রেডিং দর্শন অনুসরণ করে, কেবলমাত্র বাজারের প্রধান প্রবণতার দিকনির্দেশ নিশ্চিত করার পরে প্রতিক্রিয়া অপেক্ষা করে এবং গতিশীলতার সূচকগুলির সাথে মিলিত হয়ে সর্বোত্তম প্রবেশের স্থানটি সন্ধান করে। একই সাথে, কৌশলটি বাস্তব ওঠানামা (এটিআর) এর উপর ভিত্তি করে একটি ঝুঁকি ব্যবস্থাপনা সিস্টেম ব্যবহার করে, যা প্রতিটি ব্যবসায়ের ঝুঁকি সামঞ্জস্য নিশ্চিত করে এবং বিভাজন লাভের মাধ্যমে তহবিলের ব্যবস্থাপনা এবং ক্ষতির ব্যবস্থাপনার মাধ্যমে তহবিল পরিচালনার কার্যকারিতা অনুকূল করে।
কৌশলটি চারটি মূল মডিউলের উপর ভিত্তি করে কাজ করেঃ প্রবণতা সনাক্তকরণ, প্রবেশের শর্তাদি বিচার, ঝুঁকি ব্যবস্থাপনা এবং মুনাফা অপ্টিমাইজেশন।
ট্রেন্ড সনাক্তকরণ:
প্রবেশের শর্ত:
ঝুঁকি ব্যবস্থাপনা:
মুনাফা অনুকূলিতকরণ:
কৌশল বাস্তবায়নের সময়, সঠিক গাণিতিক গণনা ব্যবহার করে সর্বোত্তম অবস্থানের আকার নির্ধারণ করা হয়, যা প্রতিটি লেনদেনের ঝুঁকিকে পূর্বনির্ধারিত স্তরে নিয়ন্ত্রণ করে এবং প্যারামিটারগুলিকে বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নিতে দেয়।
এই কৌশলটির উল্লেখযোগ্য সুবিধাগুলি হলঃ
উচ্চমানের ট্রেডিং সিগন্যাল: প্রবণতা এবং গতিশীলতার সমন্বয় নিশ্চিতকরণের মাধ্যমে, শুধুমাত্র উচ্চ সম্ভাব্যতার দিক দিয়ে পজিশন খুলুন, উল্লেখযোগ্যভাবে বিজয়ী হার বৃদ্ধি করুন ৷ কোডের মধ্যেlong_trend_okএবংlong_rsi_recoveryইত্যাদির সমন্বয়ে ট্রেডিং সিগন্যালের গুণমান নিশ্চিত করা।
স্বনির্ধারিত ঝুঁকি ব্যবস্থাপনাএটিআর-ভিত্তিক স্টপ ডিজাইন কৌশলটিকে বাজারের অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে ঝুঁকি প্যারামিটারগুলিকে সামঞ্জস্য করতে সক্ষম করে। অস্থির বাজার পরিবেশে আরও আরামদায়ক স্টপ ব্যবহার করা হয়, যখন শান্ত বাজারে আরও কঠোর স্টপ ব্যবহার করা হয়, সর্বোত্তম ঝুঁকি নিয়ন্ত্রণের জন্য।
তহবিল ব্যবস্থাপনা অপ্টিমাইজেশনবিভাগীয় মুনাফা ব্যবস্থাঃ (৫০% পজিশন ২.১ আর-এ মুনাফা অর্জন করে, বাকি অংশে ক্রমাগত ক্ষতির ব্যবস্থা করা হয়) একটি ভারসাম্য বজায় রাখে যা মুনাফা নিশ্চিত করে এবং প্রবণতা ক্যাপচারকে সর্বাধিক করে তোলে।long_tp1_hitএবংlong_trail_stopইলেকট্রনিক ভেরিয়েবল এই প্রক্রিয়াকে সঠিকভাবে নিয়ন্ত্রণ করে।
নিয়মগুলি স্বচ্ছ
ভিজ্যুয়ালাইজড সিদ্ধান্ত গ্রহণকৌশলঃ ট্রেডারদের বুঝতে এবং কৌশল পরিচালনার উপর নজর রাখতে সহায়তা করার জন্য কৌশলটি একটি উন্নত ভিজ্যুয়াল ফিডব্যাক সিস্টেম সরবরাহ করে, যার মধ্যে রয়েছে প্রবণতা ব্যাকগ্রাউন্ড রঙ, প্রবেশের সংকেত চিহ্ন এবং স্টপ / লাভের লক্ষ্যের দৃশ্যমানতা।
প্যারামিটার সামঞ্জস্যপূর্ণমূল প্যারামিটারগুলি যেমন ইএমএ চক্র, আরএসআই হ্রাস, এটিআর গুণক ইত্যাদি সামঞ্জস্যযোগ্য, যাতে কৌশলগুলি বিভিন্ন বাজার পরিস্থিতি এবং ব্যক্তিগত ঝুঁকি পছন্দগুলির সাথে খাপ খায়।
যদিও এই কৌশলটির একাধিক সুবিধা রয়েছে, তবুও এর মধ্যে কিছু সম্ভাব্য ঝুঁকি রয়েছেঃ
প্রবণতা সনাক্তকরণ: ট্রেন্ড নির্ধারণের জন্য ইএমএ ব্যবহারের ক্ষেত্রে অন্তর্নিহিত পিছিয়ে থাকা, ট্রেন্ডের শুরুতে কিছু সুযোগ মিস করা বা ট্রেন্ড শেষ হওয়ার পরেও একই অবস্থানে থাকা। সমাধানটি হ’ল স্বল্পমেয়াদী ট্রেন্ড নিশ্চিতকরণ সূচক যুক্ত করা বা সংবেদনশীলতার জন্য ইএমএ প্যারামিটারগুলি সামঞ্জস্য করা।
ভুয়া আক্রমণের ঝুঁকি: RSI বিপরীত সিগন্যালের ফলে ভুল ট্রেডিংয়ের সম্ভাবনা রয়েছে। এই ঝুঁকি মোকাবেলায়, নিশ্চিতকরণ শর্তগুলি যেমন ট্র্যাডিশনাল ভলিউম পরিবর্তন বা অন্যান্য গতিশীল সূচকগুলির সমন্বয় নিশ্চিতকরণ যুক্ত করা যেতে পারে।
ট্রান্সক্রিপ্ট মার্কেটের জন্য উপযুক্ত নয়: কৌশলটি স্পষ্ট প্রবণতা বাজারে সর্বোত্তমভাবে কাজ করে, এবং এটি প্রান্তিক সমন্বয় পর্যায়ে ঘন ঘন ভুল সংকেত এবং ক্ষতিগ্রস্ত লেনদেনের কারণ হতে পারে। বাজারটি সুস্পষ্ট ব্যাপ্তি সহ্য করার সময় কৌশলটি স্থগিত করার পরামর্শ দেওয়া হয়, যা প্রবণতা শক্তি ফিল্টার যুক্ত করে সনাক্ত করা যায়।
পরামিতি সংবেদনশীলতা: কৌশলগত পারফরম্যান্স প্যারামিটার নির্বাচনের জন্য সংবেদনশীল, বিশেষত ইএমএ চক্র এবং আরএসআই থ্রেশহোল্ডের সেটিং। ঐতিহাসিক পুনর্বিবেচনার মাধ্যমে বিভিন্ন বাজারের অবস্থার অধীনে প্যারামিটারগুলি অপ্টিমাইজ করার পরামর্শ দেওয়া হয় যাতে অতিরিক্ত ফিট না হয়।
তহবিল ব্যবস্থাপনা ঝুঁকি: স্থির শতাংশ ঝুঁকি ব্যবস্থাপনা এখনও চরম বাজার অবস্থার অধীনে ক্রমাগত ক্ষয়ক্ষতি জমা হতে পারে। ক্রমাগত ক্ষতির পরে ধীরে ধীরে পজিশনের আকার হ্রাস করার জন্য একটি গতিশীল ঝুঁকি সমন্বয় ব্যবস্থা বাস্তবায়নের বিষয়টি বিবেচনা করার পরামর্শ দেওয়া হয়েছে।
নীতি কোড বিশ্লেষণের ভিত্তিতে, নিম্নলিখিত সম্ভাব্য অপ্টিমাইজেশান দিকগুলি রয়েছেঃ
একাধিক সময়কালের সমন্বয় নিশ্চিতকরণ: একাধিক সময়কালের প্রবণতা এবং গতিশীলতার সংকেতকে একত্রিত করে ট্রেডিং সিদ্ধান্তের নির্ভুলতা বাড়ায়। উদাহরণস্বরূপ, আপনি পরীক্ষা করতে পারেন যে সূর্যের লাইনের প্রবণতাটি 4 ঘন্টা গতিশীলতার সাথে সামঞ্জস্যপূর্ণ কিনা, কেবলমাত্র যখন দিকটি সামঞ্জস্যপূর্ণ হয় তখন ট্রেড করুন।
প্রবণতা বৃদ্ধি ফিল্টার করুনট্রেন্ডের শক্তির সূচক যেমন এডিএক্স (এভারেজ ডাইরেকশনাল ইনডেক্স) প্রবর্তন করুন, যখন ট্রেন্ডটি যথেষ্ট শক্তিশালী হয় তখনই পজিশন খুলুন, দুর্বল ট্রেন্ড বা ক্রস মার্কেটের ভুল সংকেত এড়াতে। কোডটি পাওয়া যাবেuptrendএবংdowntrendশর্তাদির মধ্যে দৃঢ়তা বিচার।
ডায়নামিক অ্যাডজাস্টমেন্ট রিস্ক প্যারামিটার: বাজার ওঠানামা, অ্যাকাউন্টের স্বার্থের বক্ররেখা বা কৌশলগত পারফরম্যান্সের সূচকের উপর ভিত্তি করে প্রতিটি লেনদেনের ঝুঁকির অনুপাতকে গতিশীলভাবে সামঞ্জস্য করুন, কৌশলটি ভাল পারফরম্যান্সের সময় ঝুঁকি বাড়িয়ে তুলুন এবং খারাপ পারফরম্যান্সের সময় ঝুঁকি হ্রাস করুন।
মার্কেট এনভায়রনমেন্টাল অ্যানালাইসিস: ম্যাক্রো মার্কেট এনভায়রনমেন্ট আইডেন্টিফিকেশন মডিউলগুলি যেমন ওঠানামা সূচক বা বাজার কাঠামোর বিশ্লেষণের প্রবর্তন, বিভিন্ন বাজার পর্যায়ে স্বয়ংক্রিয়ভাবে কৌশলগত প্যারামিটারগুলি সামঞ্জস্য করে বা নির্বাচনী সক্ষমকরণ।
স্ট্রোক প্রতিরোধক অপ্টিমাইজেশন: বর্তমান কৌশলটি একটি নির্দিষ্ট 2.1R ব্যবহার করে প্রথম স্টপ পয়েন্ট হিসাবে, সমর্থন প্রতিরোধের উপর ভিত্তি করে স্টপ পয়েন্টটি পরিবর্তন করতে বা মূল মূল্যের স্তরের কাছাকাছি মুনাফা অর্জন করতে বিবেচনা করা যেতে পারে।
ট্রেডিং টাইম ফিল্টার যুক্ত করুন: সময় ফিল্টার বা ট্র্যাফিকের শর্ত বিবেচনা করুন, কম তরলতার সময় বা অস্বাভাবিক ট্র্যাফিকের পরিস্থিতি এড়িয়ে চলুন, সংকেতের গুণমান উন্নত করুন।
মেশিন লার্নিং অপ্টিমাইজেশন: মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে ডায়নামিকভাবে সর্বোত্তম প্যারামিটার বা লেনদেনের ওজনের পূর্বাভাস দেওয়া, রিয়েল-টাইম বাজার অবস্থার সাথে খাপ খাইয়ে নেওয়া।
ট্রেন্ড ডায়নামিক্স এবং ওভারওয়েটেড রিস্ক ম্যানেজমেন্ট ট্রেডিং কৌশল একটি সম্পূর্ণ ট্রেডিং সিস্টেম যা ট্রেন্ড সনাক্তকরণ, ডায়নামিক্স নিশ্চিতকরণ, সুনির্দিষ্ট ঝুঁকি নিয়ন্ত্রণ এবং বুদ্ধিমান তহবিল পরিচালনার একত্রিত করে। ইএমএ সমান্তরাল দ্বারা বাজারের মূল দিক নির্ধারণ করা হয়, আরএসআই ডায়নামিক্স সূচকটি সর্বোত্তম প্রবেশের সময় নির্ধারণ করে, যখন এটিআর-ভিত্তিক গতিশীল স্টপ লস এবং বিভাগীয় মুনাফার ব্যবস্থা ব্যবহার করে, ঝুঁকি এবং উপার্জনের সর্বোত্তম ভারসাম্য অর্জন করে।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ’ল এটির পদ্ধতিগততা এবং শৃঙ্খলাবদ্ধতা, ট্রেডিং প্রক্রিয়ার মধ্যে আবেগগত ব্যাঘাতকে স্পষ্ট পরিমাণের নিয়মের মাধ্যমে সরিয়ে দেয়, যা স্থিতিশীল ট্রেডিং স্টাইলের জন্য অনুকূল পরিমাণ ব্যবসায়ীদের জন্য উপযুক্ত। একই সাথে, কৌশলটির ঝুঁকি পরিচালনার মডিউলটি নিশ্চিত করে যে একক ক্ষতি সীমাবদ্ধ এবং লাভের সম্ভাবনা সীমাহীন, সফল ব্যবসায়ের মূল নীতি অনুসারে।
যদিও কিছু অন্তর্নিহিত সীমাবদ্ধতা রয়েছে, যেমন প্রবণতা বিচার ব্যাকগ্রাউন্ড এবং অন্তর্নিহিত বাজার অভিযোজনযোগ্যতার অভাব রয়েছে, তবে পূর্বোক্ত অপ্টিমাইজেশান দিকনির্দেশগুলি, যেমন বহু-সময়কালীন বিশ্লেষণ, প্রবণতা শক্তি ফিল্টারিং এবং গতিশীল ঝুঁকি সমন্বয় ইত্যাদির মাধ্যমে কৌশলগুলির রুক্ষতা এবং অভিযোজনযোগ্যতা আরও বাড়ানো যেতে পারে। ভবিষ্যতের বিকাশের দিকটি কৌশলগুলির স্ব-অনুকূলতা বাড়ানোর উপর দৃষ্টি নিবদ্ধ করা উচিত, যাতে তারা বিভিন্ন বাজারের পরিস্থিতিতে স্থিতিশীল পারফরম্যান্স বজায় রাখতে পারে।
এই কৌশলটি এমন একটি দৃঢ় কাঠামো প্রদান করে যা ব্যক্তিগত ঝুঁকিপূর্ণ পছন্দ এবং বাজারের বোঝার উপর ভিত্তি করে আরও কাস্টমাইজ এবং অপ্টিমাইজ করা যায়।
/*backtest
start: 2024-06-17 00:00:00
end: 2025-06-15 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("Crypto Swing Trading Strategy (1-5 Day)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, calc_on_every_tick=false, calc_on_order_fills=false)
// ============================================================================
// STRATEGY INPUTS
// ============================================================================
// Trend Filter Settings
ema_fast_length = input.int(50, title="Fast EMA Length", minval=1, group="Trend Filter")
ema_slow_length = input.int(200, title="Slow EMA Length", minval=1, group="Trend Filter")
// RSI Settings
rsi_length = input.int(14, title="RSI Length", minval=1, group="Momentum")
rsi_oversold = input.int(45, title="RSI Oversold Level", minval=1, maxval=50, group="Momentum")
rsi_overbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=99, group="Momentum")
// ATR Settings
atr_length = input.int(14, title="ATR Length", minval=1, group="Risk Management")
atr_stop_mult = input.float(1.5, title="ATR Stop Loss Multiplier", minval=0.1, step=0.1, group="Risk Management")
atr_trail_mult = input.float(1.0, title="ATR Trailing Stop Multiplier", minval=0.1, step=0.1, group="Risk Management")
// Risk Management
risk_per_trade = input.float(1.0, title="Risk Per Trade (%)", minval=0.1, maxval=5.0, step=0.1, group="Risk Management")
reward_ratio = input.float(2.1, title="Initial Take Profit Ratio (R:R)", minval=1.0, step=0.1, group="Risk Management")
// Strategy Settings
pullback_distance = input.float(1.0, title="Max Distance from 50 EMA for Pullback (ATR)", minval=0.1, step=0.1, group="Entry Conditions")
enable_shorts = input.bool(true, title="Enable Short Trades", group="Strategy Settings")
enable_longs = input.bool(true, title="Enable Long Trades", group="Strategy Settings")
// ============================================================================
// INDICATOR CALCULATIONS
// ============================================================================
// Moving Averages
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)
// RSI
rsi = ta.rsi(close, rsi_length)
// ATR
atr = ta.atr(atr_length)
// ============================================================================
// TREND IDENTIFICATION
// ============================================================================
// Primary trend based on EMA relationship
uptrend = ema_fast > ema_slow
downtrend = ema_fast < ema_slow
// ============================================================================
// ENTRY CONDITIONS
// ============================================================================
// Long Entry Conditions
long_trend_ok = uptrend and enable_longs
long_pullback = math.abs(close - ema_fast) <= (pullback_distance * atr) and close < ema_fast[1]
long_rsi_oversold = rsi[1] < rsi_oversold
long_rsi_recovery = rsi > rsi_oversold and rsi[1] <= rsi_oversold
long_entry_condition = long_trend_ok and long_pullback and long_rsi_oversold and long_rsi_recovery
// Short Entry Conditions
short_trend_ok = downtrend and enable_shorts
short_pullback = math.abs(close - ema_fast) <= (pullback_distance * atr) and close > ema_fast[1]
short_rsi_overbought = rsi[1] > rsi_overbought
short_rsi_decline = rsi < rsi_overbought and rsi[1] >= rsi_overbought
short_entry_condition = short_trend_ok and short_pullback and short_rsi_overbought and short_rsi_decline
// ============================================================================
// POSITION SIZING
// ============================================================================
// Calculate position size based on risk per trade and ATR stop distance
calculate_position_size(entry_price, stop_price, risk_percent) =>
risk_amount = strategy.equity * (risk_percent / 100)
stop_distance = math.abs(entry_price - stop_price)
position_size = stop_distance > 0 ? risk_amount / stop_distance : 0
position_size
// ============================================================================
// STRATEGY VARIABLES
// ============================================================================
var float long_entry_price = na
var float long_stop_price = na
var float long_tp1_price = na
var float long_trail_stop = na
var bool long_tp1_hit = false
var float short_entry_price = na
var float short_stop_price = na
var float short_tp1_price = na
var float short_trail_stop = na
var bool short_tp1_hit = false
// ============================================================================
// LONG TRADE MANAGEMENT
// ============================================================================
// Long Entry
if long_entry_condition and strategy.position_size == 0
long_entry_price := close
long_stop_price := close - (atr_stop_mult * atr)
long_tp1_price := close + (reward_ratio * (close - long_stop_price))
long_trail_stop := long_stop_price
long_tp1_hit := false
// Calculate position size
pos_size = calculate_position_size(long_entry_price, long_stop_price, risk_per_trade)
strategy.entry("Long", strategy.long, qty=pos_size)
strategy.exit("Long Stop", "Long", stop=long_stop_price)
// Long TP1 Management (Take 50% profit at 2:1 R:R)
if strategy.position_size > 0 and not long_tp1_hit and high >= long_tp1_price
long_tp1_hit := true
strategy.close("Long", qty_percent=50, comment="TP1 - 50%")
// Move stop to breakeven
long_trail_stop := long_entry_price
strategy.cancel("Long Stop")
// Long Trailing Stop (for remaining 50% position)
if strategy.position_size > 0 and long_tp1_hit
// Calculate new trailing stop
highest_since_tp1 = ta.highest(high, 1)
new_trail_stop = highest_since_tp1 - (atr_trail_mult * atr)
// Only move stop up, never down
if new_trail_stop > long_trail_stop
long_trail_stop := new_trail_stop
// Exit on trailing stop or trend reversal
if close <= long_trail_stop or not uptrend
strategy.close("Long", comment=not uptrend ? "Trend Reversal" : "Trailing Stop")
// ============================================================================
// SHORT TRADE MANAGEMENT
// ============================================================================
// Short Entry
if short_entry_condition and strategy.position_size == 0
short_entry_price := close
short_stop_price := close + (atr_stop_mult * atr)
short_tp1_price := close - (reward_ratio * (short_stop_price - close))
short_trail_stop := short_stop_price
short_tp1_hit := false
// Calculate position size
pos_size = calculate_position_size(short_entry_price, short_stop_price, risk_per_trade)
strategy.entry("Short", strategy.short, qty=pos_size)
strategy.exit("Short Stop", "Short", stop=short_stop_price)
// Short TP1 Management (Take 50% profit at 2:1 R:R)
if strategy.position_size < 0 and not short_tp1_hit and low <= short_tp1_price
short_tp1_hit := true
strategy.close("Short", qty_percent=50, comment="TP1 - 50%")
// Move stop to breakeven
short_trail_stop := short_entry_price
strategy.cancel("Short Stop")
// Short Trailing Stop (for remaining 50% position)
if strategy.position_size < 0 and short_tp1_hit
// Calculate new trailing stop
lowest_since_tp1 = ta.lowest(low, 1)
new_trail_stop = lowest_since_tp1 + (atr_trail_mult * atr)
// Only move stop down, never up
if new_trail_stop < short_trail_stop
short_trail_stop := new_trail_stop
// Exit on trailing stop or trend reversal
if close >= short_trail_stop or not downtrend
strategy.close("Short", comment=not downtrend ? "Trend Reversal" : "Trailing Stop")
// ============================================================================
// PLOTTING
// ============================================================================
// Plot EMAs
plot(ema_fast, title="EMA 50", color=color.blue, linewidth=2)
plot(ema_slow, title="EMA 200", color=color.red, linewidth=2)
// Color background based on trend
bgcolor(uptrend ? color.new(color.green, 95) : downtrend ? color.new(color.red, 95) : na, title="Trend Background")
// Plot RSI levels (scaled to price for visualization)
hline(rsi_overbought, title="RSI Overbought", color=color.red, linestyle=hline.style_dashed)
hline(rsi_oversold, title="RSI Oversold", color=color.green, linestyle=hline.style_dashed)
// Plot entry signals
plotshape(long_entry_condition, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.normal)
plotshape(short_entry_condition, title="Short Entry", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.normal)
// Plot stop losses and targets for current position
plot(strategy.position_size > 0 ? long_trail_stop : na, title="Long Trailing Stop", color=color.red, style=plot.style_stepline, linewidth=2)
plot(strategy.position_size < 0 ? short_trail_stop : na, title="Short Trailing Stop", color=color.red, style=plot.style_stepline, linewidth=2)
plot(strategy.position_size > 0 and not long_tp1_hit ? long_tp1_price : na, title="Long TP1", color=color.green, style=plot.style_cross, linewidth=2)
plot(strategy.position_size < 0 and not short_tp1_hit ? short_tp1_price : na, title="Short TP1", color=color.green, style=plot.style_cross, linewidth=2)
// ============================================================================
// INFORMATION DISPLAY (Using Labels instead of Table)
// ============================================================================
// Display key information using labels on the last bar
if barstate.islast
// Create info label with key metrics
trend_text = uptrend ? "UP" : downtrend ? "DOWN" : "SIDE"
position_text = strategy.position_size > 0 ? "LONG" : strategy.position_size < 0 ? "SHORT" : "NONE"
info_text = "Trend: " + trend_text + "\nRSI: " + str.tostring(math.round(rsi, 1)) + "\nATR: " + str.tostring(math.round(atr, 2)) + "\nPosition: " + position_text
label.new(bar_index, high + atr, info_text,
color=uptrend ? color.new(color.green, 80) : downtrend ? color.new(color.red, 80) : color.new(color.gray, 80),
textcolor=color.white, style=label.style_label_down, size=size.normal)
// ============================================================================
// ALERTS
// ============================================================================
// Alert conditions
alertcondition(long_entry_condition, title="Long Entry Signal", message="LONG: Swing trading signal for {{ticker}} at {{close}}")
alertcondition(short_entry_condition, title="Short Entry Signal", message="SHORT: Swing trading signal for {{ticker}} at {{close}}")
alertcondition(strategy.position_size > 0 and long_tp1_hit, title="Long TP1 Hit", message="LONG TP1: First target hit for {{ticker}} at {{close}}")
alertcondition(strategy.position_size < 0 and short_tp1_hit, title="Short TP1 Hit", message="SHORT TP1: First target hit for {{ticker}} at {{close}}")
// ============================================================================
// STRATEGY SUMMARY
// ============================================================================
// This strategy implements the full swing trading approach described in the document:
// 1. Trend filtering using 50/200 EMA (only trade with the trend)
// 2. RSI momentum for entry timing (buy oversold in uptrend, sell overbought in downtrend)
// 3. ATR-based position sizing and stop losses (volatility-adjusted risk management)
// 4. Partial profit taking at 2:1 R:R (50% of position)
// 5. Trailing stops for remaining position using ATR
// 6. Trend reversal exits (close all when trend changes)
//
// Key Features:
// - Configurable parameters for different market conditions
// - Risk management with consistent 1% risk per trade
// - Visual indicators for trend, signals, and trade management
// - Information table showing key metrics
// - Alert system for automated notifications
//
// Recommended for: BTC, ETH, XRP on daily timeframes
// Holding period: 1-5 days typical