स्क्रैच मोमेंटम ब्रेकआउट रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-30 17:33:49
टैगः

img

अवलोकन

यह एक मात्रात्मक ट्रेडिंग रणनीति है जिसे LazyBear के मोमेंटम स्क्वीज़ संकेतक के आधार पर विकसित किया गया है। यह रणनीति कई तकनीकी संकेतकों के संयोजन के माध्यम से उच्च जीत दर वाले गति ब्रेकआउट ट्रेडिंग को प्राप्त करने के लिए बोलिंगर बैंड, केल्टनर चैनल और गति संकेतक को एकीकृत करती है।

रणनीति तर्क

इस रणनीति का मुख्य संकेतक LazyBears Momentum Squeeze संकेतक है। यह संकेतक यह निर्धारित करता है कि क्या बोलिंगर बैंड को केल्टनर चैनलों द्वारा squeezed किया जा रहा है। जब निचोड़ होता है, तो यह दर्शाता है कि बाजार एक संभावित प्रकोप बिंदु में प्रवेश कर गया है। गति संकेतक की दिशा को जोड़कर, जब बाजार के प्रकोप को पकड़ने के लिए निचोड़ जारी होता है तो ट्रेड किए जा सकते हैं।

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

बाहर निकलने के लिए, जब गति संकेतक का रंग ग्रे हो जाता है, तो यह दर्शाता है कि निचोड़ की स्थिति समाप्त हो गई है और प्रवृत्ति उलट सकती है।

लाभ

  1. सटीकता में सुधार के लिए कई तकनीकी संकेतकों को एकीकृत करता है

इन संकेतकों के बीच समग्र संबंध का आकलन करके व्यापारिक निर्णयों की सटीकता में सुधार किया जा सकता है और गलत व्यापार की संभावना कम हो सकती है।

  1. बड़ी लाभ क्षमता वाले सटीक गति संपीड़न बिंदु

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

  1. उच्च सफलता दर वाले ब्रेकआउट ट्रेडिंग को प्राप्त करना

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

जोखिम

  1. गलत पैरामीटर सेटिंग्स का जोखिम

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

  1. ब्रेकआउट विफलता जोखिम

इस रणनीति के द्वारा चुने गए बिंदु को तोड़ने के बाद कीमत वापस आने का हमेशा जोखिम होता है, जिससे नुकसान होता है। नुकसान को नियंत्रित करने के लिए इसे सख्ती से रोकने की आवश्यकता है।

  1. रुझान उलटने का जोखिम

जब निचोड़ राज्य समाप्त होता है, तो यह रणनीति सभी पदों को बंद कर देगी। हालांकि, कभी-कभी मूल्य प्रवृत्ति अभी भी जारी रह सकती है, जो समय से पहले बाहर निकलने का जोखिम पैदा करती है। बाहर निकलने के तर्क को अनुकूलित करने की आवश्यकता है।

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

  1. पैरामीटर सेटिंग्स अनुकूलित करें

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

  1. स्टॉप लॉस रणनीति जोड़ें

कीमतों के उलट जाने पर घाटे में तेजी से कटौती करने के लिए चलती या अस्थिर स्टॉप सेट करें।

  1. पुनः प्रवेश की शर्तें जोड़ें

जब रणनीति पदों से बाहर निकलती है, तो यदि प्रवृत्ति जारी रहती है तो बाजार में पुनः प्रवेश करने के लिए कुछ पुनः प्रवेश शर्तें निर्धारित की जा सकती हैं।

  1. अधिक संकेतक शामिल करें

विभिन्न प्रकार के अधिक संकेतकों को शामिल करने का प्रयास करें, जैसे कि अन्य अस्थिरता संकेतकों, मात्रा संकेतकों आदि, ताकि निर्णयों की सटीकता में सुधार के लिए संकेतकों के एकीकरण की एक समग्र रणनीति स्थापित की जा सके।

सारांश

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//All credits to LazyBear. All I did was turn it into a strategy!

strategy(title = "SQZMOM STRAT", overlay=false)

// --- GENERAL INPUTS ---
FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2020, title = "From Year", minval = 2012)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)
FromDay   = 1
ToDay     = 1
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

get_round(value, precision) => round(value * (pow(10, precision))) / pow(10, precision)
trade_leverage = input(1, title = "Trade - Leverage", step = 0.25)
trade_risk     = input(100, title = "Trade - Risk Percent", type = input.float, step = 0.1, minval = 0.1, maxval = 100)
tradeType   = input("LONG", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH"])

// --- SQZMOM CODE

length = input(21, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool)

// 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 = color.gray
if (val > 0 and val > nz(val[1]))
    bcolor := color.green
if (val < 0 and val < nz(val[1]))
    bcolor := color.red

scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray 
plot(val, color=bcolor, style=plot.style_histogram, linewidth=4)
plot(0, color=scolor, style=plot.style_cross, linewidth=2)

// --- VWMA CODE ---
useVWMA        = input(false, title = "Use VWMA to selectively long/short?", type = input.bool)
lengthVWMA=input(42, title = "VWMA Length", step = 1, minval = 1)
useCV=input(false, type=input.bool, title="Use Cumulative Volume for VWMA?")
nbfs = useCV ? cum(volume) : sum(volume, lengthVWMA)
medianSrc=close

calc_evwma(price, lengthVWMA, nb_floating_shares) => data = (nz(close[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares)

m=calc_evwma(medianSrc, lengthVWMA, nbfs)


// ---STRATEGY---
if ((tradeType == "LONG" or tradeType == "BOTH") and (m>0 or useVWMA == false))
    longCondition = (val > 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1)
    if (longCondition)
        contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4)
        strategy.entry("LONG", strategy.long, qty = contracts, when = window())
        
if((tradeType == "SHORT" or tradeType == "BOTH") and (m<0 or useVWMA == false))
    shortCondition = (val < 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1)
    if (shortCondition)
        contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4)
        strategy.entry("SHORT", strategy.short, qty = contracts, when = window())

if (bcolor == color.gray)
    strategy.close("LONG")
    strategy.close("SHORT")

अधिक