डबल मूविंग एवरेज ट्रेंड ट्रैकिंग और एटीआर जोखिम नियंत्रण अनुकूली ट्रेडिंग रणनीति

SMA ATR TP SL HTF
निर्माण तिथि: 2024-11-29 14:56:43 अंत में संशोधित करें: 2024-11-29 14:56:43
कॉपी: 0 क्लिक्स: 522
1
ध्यान केंद्रित करना
1617
समर्थक

डबल मूविंग एवरेज ट्रेंड ट्रैकिंग और एटीआर जोखिम नियंत्रण अनुकूली ट्रेडिंग रणनीति

अवलोकन

यह रणनीति एक अनुकूलन ट्रेडिंग प्रणाली है जो क्लासिक द्वि-रेखा प्रवृत्ति ट्रैकिंग और एटीआर गतिशील विक्षेपण को जोड़ती है। रणनीति दो प्रकार के ट्रेडिंग मोड प्रदान करती हैः मूलभूत मोड सरल द्वि-रेखा क्रॉसिंग के साथ ट्रेंड ट्रैकिंग का उपयोग करता है, और उन्नत मोड उच्च समय सीमा के लिए प्रवृत्ति फ़िल्टर और एटीआर-आधारित गतिशील स्टॉप-लॉसिंग को जोड़ता है। रणनीति एक सरल ड्रॉप-डाउन मेनू के माध्यम से दोनों मोड के बीच स्विच कर सकती है, जो शुरुआती लोगों की उपयोगिता को ध्यान में रखती है और अनुभवी व्यापारियों की जोखिम नियंत्रण की आवश्यकता को पूरा करती है।

रणनीति सिद्धांत

रणनीति 1 (मूल मोड) में 21 वें और 49 वें दिन के दोहरे समानांतर प्रणाली का उपयोग किया जाता है, जब तेज समानांतर धीमी समानांतर को ऊपर की ओर पार करते हैं, तो कई संकेत उत्पन्न होते हैं। लाभ लक्ष्य प्रतिशत या अंकों का चयन कर सकते हैं, जबकि लाभ को लॉक करने के लिए एक वैकल्पिक मोबाइल स्टॉप-लॉस सुविधा प्रदान करते हैं। रणनीति 2 (उन्नत मोड) में द्वि-समानांतर प्रणाली के आधार पर एक दैनिक स्तर की प्रवृत्ति फ़िल्टर जोड़ी गई है, केवल तभी प्रवेश की अनुमति दी जाती है जब कीमतें उच्च समय-फ्रेम समानांतर के ऊपर होती हैं। साथ ही साथ 14 एटीआर चक्रों पर आधारित गतिशील स्टॉप-लॉस, स्टॉप-लॉस की दूरी को बाजार की अस्थिरता के साथ स्वचालित रूप से समायोजित किया जाता है, और कुछ लाभ के लिए एक समापन सुरक्षा सुविधा प्रदान की जाती है।

रणनीतिक लाभ

  1. रणनीतियों में अत्यधिक अनुकूलनशीलता होती है, जो व्यापारियों के अनुभव स्तर और बाजार की स्थिति के आधार पर लचीलेपन से बदलती है
  2. उच्च-स्तरीय मोड में बहु-समय सीमा विश्लेषण सिग्नल की गुणवत्ता में सुधार करता है
  3. एटीआर गतिशील स्टॉपलॉस विभिन्न बाजार में उतार-चढ़ाव के लिए अनुकूल है
  4. कुछ लाभकारी तंत्रों ने लाभ संरक्षण और प्रवृत्ति को जारी रखने के बीच संतुलन बनाया
  5. विभिन्न बाजार विशेषताओं के अनुसार अनुकूलित करने के लिए लचीला पैरामीटर विन्यास

रणनीतिक जोखिम

  1. दोहरी-समान-लाइन प्रणाली में अक्सर झूठे सिग्नल उत्पन्न हो सकते हैं
  2. ट्रेंड फ़िल्टरिंग से सिग्नल में देरी हो सकती है, जिससे ट्रेडिंग के अवसरों को याद किया जा सकता है।
  3. एटीआर रुकावट में उतार-चढ़ाव के समय पर्याप्त समय नहीं हो सकता है
  4. कुछ मुनाफे में तेजी से गिरावट, बड़े रुझान को प्रभावित कर सकती है

