मात्रात्मक विशेषज्ञों की बहुआयामी शक्तिशाली प्रारंभिक संकेतक रणनीति


निर्माण तिथि: 2024-01-19 14:55:03 अंत में संशोधित करें: 2024-01-19 14:55:03
कॉपी: 0 क्लिक्स: 699
1
ध्यान केंद्रित करना
1617
समर्थक

मात्रात्मक विशेषज्ञों की बहुआयामी शक्तिशाली प्रारंभिक संकेतक रणनीति

अवलोकन

यह रणनीति कई अलग-अलग चक्रों के एरोन, एमए, बीबी, विलियम्स,% आर, एडीएक्स आदि जैसे कई ताकत संकेतक के संयोजन के माध्यम से, बहुआयामी ताकत उद्घाटन संकेतक का निर्माण करती है, जब प्रवृत्ति स्पष्ट होती है, तो उच्च दक्षता के उद्घाटन की अनुमति देती है।

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

यह रणनीति मुख्य रूप से निम्नलिखित सूचकांकों के संयोजन के माध्यम से मजबूत स्थिति खोलने के संकेतों को प्राप्त करती हैः

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

  2. औसत एमए: लघु और लंबी अवधि के औसत एमए के क्रॉसिंग की गणना करें और रुझान के मोड़ को निर्धारित करें।

  3. बीबी ब्लिंक बैंडः जब कीमत ब्लिंक बैंड को पार कर जाती है, तो यह एक बिक्री संकेत होता है।

  4. विलियम्स %R संकेतकः यह संकेतक ओवरबॉय ओवरसोल क्षेत्र में विकृति का गठन करता है, जो स्थिति खोलने के संकेत के रूप में कार्य करता है।

  5. ADX औसत दिशात्मक गति सूचकांकः प्रवृत्ति की ताकत का आकलन करने के लिए, ADX किसी स्थान से अधिक होने पर एक उद्घाटन संकेत उत्पन्न करता है।

उपरोक्त कई संकेतक, अलग-अलग चक्र लंबाई मापदंडों के माध्यम से, एक बहुआयामी निर्णय प्रणाली का गठन करते हैं, जब रुझान स्पष्ट होता है, तो कई संकेतक एक मजबूत उद्घाटन संकेत बना सकते हैं।

विशेष रूप से, खरीद के लिए निम्नलिखित शर्तें हैं:

  1. Aroon_1 85 से नीचे
  2. जब एमए औसत रेखा गोल्डन फोर्क बनती है
  3. Williams %R -99 से कम है
  4. ADX 14 से ऊपर है
  5. जब Aroon_2 39 से ऊपर होता है

जब उपरोक्त 5 में से 3 शर्तें पूरी होती हैं, तो एक मजबूत खरीद संकेत उत्पन्न होता है।

बिकने की शर्तें भी इसी तरह हैं, पांच बिकने की शर्तें हैं, जिनमें से तीन को पूरा करने पर बिकने का संकेत मिलता है।

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

श्रेष्ठता विश्लेषण

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

अन्य लाभः

  1. विभिन्न बाजारों की विशेषताओं के लिए पैरामीटर को समायोजित करना

  2. सूचक पैरामीटर सेट वैज्ञानिक रूप से उचित है, पैरामीटर उच्च स्थिरता है

  3. बहु-समय चक्रों के संयोजन को प्राप्त करना, निर्णय की सटीकता में सुधार करना

  4. स्पष्ट कोड संरचना, समझने में आसान और दोहराने योग्य

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

इस रणनीति के कुछ जोखिम भी हैं:

  1. बहु-सूचक संयोजन निर्णय की गुणवत्ता को बढ़ाता है, लेकिन रणनीति जटिलता को बढ़ाता है और अति-अनुकूलन के जोखिम को बढ़ाता है

  2. पैरामीटर सेटिंग्स 100% सही नहीं हैं और कुछ बाजारों में काम नहीं कर सकती हैं

  3. सूचकांक संयोजन के तरीके में अनुकूलन के लिए जगह है, संयोजन तर्क को और परिष्कृत किया जा सकता है

  4. अल्पकालिक समायोजन के अवसरों को याद किया जा सकता है

