अनुकूली घातीय चलती औसत सीमा रणनीति

लेखक:चाओझांग, दिनांकः 2024-02-26 14:58:32
टैगः

img

अवलोकन

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

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

  1. अवधि पैरामीटर के आधार पर घातीय भारित चलती औसत ईएचएमए की गणना करें। ईएचएमए तेजी से गणना करता है और प्रभावी रूप से मूल्य प्रवृत्ति परिवर्तनों को ट्रैक कर सकता है।

  2. रेंजविड्थ पैरामीटर के आधार पर ईएचएमए के ऊपर और नीचे एक अनुकूलन चैनल बनाएं। केवल जब कीमत ऊपरी चैनल लाइन से ऊपर बढ़ जाती है या निचली चैनल लाइन से नीचे गिर जाती है, तो प्रवृत्ति को बदल दिया गया माना जाता है और ट्रेडिंग सिग्नल ट्रिगर किए जाते हैं।

  3. चैनल के साथ मूल्य संबंध निर्धारित करें. जब कीमत ऊपरी रेखा से टूटती है, तो लंबी स्थिति, जब कीमत निचली रेखा से टूटती है। जब कीमत ऊपरी रेखा से नीचे जाती है, तो लंबी स्थिति बंद करें, जब कीमत निचली रेखा से ऊपर जाती है, तो छोटी स्थिति बंद करें।

लाभ विश्लेषण

सामान्य चलती औसत रणनीतियों की तुलना में, इस रणनीति के निम्नलिखित फायदे हैंः

  1. चलती औसत की गणना करने के लिए ईएचएमए एल्गोरिथ्म का उपयोग करें। ईएचएमए मूल्य परिवर्तनों के प्रति अधिक संवेदनशीलता से प्रतिक्रिया करता है और झूठे ब्रेकआउट के कारण अनावश्यक ट्रेडों से बचने के लिए प्रवृत्ति परिवर्तनों को प्रभावी ढंग से पहचान सकता है।

  2. अनुकूली चैनल मूल्य उतार-चढ़ाव को प्रभावी ढंग से फ़िल्टर कर सकता है। ट्रेडिंग सिग्नल केवल तभी ट्रिगर किए जाते हैं जब मूल्य प्रवृत्ति दृढ़ता से बदल गई हो। यह कुछ अप्रभावी ट्रेडों को फ़िल्टर कर सकता है और लाभप्रदता में सुधार कर सकता है।

  3. चैनल की चौड़ाई को विभिन्न बाजार स्थितियों के अनुकूल लचीले ढंग से समायोजित किया जा सकता है। व्यापक चैनल अधिक उतार-चढ़ाव को फ़िल्टर कर सकते हैं और व्यापार आवृत्ति को कम कर सकते हैं। संकीर्ण चैनल प्रवृत्ति परिवर्तनों को पहले पहचान सकते हैं और व्यापार आवृत्ति बढ़ा सकते हैं।

जोखिम विश्लेषण

इस रणनीति के साथ कुछ जोखिम भी हैंः

  1. झूठे ब्रेकआउट अभी भी पूरी तरह से टाल नहीं सकते हैं। कीमतें चैनल से परे गैप हो सकती हैं। जोखिमों को नियंत्रित करने के लिए मापदंडों को ठीक से समायोजित करने की आवश्यकता है।

  2. यदि चैनल बहुत चौड़ा है तो कुछ व्यापारिक अवसरों को खो दिया जा सकता है। संवेदनशीलता बढ़ाने के लिए चैनल को उचित रूप से संकुचित करें।

  3. बहुत संकीर्ण चैनल अप्रभावी व्यापार को बढ़ा सकते हैं। स्थिरता बढ़ाने के लिए चैनल की चौड़ाई को उचित रूप से बढ़ाएं।

अनुकूलन दिशाएँ

इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः

  1. पीरियड पैरामीटर को अनुकूलित करें। विभिन्न उत्पादों और समय सीमाओं के अनुकूल चलती औसत गणना चक्र को समायोजित करें।

  2. रेंजविड्थ पैरामीटर को अनुकूलित करें. बाजार अस्थिरता और व्यक्तिगत जोखिम वरीयता के आधार पर चैनल दायरे को समायोजित करें.

  3. स्टॉप लॉस रणनीति जोड़ें. प्रति व्यापार अधिकतम हानि को प्रभावी ढंग से नियंत्रित करने के लिए होल्डिंग पदों के दौरान उचित स्टॉप लॉस बिंदु निर्धारित करें.

  4. प्रविष्टियों को फ़िल्टर करने के लिए अन्य संकेतकों के साथ संयोजन करें। उदाहरण के लिए, झूठी प्रविष्टियों को कम करने के लिए वॉल्यूम जोड़ें।

  5. रणनीति अनुप्रयोगों को विविधता प्रदान करें और मापदंडों का अनुकूलन करें। अधिक उत्पादों और समय सीमाओं में सार्वभौमिक मापदंडों का परीक्षण और अनुकूलन करें।

सारांश

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


/*backtest
start: 2023-02-25 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",1]]
*/

// Credit is due where credit is due:
// Hull Moving Average: developed by Alan Hull
// EHMA: coded by Twitter @borserman
// I've built on their work in an attempt to create a strategy more robust to fake moves
// @0xLetoII

//@version=4
strategy(
  title="EHMA Range Strategy",
  process_orders_on_close=true,
  explicit_plot_zorder=true,
  overlay=true, 
  initial_capital=1500, 
  default_qty_type=strategy.percent_of_equity, 
  commission_type=strategy.commission.percent, 
  commission_value=0.085,
  default_qty_value=100
  )
  

// Position Type
pos_type = input(defval = "Long", title="Position Type", options=["Both", "Long", "Short"])

// Inputs
Period = input(defval=180, title="Length")
RangeWidth = input(defval=0.02, step=0.01, title="Range Width")
sqrtPeriod = sqrt(Period)

// Function for the Borserman EMA
borserman_ema(x, y) =>
    alpha = 2 / (y + 1)
    sum = 0.0
    sum := alpha * x + (1 - alpha) * nz(sum[1])

// Calculate the Exponential Hull Moving Average
EHMA = borserman_ema(2 * borserman_ema(close, Period / 2) - borserman_ema(close, Period), sqrtPeriod)

// Create upper & lower bounds around the EHMA for broader entries & exits
upper = EHMA + (EHMA * RangeWidth)
lower = EHMA - (EHMA * RangeWidth)

// Plots
EHMAcolor = (close > EHMA ? color.green : color.red)
plot(EHMA, color=EHMAcolor, linewidth=2)
plot(lower, color=color.orange, linewidth=2)
plot(upper, color=color.blue, linewidth=2)


// Strategy
long = close > upper
exit_long = close < lower
short = close < lower
exit_short = close > upper


// Calculate start/end date and time condition
startDate  = input(timestamp("2017-01-01T00:00:00"))
finishDate = input(timestamp("2029-01-01T00:00:00"))
 
time_cond  = true


// Entries & Exits
if pos_type == "Both"
    strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
    strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
    strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
    strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)
if pos_type == "Long"
    strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
    strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
if pos_type == "Short"
    strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
    strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)
    

अधिक