रणनीति अनुकूलन दिशा

  1. झूठे संकेतों को फ़िल्टर करने के लिए लेनदेन और अस्थिरता को बढ़ाया जा सकता है
  2. एक गतिशील पैरामीटर अनुकूलन तंत्र को पेश करने पर विचार करें, जो बाजार की स्थिति के आधार पर औसत चक्र को स्वचालित रूप से समायोजित करता है
  3. एटीआर गणना चक्र का अनुकूलन, संवेदनशीलता और स्थिरता को संतुलित करना
  4. बाजार की स्थिति की पहचान करने के लिए एक मॉड्यूल जोड़ा गया, स्वचालित रूप से इष्टतम रणनीति मोड का चयन करें
  5. अधिक रोकथाम विकल्पों को शामिल करना, जैसे कि रोकथाम को ट्रैक करना, रोकथाम को समय देना आदि

संक्षेप

यह एक तर्कसंगत डिजाइन, अच्छी तरह से कार्य करने के लिए व्यापार रणनीति प्रणाली है. यह रणनीति की विश्वसनीयता की गारंटी देता है, लेकिन यह भी अच्छा जोखिम प्रबंधन प्रदान करता है. यह दो मॉडल डिजाइन विभिन्न स्तरों पर व्यापारियों की जरूरतों को पूरा करने के लिए है, और एक समृद्ध पैरामीटर सेट अप अनुकूलन के लिए पर्याप्त जगह प्रदान करता है. यह सलाह दी जाती है कि व्यापारियों को वास्तविक समय में रूढ़िवादी पैरामीटर से शुरू करें और अनुकूलन को धीरे-धीरे समायोजित करें ताकि सर्वोत्तम प्रभाव प्राप्त किया जा सके.

रणनीति स्रोत कोड
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shaashish1

//@version=5
strategy("Dual Strategy Selector V2 - Cryptogyani", overlay=true, pyramiding=0, 
         default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100000)

//#region STRATEGY SELECTION
strategyOptions = input.string(title="Select Strategy", defval="Strategy 1", options=["Strategy 1", "Strategy 2"], group="Strategy Selection")
//#endregion STRATEGY SELECTION

// ####################### STRATEGY 1: Original Logic ########################
//#region STRATEGY 1 INPUTS
s1_fastMALen = input.int(defval=21, title="Fast SMA Length (S1)", minval=1, group="Strategy 1 Settings", inline="S1 MA")
s1_slowMALen = input.int(defval=49, title="Slow SMA Length (S1)", minval=1, group="Strategy 1 Settings", inline="S1 MA")
s1_takeProfitMode = input.string(defval="Percentage", title="Take Profit Mode (S1)", options=["Percentage", "Pips"], group="Strategy 1 Settings")
s1_takeProfitPerc = input.float(defval=7.0, title="Take Profit % (S1)", minval=0.05, step=0.05, group="Strategy 1 Settings") / 100
s1_takeProfitPips = input.float(defval=50, title="Take Profit Pips (S1)", minval=1, step=1, group="Strategy 1 Settings")
s1_trailingTakeProfitEnabled = input.bool(defval=false, title="Enable Trailing (S1)", group="Strategy 1 Settings")
//#endregion STRATEGY 1 INPUTS

// ####################### STRATEGY 2: Enhanced with Recommendations ########################
//#region STRATEGY 2 INPUTS
s2_fastMALen = input.int(defval=20, title="Fast SMA Length (S2)", minval=1, group="Strategy 2 Settings", inline="S2 MA")
s2_slowMALen = input.int(defval=50, title="Slow SMA Length (S2)", minval=1, group="Strategy 2 Settings", inline="S2 MA")
s2_atrLength = input.int(defval=14, title="ATR Length (S2)", group="Strategy 2 Settings", inline="ATR")
s2_atrMultiplier = input.float(defval=1.5, title="ATR Multiplier for Stop-Loss (S2)", group="Strategy 2 Settings", inline="ATR")
s2_partialTakeProfitPerc = input.float(defval=50.0, title="Partial Take Profit % (S2)", minval=10, maxval=100, step=10, group="Strategy 2 Settings")
s2_timeframeTrend = input.timeframe(defval="1D", title="Higher Timeframe for Trend Filter (S2)", group="Strategy 2 Settings")
//#endregion STRATEGY 2 INPUTS