समाधान के लिएः

  1. परीक्षण मापदंडों की कठोरता को बढ़ाएं

  2. अधिक बाजारों के लिए कुछ मापदंडों को समायोजित करना

  3. निर्णय की गुणवत्ता में सुधार के लिए सूचकांकों को एकीकृत करने के तरीके का अनुकूलन

  4. सूचकांक के कुछ पैरामीटर को उचित रूप से छोटा करना, अल्पकालिक समायोजन को अधिक से अधिक कैप्चर करना

अनुकूलन दिशा

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

  1. अधिक विभिन्न प्रकार के संकेतक जोड़कर, एक संकेतक वन बनाने के लिए, और निर्णय की सटीकता में सुधार करें

  2. सूचक पैरामीटर सेटिंग को अनुकूलित करें ताकि यह बाजार में परिवर्तन के लिए स्वचालित रूप से अनुकूलित हो सके

  3. मशीन लर्निंग और अन्य तरीकों का उपयोग करके सबसे अच्छा सूचकांक एकीकरण विकल्पों की स्वचालित खोज

  4. जोखिम को नियंत्रित करने के लिए अधिक स्टॉप लॉस रणनीति

  5. भावनात्मक संकेतक के साथ बाजार की गर्मी, गतिशील समायोजन पैरामीटर आदि का आकलन करें

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

संक्षेप

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

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

//@version=3
strategy(title="Aroon+Williams+MA2+ADX+Aroon Str.", shorttitle="Aroon+Williams+MA2+ADX+Aroon Str.", overlay=true)
//https://cafe.naver.com/watchbot/1945
//<<빙썸 매각 기념>> 바이낸스 이오스 복합지표	

//Aroon_1
length_1 = input(264, minval=1, title="Length Aroon_1")
upper_1 = 100 * (highestbars(high, length_1+1) + length_1)/length_1
lower_1 = 100 * (lowestbars(low, length_1+1) + length_1)/length_1
midp_1 = 0
oscillator_1 = upper_1 - lower_1
//osc_1 = plot(oscillator_1, color=red)

//Aroon_2
length_2 = input(72, minval=1, title="Length Aroon_2")
upper_2 = 100 * (highestbars(high, length_2+1) + length_2)/length_2
lower_2 = 100 * (lowestbars(low, length_2+1) + length_2)/length_2
midp_2 = 0
oscillator_2 = upper_2 - lower_2
//osc_2 = plot(oscillator_2, color=red)

//Aroon_3
length_3 = input(137, minval=1, title="Length Aroon_3")
upper_3 = 100 * (highestbars(high, length_3+1) + length_3)/length_3
lower_3 = 100 * (lowestbars(low, length_3+1) + length_3)/length_3
midp_3 = 0
oscillator_3 = upper_3 - lower_3
//osc_3 = plot(oscillator_3, color=red)

//Aroon_4
length_4 = input(62, minval=1, title="Length Aroon_4")
upper_4 = 100 * (highestbars(high, length_4+1) + length_4)/length_4
lower_4 = 100 * (lowestbars(low, length_4+1) + length_4)/length_4
midp_4 = 0
oscillator_4 = upper_4 - lower_4
//osc_4 = plot(oscillator_4, color=red)

//Ma double
short_ma_1 = sma(close, 9)
long_ma_1 = sma(close, 21)
// plot(short_ma_1, color = red)
// plot(long_ma_1, color = green)
// plot(cross(short_ma_1, long_ma_1) ? short_ma_1 : na, style = cross, linewidth = 4)

short_ma_2 = sma(close, 9)
long_ma_2 = sma(close, 21)
// plot(short_ma_2, color = red)
// plot(long_ma_2, color = green)
plot(cross(short_ma_2, long_ma_2) ? short_ma_2 : na, transp= 100, title = "ma cross_2", style = cross, linewidth = 4)

