हेकेन आशी गतिमान क्वांट रणनीति

लेखक:चाओझांग
टैगः

img

अवलोकन

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

रणनीति तर्क

  1. विभिन्न समय सीमाओं में हेकेन आशी कैंडलस्टिक के बंद होने की कीमतों की गणना करें, बाद के गति विश्लेषण के आधार के रूप में।

  2. क्रमशः दैनिक और मासिक गति उतार-चढ़ावों के औसत लें। इससे कुछ शोर बाहर निकलता है और अधिक स्थिर गति बेंचमार्क प्राप्त होते हैं।

  3. औसत गति के उतार-चढ़ावों के आधार पर, हम वर्तमान मूल्य में वास्तव में प्रतिबिंबित बाजार समर्थन बल की गणना कर सकते हैं, अर्थात बाजार शोर को छोड़कर गतिशील गति की सीमा।

  4. जब बंद मूल्य गति की सीमा से ऊपर टूट जाता है, तो लंबी स्थिति मासिक आधार पर शुरू की जाती है। जब कीमत सीमा से नीचे बंद हो जाती है, तो स्थिति बंद हो जाती है।

फायदे का विश्लेषण

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

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

इसके अलावा, रणनीति मासिक और दैनिक समय सीमाओं का लाभ उठाती है। इसका मतलब है कि वास्तविक समय का प्रदर्शन सबसे अच्छा नहीं है, कठोर मूल्य परिवर्तनों पर तेजी से प्रतिक्रिया करने की क्षमता का अभाव है। इस प्रकार कीमतों में अचानक बदलाव होने पर समय पर निकास के जोखिम हैं।

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

  1. हेकेन आशी मोमबत्तियों को और बढ़ाएं यानी वजन विन्यास को अनुकूलित करें।

  2. अधिक समय सीमाओं को शामिल करें, स्थिरता बढ़ाने के लिए एक घातीय औसत स्कोरिंग तंत्र का निर्माण करें।

  3. कंपनी के मूलभूत आंकड़ों को जोड़ने के लिए गति गणना में लाभ चेतावनी, एम एंड ए अफवाहों को शामिल करें।

  4. मासिक प्रविष्टियों के ऊपर दिन और सप्ताह आधारित लाभ लेने और पुनः प्रवेश तंत्र जोड़ने पर विचार करें।

निष्कर्ष

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


/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FrancoPassuello

//@version=5
strategy("Heiken Ashi ADM", overlay=true)
haClose = (open + high + low + close) / 4
// prevHaOpen = line.new(na, na, na, na, width = 1)
haOpen = (open[1] + close[1]) / 2
// line.set_xy1(prevHaOpen, bar_index[1], nz(haOpen[1]))
// line.set_xy2(prevHaOpen, bar_index, haClose[1])


[monopen, _1monopen, _2monopen, _3monopen, _4monopen, _5monopen, _6monopen] = request.security(syminfo.tickerid, "M", [haOpen, haOpen[1], haOpen[2], haOpen[3], haOpen[4], haOpen[5], haOpen[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[monclose, _1monclose, _3monclose, _6monclose] = request.security(syminfo.tickerid, "M", [haClose, haClose[1], haClose[3], haClose[6]] , barmerge.gaps_off, barmerge.lookahead_on)
[dayclose1, _21dayclose, _63dayclose, _126dayclose, dayclose] = request.security(syminfo.tickerid, "1D", [haClose[1], haClose[21], haClose[63], haClose[126], haClose], barmerge.gaps_off, barmerge.lookahead_on)
[dayopen1, _21dayopen, _63dayopen, _126dayopen] = request.security(syminfo.tickerid, "1D", [haOpen[1], haOpen[21], haOpen[63], haOpen[126]], barmerge.gaps_off, barmerge.lookahead_on)


get_rate_of_return(price1, price2) =>
    return_ = (price1/price2 -1)*100
    return_

m0 = get_rate_of_return(monclose, monopen)
m1 = get_rate_of_return(_1monclose, _1monopen)
m2 = get_rate_of_return(monclose, _2monopen)
m3 = get_rate_of_return(_1monclose, _3monopen)
m4 = get_rate_of_return(monclose, _4monopen)
m5 = get_rate_of_return(monclose, _5monopen)
m6 = get_rate_of_return(_1monclose, _6monopen)
MS = (m1 + m3 + m6)/100
CS = (m0 + m2 + m5)/100

d1 = get_rate_of_return(dayclose1, _21dayopen)
d2 = get_rate_of_return(dayclose1, _63dayopen)
d3 = get_rate_of_return(dayclose1, _126dayopen)
DS = (d1 + d2 + d3)/100

//Last (DAILY)
lastd_s_avg1 = DS/3

lastd_Approximate1 = dayclose1*(1-lastd_s_avg1)

last_approx1_d21 = lastd_Approximate1 / _21dayopen-1
last_approx1_d63 = lastd_Approximate1 / _63dayopen-1
last_approx1_d126 = lastd_Approximate1 / _126dayopen-1

lastd_s_avg2 = (last_approx1_d21 + last_approx1_d63 + last_approx1_d126) / 3
lastd_approximate2 = (dayclose1)*(1-(lastd_s_avg1 + lastd_s_avg2))
lastd_price = lastd_approximate2

//plot(lastd_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")

//Last

last_s_avg1 = MS/3

last_Approximate1 = _1monclose*(1-last_s_avg1)

last_approx1_m1 = last_Approximate1 / _1monopen-1
last_approx1_m3 = last_Approximate1 / _3monopen-1
last_approx1_m6 = last_Approximate1 / _6monopen-1

last_s_avg2 = (last_approx1_m1 + last_approx1_m3 + last_approx1_m6) / 3
last_approximate2 = (_1monclose)*(1-(last_s_avg1 + last_s_avg2))
last_price = last_approximate2
Scoring_price = _1monclose*(1-CS)

plot(last_price,color = color.rgb(255, 255, 255, 14), title = "Last momentum threshold")
//plot(Scoring_price,color = color.rgb(234, 0, 255, 14), title = "Last momentum threshold")

//Long based on month close and being the first trade of the month.

var int lastClosedMonth = -1
limit_longCondition = _1monclose > last_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)

// Long based on day close and being the first trade of the month.
limit_Dlongcondition = dayclose1 > lastd_approximate2 and (lastClosedMonth == -1 or month(time) != lastClosedMonth)

// Close trade based on day close

DCloseLongCondition = dayclose1<lastd_approximate2

//Old standard Trading rules
longCondition = _1monclose > Scoring_price
MCloseLongCondition = _1monclose<Scoring_price
shortCondition = CS < 0

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


if (strategy.position_size > 0 and MCloseLongCondition)
    strategy.close("Long")
    lastClosedMonth := month(time)

अधिक