मोमेंटम कछुआ ट्रेंड ट्रैकिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-11-23 11:53:27
टैगः

img

अवलोकन

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

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

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

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

स्टॉप लॉस के लिए स्टार्ट-अप रणनीति में स्टॉप लॉस के लिए मूल कछुए के नियमों में एन-ब्रेकआउट एग्जिट्स का उपयोग किया जाता है। यह प्रणाली पिछले 20 दिनों में उच्चतम और निम्नतम कीमतों के आधार पर स्टॉप लॉस सेट करती है। उदाहरण के लिए, लंबी स्थिति के लिए स्टॉप लॉस पिछले 20 दिनों में सबसे कम कम से 2N एटीआर होगा। इस रणनीति के लिए लाभ लेने के लिए सरल है - कुल खाता मूल्य का 10% निर्धारित किया गया है।

लाभ विश्लेषण

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

विशेष रूप से, इस रणनीति में निम्नलिखित ताकतें हैंः

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

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

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

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

बढ़ोतरी के अवसर

उपरोक्त जोखिमों के आधार पर, अनुकूलन के मुख्य अवसरों में शामिल हैंः

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

निष्कर्ष

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


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Heiken Ashi BF 🚀", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2029, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// HA /////////////
haTicker = heikinashi(syminfo.tickerid)
haOpen = security(haTicker, "D", open)
haHigh = security(haTicker, "D", high)
haLow = security(haTicker, "D", low)
haClose = security(haTicker, "D", close)

///////////// Rate Of Change ///////////// 
source = close
roclength = input(30, minval=1)
pcntChange = input(7.0, minval=1)
roc = 100 * (source - source[roclength]) / source[roclength]
emaroc = ema(roc, roclength / 2)
isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2))

/////////////// Strategy ///////////////
long = haOpen < haClose and isMoving()
short = haOpen > haClose and isMoving()

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

sl_inp = input(2.0, title='Stop Loss %') / 100
tp_inp = input(5000.0, title='Take Profit %') / 100
 
take_level_l = strategy.position_avg_price * (1 + tp_inp)
take_level_s = strategy.position_avg_price * (1 - tp_inp)

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1])
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

/////////////// Execution ///////////////
if testPeriod()
    strategy.entry("L",  strategy.long, when=long)
    strategy.entry("S", strategy.short, when=short)
    strategy.exit("L SL", "L", stop=long_sl, limit=take_level_l, when=since_longEntry > 0)
    strategy.exit("S SL", "S", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0)

/////////////// Plotting ///////////////
plotcandle(haOpen, haHigh, haLow, haClose, title='HA Candles', color = haOpen < haClose ? color.lime : color.red)
bgcolor(isMoving() ? long ? color.lime : short ? color.red : na : color.white, transp=70)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=50)

अधिक