//BB
length_bb = input(270, minval=1, title="BB length")
src_bb = input(close, title="Source")
mult_bb = input(2.0, minval=0.001, maxval=50, title="BB mult")
basis_bb = sma(src_bb, length_bb)
dev_bb = mult_bb * stdev(src_bb, length_bb)
upper_bb = basis_bb + dev_bb
lower_bb = basis_bb - dev_bb
// plot(basis_bb, color=red)
// p1 = plot(upper_bb, color=blue)
// p2 = plot(lower_bb, color=blue)
// fill(p1, p2)

//Williams
length_wil = input(130, minval=1, title="Length Williams %R")
upper_wil = highest(length_wil)
lower_wil = lowest(length_wil)
out_wil = 100 * (close - upper_wil) / (upper_wil - lower_wil)
// plot(out_wil)
// band1 = hline(-20)
// band0 = hline(-80)
// fill(band1, band0)



//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(145, title="DI Length")
dirmov(len) =>
	up_adx = change(high)
	down_adx = -change(low)
	plusDM = na(up_adx) ? na : (up_adx > down_adx and up_adx > 0 ? up_adx : 0)
    minusDM = na(down_adx) ? na : (down_adx > up_adx and down_adx > 0 ? down_adx : 0)
	truerange = rma(tr, len)
	plus_adx = fixnan(100 * rma(plusDM, len) / truerange)
	minus_adx = fixnan(100 * rma(minusDM, len) / truerange)
	[plus_adx, minus_adx]

adx(dilen, adxlen) =>
	[plus_adx, minus_adx] = dirmov(dilen)
	sum_adx = plus_adx + minus_adx
	adx = 100 * rma(abs(plus_adx - minus_adx) / (sum_adx == 0 ? 1 : sum_adx), adxlen)

sig_adx = adx(dilen, adxlen)

// plot(sig_adx, color=red, title="ADX")


//ADX 2
adxlen_2 = input(14, title="ADX Smoothing")
dilen_2 = input(150, title="DI Length")
dirmov_2(len) =>
	up_adx_2 = change(high)
	down_adx_2 = -change(low)
	plusDM_2 = na(up_adx_2) ? na : (up_adx_2 > down_adx_2 and up_adx_2 > 0 ? up_adx_2 : 0)
    minusDM_2 = na(down_adx_2) ? na : (down_adx_2 > up_adx_2 and down_adx_2 > 0 ? down_adx_2 : 0)
	truerange_2 = rma(tr, len)
	plus_adx_2 = fixnan(100 * rma(plusDM_2, len) / truerange_2)
	minus_adx_2 = fixnan(100 * rma(minusDM_2, len) / truerange_2)
	[plus_adx_2, minus_adx_2]

adx_2(dilen_2, adxlen_2) =>
	[plus_adx_2, minus_adx_2] = dirmov_2(dilen_2)
	sum_adx_2 = plus_adx_2 + minus_adx_2
	adx_2 = 100 * rma(abs(plus_adx_2 - minus_adx_2) / (sum_adx_2 == 0 ? 1 : sum_adx_2), adxlen_2)

sig_adx_2 = adx(dilen_2, adxlen_2)

// plot(sig_adx_2, color=red, title="ADX_2")

//Input Position
//buy position
pos_aroon1 = input(-85, title="Aroon_1 Position Index_Down")
pos_madouble1_short = input(117, title="ma double_1 wma_Short")
pos_madouble1_long =  input(86, title="ma double_1 sma_Long")
pos_wil = input(-99, title="Williams Position Index_Down")
pos_adx= input(14, title="ADX Position Index_Up")
pos_aroon2 = input(-39, title="Aroon_2 Position Index_Up")

//sell position
pos_bb = input(120, title="BB Position Index_Up")
pos_aroon_3 = input(99, title="Aroon_3 Position Index_Up")
pos_madouble2_short= input(88, title="ma double_2 ema_Short")
pos_madouble2_long= input(96, title="ma double_2 sma_Long")
pos_adx_2= input(9, title="ADX_2 Position Index_Up")
pos_aroon_4 = input(35, title="Aroon_4 Position Index_Down")

