यह एक ट्रेंड फॉलो करने वाली रणनीति है जो एक्सपोनेंशियल मूविंग एवरेज (ईएमए), मैड्रिड रिबन, और डॉनचियन चैनल को जोड़ती है। रणनीति की विशिष्टता इसके तीन स्विच करने योग्य लाभ / स्टॉप-लॉस मोड में निहित हैः टिक-आधारित, डॉलर-आधारित, और जोखिम-इनाम अनुपात आधारित। यह एक डबल पुष्टिकरण तंत्र के माध्यम से विश्वसनीयता को बढ़ाता है, केवल दूसरे वैध संकेत पर ट्रेड निष्पादित करता है।
रणनीति व्यापार के अवसरों की पहचान करने के लिए तीन तकनीकी संकेतकों के संयोजन का उपयोग करती हैः 1. समग्र रुझान की दिशा निर्धारित करने के लिए 200-पीरियड ईएमए 2. मध्यम अवधि के रुझान के आकलन के लिए मैड्रिड रिबन (पांच अवधि और 100 अवधि के ईएमए का क्रॉसओवर) 3. विशिष्ट प्रवेश समय के लिए डोंचियन चैनल ब्रेकआउट
लंबी ट्रेडिंग स्थितियांः 200 ईएमए से ऊपर की कीमत, तेजी से बढ़ता मैड्रिड रिबन और डोंचियन चैनल से ऊपर की कीमतें। शॉर्ट ट्रेडिंग की शर्तेंः 200 ईएमए से नीचे की कीमत, मंदी का मैड्रिड रिबन और डोनचियन चैनल से नीचे की कीमतें। झूठे संकेतों को कम करने के लिए, ट्रेडों को केवल दूसरे वैध संकेत की घटना पर निष्पादित किया जाता है।
यह एक ट्रेंड फॉलो करने वाली रणनीति है जो कई क्लासिक तकनीकी संकेतकों को जोड़ती है, लचीले टीपी / एसएल प्रबंधन और दोहरी पुष्टि तंत्र के माध्यम से ट्रेडिंग स्थिरता को बढ़ाती है। रणनीति की उच्च अनुकूलन क्षमता इसे विभिन्न बाजार वातावरण और ट्रेडिंग शैलियों के अनुकूल होने की अनुमति देती है। लाइव ट्रेडिंग से पहले गहन ऐतिहासिक डेटा बैकटेस्टिंग करने और विशिष्ट बाजार विशेषताओं के अनुसार मापदंडों को समायोजित करने की सिफारिश की जाती है।
/*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)