এটি একটি প্রবণতা অনুসরণকারী কৌশল যা এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ), মাদ্রিদ রিবন এবং ডনচিয়ান চ্যানেলকে একত্রিত করে। কৌশলটির অনন্যতা তার তিনটি সুইচযোগ্য লাভ / স্টপ-লস মোডে রয়েছেঃ টিক-ভিত্তিক, ডলার-ভিত্তিক এবং ঝুঁকি-পুরষ্কার অনুপাত ভিত্তিক। এটি একটি দ্বৈত নিশ্চিতকরণ প্রক্রিয়াটির মাধ্যমে নির্ভরযোগ্যতা বাড়ায়, কেবল দ্বিতীয় বৈধ সংকেতে বাণিজ্য সম্পাদন করে।
কৌশলটি ট্রেডিং সুযোগ চিহ্নিত করার জন্য তিনটি প্রযুক্তিগত সূচক ব্যবহার করেঃ ১. সামগ্রিক প্রবণতার দিকনির্দেশনা নির্ধারণের জন্য ২০০-পেরিওড ইএমএ ২. মধ্যমেয়াদী প্রবণতা মূল্যায়নের জন্য মাদ্রিদ রিবন (৫-অবধি এবং ১০০-অবধি EMA এর ক্রসওভার) ৩. ডনচিয়ান চ্যানেলের নির্দিষ্ট প্রবেশের সময়সূচী
লং ট্রেডিং শর্তাবলী: ২০০ EMA এর উপরে মূল্য, মদ্রিদ রিবন, এবং ডোনচিয়ান চ্যানেলের উপরে দামের ভাঙ্গন। শর্ট ট্রেডিংয়ের শর্তাবলী: ২০০ EMA এর নিচে মূল্য, মদ্রিদ রিবন হ্রাস এবং ডোনচিয়ান চ্যানেলের নিচে দামের ভাঙ্গন। মিথ্যা সংকেত হ্রাস করার জন্য, ট্রেডগুলি শুধুমাত্র দ্বিতীয় বৈধ সংকেতের ঘটনায় কার্যকর করা হয়।
এটি একটি প্রবণতা অনুসরণকারী কৌশল যা একাধিক ক্লাসিকাল প্রযুক্তিগত সূচককে একত্রিত করে, নমনীয় টিপি / এসএল পরিচালনা এবং দ্বৈত নিশ্চিতকরণ প্রক্রিয়াটির মাধ্যমে ট্রেডিং স্থিতিশীলতা বাড়ায়। কৌশলটির উচ্চ কাস্টমাইজযোগ্যতা এটিকে বিভিন্ন বাজারের পরিবেশ এবং ট্রেডিং স্টাইলের সাথে খাপ খাইয়ে নিতে দেয়। লাইভ ট্রেডিংয়ের আগে পুঙ্খানুপুঙ্খ historicalতিহাসিক ডেটা ব্যাকটেস্টিং পরিচালনা এবং নির্দিষ্ট বাজারের বৈশিষ্ট্য অনুসারে পরামিতিগুলি সামঞ্জস্য করার পরামর্শ দেওয়া হয়।
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-08 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("Pamplona Enhanced TP/SL Toggleable", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1) // Input settings use_tick_based = input.bool(false, title="Use Tick-Based TP/SL") use_dollar_based = input.bool(false, title="Use Dollar-Based TP/SL") use_risk_reward = input.bool(true, title="Use Risk-Reward TP/SL") // Default option tick_size = input.float(0.1, title="Tick Size (for Tick-Based)", minval=0.0001, step=0.0001) ticks = input.int(10, title="Ticks (for Tick-Based TP/SL)", minval=1) dollar_tp = input.float(10.0, title="Dollar Take Profit (for Dollar-Based)", minval=0.01, step=0.01) dollar_sl = input.float(10.0, title="Dollar Stop Loss (for Dollar-Based)", minval=0.01, step=0.01) risk_reward_ratio = input.float(2.0, title="Risk-Reward Ratio (for Risk-Reward TP/SL)", minval=0.1, step=0.1) contract_size = input.int(1, title="Contract Size", minval=1) // Retrieve indicators ema200 = ta.ema(close, 200) src = close ma05 = ta.ema(src, 5) ma100 = ta.ema(src, 100) madrid_green = ma05 > ma100 dlen = input.int(20, title="Donchian Channel Period") highest_d = ta.highest(high, dlen) lowest_d = ta.lowest(low, dlen) donchian_green = close > highest_d[1] donchian_red = close < lowest_d[1] // Track signals var int long_signal_count = 0 var int short_signal_count = 0 // Conditions long_condition_raw = madrid_green and donchian_green and close > ema200 short_condition_raw = not madrid_green and donchian_red and close < ema200 // Update signal counters if long_condition_raw long_signal_count += 1 else long_signal_count := 0 if short_condition_raw short_signal_count += 1 else short_signal_count := 0 // Final conditions to enter on the second signal long_condition = long_signal_count == 2 short_condition = short_signal_count == 2 // Ensure exactly one TP/SL mode is enabled tp_sl_mode_count = (use_tick_based ? 1 : 0) + (use_dollar_based ? 1 : 0) + (use_risk_reward ? 1 : 0) if tp_sl_mode_count != 1 runtime.error("Enable exactly ONE TP/SL mode (Tick-Based, Dollar-Based, or Risk-Reward).") // Function to calculate TP/SL based on active mode calc_tp_sl(entry_price, is_long) => float tp = na float sl = na if use_tick_based tp := is_long ? entry_price + ticks * tick_size : entry_price - ticks * tick_size sl := is_long ? entry_price - ticks * tick_size : entry_price + ticks * tick_size else if use_dollar_based tp := is_long ? entry_price + (dollar_tp / contract_size) : entry_price - (dollar_tp / contract_size) sl := is_long ? entry_price - (dollar_sl / contract_size) : entry_price + (dollar_sl / contract_size) else if use_risk_reward risk = is_long ? close - low : high - close tp := is_long ? close + (risk * risk_reward_ratio) : close - (risk * risk_reward_ratio) sl := is_long ? close - risk : close + risk [tp, sl] // Entry logic if long_condition [take_profit, stop_loss] = calc_tp_sl(close, true) strategy.entry("Long", strategy.long, qty=contract_size) strategy.exit("Take Profit", from_entry="Long", limit=take_profit, stop=stop_loss) if short_condition [take_profit, stop_loss] = calc_tp_sl(close, false) strategy.entry("Short", strategy.short, qty=contract_size) strategy.exit("Take Profit", from_entry="Short", limit=take_profit, stop=stop_loss) // Plot indicators plot(ema200, title="200 EMA", color=color.white, linewidth=2) bgcolor(long_condition ? color.new(color.green, 90) : short_condition ? color.new(color.red, 90) : na)