//Condition
longCondition_aroon_1 = (oscillator_1 <= pos_aroon1)
longCondition_ma2 = (pos_madouble1_short > pos_madouble1_long)
longCondition_wil = (out_wil <= pos_wil)
longCondition_adx = (sig_adx >= pos_adx)
longCondition_aroon_2 = (oscillator_2 >= pos_aroon2)

shortCondition_bb = (close > basis_bb)
shortCondition_aroon_3 = (oscillator_3 >= pos_aroon_3)
shortCondition_ma2 = (pos_madouble2_short < pos_madouble2_long)
shortCondition_adx = (sig_adx_2 >= pos_adx_2)
shortCondition_aroon_4 = (oscillator_4 <= pos_aroon_4)

vl_aroon_1 = 0
vl_ma2 = 0
vl_wil = 0
vl_adx = 0
vl_aroon_2 = 0

if longCondition_aroon_1
    vl_aroon_1 := 1
    
if longCondition_ma2
    vl_ma2 := 3

if longCondition_wil
    vl_wil := 1
    
if longCondition_adx
    vl_adx := -1

if longCondition_aroon_2
    vl_aroon_2 := -1
	

vs_bb = 0
vs_aroon_3 = 0
vs_ma2 = 0
vs_adx = 0
vs_aroon_4 = 0

if shortCondition_bb
    vs_bb := 1

if shortCondition_aroon_3
    vs_aroon_3 := 1
    
if shortCondition_ma2
    vs_ma2 := 3

if shortCondition_adx
    vs_adx := -2

if shortCondition_aroon_4
    vs_aroon_4 := -1

// plotshape(vl_aroon_1, title= "vl_aroon_1", location=location.belowbar, color=green, text="vl_aroon_1")
// plotshape(vl_ma2, title= "vl_ma2", location=location.belowbar, color=green, text="\nvl_ma2")
// plotshape(vl_wil, title= "vl_wil", location=location.belowbar, color=green, text="\n\nvl_wil")
// plotshape(vl_adx, title= "vl_adx", location=location.belowbar, color=green, text="\n\n\nvl_adx")
// plotshape(vl_aroon_2, title= "vl_aroon_2", location=location.belowbar, color=green, text="\n\n\n\nvl_aroon_2")

// plotshape(vs_bb, title= "vs_bb", location=location.abovebar, color=orange, text="vs_bb")
// plotshape(vs_aroon_3, title= "vs_aroon_3", location=location.abovebar, color=orange, text="vs_aroon_3\n")
// plotshape(vs_ma2, title= "vs_ma2", location=location.abovebar, color=orange, text="vs_ma2\n\n")
// plotshape(vs_adx, title= "vs_adx", location=location.abovebar, color=orange, text="vs_adx\n\n\n")
// plotshape(vs_aroon_4, title= "vs_aroon_4", location=location.abovebar, color=orange, text="vs_aroon_4\n\n\n\n")

longCondition = (vl_aroon_1 + vl_ma2 + vl_wil + vl_adx + vl_aroon_2) >= 3 ? true : na
shortCondition = (vs_bb + vs_aroon_3 + vs_ma2 + vs_adx + vs_aroon_4) >= 3 ? true : na

buy = longCondition == 1 ? longCondition : na
sell = shortCondition == 1? shortCondition : na

// plotshape(buy, title= "buy", location=location.bottom, color=green, text="buy")
// plotshape(sell, title= "sell", location=location.top, color=orange, text="sell")


// === BACKTEST RANGE ===
FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2018, title = "To Year", minval = 2014)

strategy.entry("L", strategy.long, when=(buy))
strategy.close("L", when=(sell))
// strategy.entry("S", strategy.short, when=(sell and (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time <= timestamp(ToYear, ToMonth, ToDay, 23, 59))))
// strategy.close("S", when=(buy and (time <= timestamp(ToYear, ToMonth, ToDay, 23, 59))))