// ####################### GLOBAL VARIABLES ########################
var float takeProfitPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na
var float fastMA = na
var float slowMA = na
var float higherTimeframeTrendMA = na
var bool validOpenLongPosition = false

// Precalculate higher timeframe values (global scope for Strategy 2)
higherTimeframeTrendMA := request.security(syminfo.tickerid, s2_timeframeTrend, ta.sma(close, s2_slowMALen))

// ####################### LOGIC ########################
if (strategyOptions == "Strategy 1")
    // Strategy 1 Logic (Original Logic Preserved)
    fastMA := ta.sma(close, s1_fastMALen)
    slowMA := ta.sma(close, s1_slowMALen)
    openLongPosition = ta.crossover(fastMA, slowMA)
    validOpenLongPosition := openLongPosition and strategy.opentrades.size(strategy.opentrades - 1) == 0
    
    // Take Profit Price
    takeProfitPrice := if (s1_takeProfitMode == "Percentage")
        close * (1 + s1_takeProfitPerc)
    else
        close + (s1_takeProfitPips * syminfo.mintick)

    // Trailing Stop Price (if enabled)
    if (strategy.position_size > 0 and s1_trailingTakeProfitEnabled)
        trailingStopPrice := high - (s1_takeProfitPips * syminfo.mintick)
    else
        trailingStopPrice := na

else if (strategyOptions == "Strategy 2")
    // Strategy 2 Logic with Recommendations
    fastMA := ta.sma(close, s2_fastMALen)
    slowMA := ta.sma(close, s2_slowMALen)
    openLongPosition = ta.crossover(fastMA, slowMA) and close > higherTimeframeTrendMA
    validOpenLongPosition := openLongPosition and strategy.opentrades.size(strategy.opentrades - 1) == 0

    // ATR-Based Stop-Loss
    atr = ta.atr(s2_atrLength)
    stopLossPrice := close - (atr * s2_atrMultiplier)

    // Partial Take Profit Logic
    takeProfitPrice := close * (1 + (s2_partialTakeProfitPerc / 100))
//#endregion STRATEGY LOGIC

// ####################### PLOTTING ########################
plot(series=fastMA, title="Fast SMA", color=color.yellow, linewidth=1)
plot(series=slowMA, title="Slow SMA", color=color.orange, linewidth=1)
plot(series=takeProfitPrice, title="Take Profit Price", color=color.teal, linewidth=1, style=plot.style_linebr)

// Trailing Stop and ATR Stop-Loss Plots (Global Scope)
plot(series=(strategyOptions == "Strategy 1" and s1_trailingTakeProfitEnabled) ? trailingStopPrice : na, title="Trailing Stop", color=color.red, linewidth=1, style=plot.style_linebr)
plot(series=(strategyOptions == "Strategy 2") ? stopLossPrice : na, title="ATR Stop-Loss", color=color.red, linewidth=1, style=plot.style_linebr)
//#endregion PLOTTING

// ####################### POSITION ORDERS ########################
//#region POSITION ORDERS
if (validOpenLongPosition)
    strategy.entry(id="Long Entry", direction=strategy.long)

if (strategyOptions == "Strategy 1")
    if (strategy.position_size > 0)
        if (s1_trailingTakeProfitEnabled)
            strategy.exit(id="Trailing Take Profit", from_entry="Long Entry", stop=trailingStopPrice)
        else
            strategy.exit(id="Take Profit", from_entry="Long Entry", limit=takeProfitPrice)

else if (strategyOptions == "Strategy 2")
    if (strategy.position_size > 0)
        strategy.exit(id="Partial Take Profit", from_entry="Long Entry", qty_percent=s2_partialTakeProfitPerc, limit=takeProfitPrice)
        strategy.exit(id="Stop Loss", from_entry="Long Entry", stop=stopLossPrice)
//#endregion POSITION ORDERS