दोहरी चलती औसत गति संपीड़न रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-25 17:01:28
टैगः

img

अवलोकन

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

रणनीति तर्क

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

यदि रैखिक प्रतिगमन हिस्टोग्राम सकारात्मक है (एक ऊपर की प्रवृत्ति का प्रतिनिधित्व करता है) और बार एक लाल मोमबत्ती है (एक बंद निचले हिस्से का प्रतिनिधित्व करता है), उसी समय मोमबत्ती शरीर पिछले 30 मोमबत्तियों के औसत शरीर के 1/3 से बड़ा है, तो ऐसा संयोजन संकेत लंबा जाता है। इसके विपरीत, यदि रैखिक प्रतिगमन हिस्टोग्राम नकारात्मक है, तो बार एक हरी मोमबत्ती है, और शरीर भी बड़ा है, यह छोटा हो जाता है।

रणनीति में बाजार के चरण का आकलन करने में सहायता के लिए संपीड़न और विस्तार की पृष्ठभूमि का विज़ुअलाइज़ेशन भी दिया गया है।

लाभ विश्लेषण

  • संयोजन के लिए कई संकेतकों का उपयोग करने से गलत संकेतों को प्रभावी ढंग से फ़िल्टर किया जा सकता है
  • संपीड़न संभावित उलट बिंदुओं का प्रतिनिधित्व करता है और रणनीति प्रदर्शन में सुधार करता है
  • शरीर फ़िल्टर झूठे breakouts के छोटे तरंगों से गुमराह होने से बचता है
  • पैरामीटर अनुकूलन के माध्यम से बेहतर परिणाम प्राप्त करना आसान है

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

  • रैखिक प्रतिगमन आसानी से गलत संकेत जारी कर सकते हैं, जो नुकसान का कारण बन सकता है
  • संपीड़न का न्याय करने के लिए बोलिंगर बैंड और केसी चैनलों का प्रभाव आदर्श नहीं है
  • फ़िल्टरिंग मानदंड बहुत कठोर हैं, संभवतः बेहतर प्रवेश बिंदुओं की कमी है
  • निकासी अधिक हो सकती है, कुछ हद तक सहन करने की आवश्यकता है

संकेतकों के मापदंडों को समायोजित करके, फ़िल्टरिंग मानदंडों को अनुकूलित करके आदि जोखिमों को कम किया जा सकता है।

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

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

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

निष्कर्ष

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


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2017

//@version=2
strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)

bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray 

trend = val > 0 ? 1 : val < 0 ? -1 : 0

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//EMA Body
body = abs(close - open)
emabody = ema(body, 30) / 3

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false)
dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false)

if up
    strategy.entry("Long", strategy.long)

if dn
    strategy.entry("Short", strategy.short)

अधिक