ग्यारह मूविंग एवरेज संयोजन क्रॉसओवर रणनीति


निर्माण तिथि: 2024-01-15 13:57:53 अंत में संशोधित करें: 2024-01-15 13:57:53
कॉपी: 3 क्लिक्स: 710
1
ध्यान केंद्रित करना
1617
समर्थक

ग्यारह मूविंग एवरेज संयोजन क्रॉसओवर रणनीति

अवलोकन

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

यह रणनीति दो चलती औसतों को कॉन्फ़िगर करने की अनुमति देती है, एक तेज और एक धीमी गति से, 11 विकल्पों में से चुनने के लिए। जब तेज एमए क्रॉसिंग धीमी एमए से अधिक होता है, तो एक मल्टी सिग्नल उत्पन्न होता है। जब तेज एमए क्रॉसिंग धीमी एमए से कम होता है, तो एक शून्य सिग्नल उत्पन्न होता है।

अतिरिक्त सुविधाओं में शामिल हैं: ट्रेलर सेटिंग, स्टॉप और स्टॉप लेवल।

रणनीति तर्क

मूल रणनीति तर्क दो चलती औसत के बीच एक क्रॉसिंग पर निर्भर करता है जो प्रवेश और निकास को निर्धारित करता है।

प्रवेश की शर्तें:

कई प्रविष्टियाँ करेंः फास्ट एमए > धीमी एमए
वायु में प्रवेशः फास्ट एमए < धीमी एमए

बाहर निकलने के लिए निम्नलिखित तीन मानदंडों में से एक का पालन करना होगा:

  1. रोकथाम स्तर तक पहुँचने
  2. स्टॉप लॉस स्तर तक पहुंच गया
  3. एक विपरीत संकेत उत्पन्न करना ((चलने वाली औसत विपरीत दिशाओं में पार करना)

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

लाभ

  • 11 अलग-अलग प्रकार के एमए के संयोजन से एक शक्तिशाली संकेत मिलता है
  • मुख्य पैरामीटर विन्यास में लचीलापन
  • स्टॉप एंड लॉस फ़ंक्शन लाभ की रक्षा, हानि को सीमित करना
  • एक मजबूत प्रवृत्ति के दौरान ट्रेडमार्क स्थिति बढ़ाने की अनुमति देता है

जोखिम

  • किसी भी तकनीकी संकेतक की तरह, एमए क्रॉसिंग एक गलत संकेत उत्पन्न कर सकता है
  • वर्तमान बाजार स्थितियों का अति-अनुकूलन भविष्य के प्रदर्शन को कम कर सकता है
  • हार्ड स्टॉप लॉस ने बड़ी उतार-चढ़ाव वाली सही ट्रेडों से बहुत पहले ही बाहर निकल लिया

प्रवेश संकेतों के लिए कीमतों की पुष्टि, हार्ड स्टॉप के बजाय ट्रैक किए गए स्टॉप का उपयोग और अत्यधिक अनुकूलन से बचने के लिए जोखिम प्रबंधन को मजबूत किया जा सकता है।

अनुकूलित स्थान

इस रणनीति को सुधारने के कई तरीके हैं:

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

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "[STRATEGY] MA Cross Eleven", overlay = true)

// MA - type, source, length

//  MA - type, source, length
//  SMA --> Simple
//  EMA --> Exponential
//  WMA --> Weighted
//  VWMA --> Volume Weighted
//  SMMA --> Smoothed
//  DEMA --> Double Exponential
//  TEMA --> Triple Exponential
//  HMA --> Hull
//  TMA --> Triangular
//  SSMA --> SuperSmoother filter
//  ZEMA --> Zero Lag Exponential

type = input(defval="ZEMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"])
len1 = input(defval=8, title="Fast MA Length", minval=1)
srcclose1 = input(close, "Fast MA Source")
len2 = input(defval=21, title="Slow MA Length", minval=1)
srcclose2 = input(close, "Slow MA Source")

// Returns MA input selection variant, default to SMA if blank or typo.

variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v3 = wma(src, len)                                                  // Weighted
    v4 = vwma(src, len)                                                 // Volume Weighted
    v5 = 0.0
    v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len    // Smoothed
    v6 = 2 * v2 - ema(v2, len)                                          // Double Exponential
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)               // Triple Exponential
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))   // Hull
    v11 = sma(sma(src,len),len)                                         // Triangular
    // SuperSmoother filter
    // © 2013  John F. Ehlers
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v9 = 0.0
    v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
    // Zero Lag Exponential
    e = ema(v2, len)
    v10 = v2+(v2-e)
    // return variant, defaults to SMA if input invalid.
    type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="SSMA"?v9 : type=="ZEMA"?v10 : type=="TMA"? v11: v1

ma_1 = variant(type, srcclose1, len1)
ma_2 = variant(type, srcclose2, len2)

plot(ma_1, title="Fast MA", color = green, linewidth=2, transp=0)
plot(ma_2, title="Slow MA", color = red, linewidth=2, transp=0)

longCond = na
shortCond = na
longCond := crossover(ma_1, ma_2)
shortCond := crossunder(ma_1, ma_2)

// Count your long short conditions for more control with Pyramiding

sectionLongs = 0
sectionLongs := nz(sectionLongs[1])
sectionShorts = 0
sectionShorts := nz(sectionShorts[1])

if longCond
    sectionLongs := sectionLongs + 1
    sectionShorts := 0

if shortCond
    sectionLongs := 0
    sectionShorts := sectionShorts + 1
    
// Pyramiding Inputs

pyrl = input(1, "Pyramiding")

// These check to see your signal and cross references it against the pyramiding settings above

longCondition = longCond and sectionLongs <= pyrl 
shortCondition = shortCond and sectionShorts <= pyrl 

// Get the price of the last opened long or short

last_open_longCondition = na
last_open_shortCondition = na
last_open_longCondition := longCondition ? high[1] : nz(last_open_longCondition[1])
last_open_shortCondition := shortCondition ? low[1] : nz(last_open_shortCondition[1])

// Check if your last postion was a long or a short

last_longCondition = na
last_shortCondition = na
last_longCondition := longCondition ? time : nz(last_longCondition[1])
last_shortCondition := shortCondition ? time : nz(last_shortCondition[1])

in_longCondition = last_longCondition > last_shortCondition
in_shortCondition = last_shortCondition > last_longCondition

// Take profit

isTPl = input(false, "Take Profit Long")
isTPs = input(false, "Take Profit Short")
tpl = input(3, "Take Profit Long %", type=float)
tps = input(30, "Take Profit Short %", type=float)
long_tp = isTPl and crossover(high, (1+(tpl/100))*last_open_longCondition) and in_longCondition  == 1
short_tp = isTPs and crossunder(low, (1-(tps/100))*last_open_shortCondition) and in_shortCondition == 1 

// Stop Loss

isSLl = input(false, "Stop Loss Long")
isSLs = input(false, "Stop Loss Short")
sl= 0.0
sl := input(3, "Stop Loss %", type=float)
long_sl = isSLl and crossunder(low, (1-(sl/100))*last_open_longCondition) and longCondition == 0 and in_longCondition == 1
short_sl = isSLs and crossover(high, (1+(sl/100))*last_open_shortCondition) and shortCondition == 0 and in_shortCondition == 1

// Create a single close for all the different closing conditions.

long_close = long_tp or long_sl ? 1 : 0
short_close = short_tp or short_sl ? 1 : 0

// Get the time of the last close

last_long_close = na
last_short_close = na
last_long_close := long_close ? time : nz(last_long_close[1])
last_short_close := short_close ? time : nz(last_short_close[1])

// Strategy entries

strategy.entry("long", strategy.long, when=longCondition == true, stop = open[1])
strategy.entry("short", strategy.short, when=shortCondition == true)
strategy.close("long", when = long_sl or long_tp)
strategy.close("short", when = short_sl or short_tp)