MACD संकेतक पर आधारित ट्रेंड-फॉलोइंग ट्रेडिंग रणनीति


निर्माण तिथि: 2023-09-27 16:46:38 अंत में संशोधित करें: 2023-09-27 16:46:38
कॉपी: 1 क्लिक्स: 651
1
ध्यान केंद्रित करना
1617
समर्थक

अवलोकन

यह रणनीति MACD संकेतक के आधार पर प्रवृत्ति की दिशा का आकलन करती है और स्टोच संकेतक के साथ मिलकर विशिष्ट खरीद और बिक्री संचालन करती है। यह रणनीति लंबी अवधि के MACD का आकलन करती है और छोटी अवधि के स्टोच को बाजार में उतारती है।

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

  1. MACD सूचक का उपयोग करके बड़े रुझानों की दिशा का पता लगाना

    • लंबे समय तक चलने वाली ईएमए फास्ट, धीमी और एमएसीडी स्तंभों की गणना करें

    • विभिन्न अवधि के MACD के परिवर्तनों की तुलना करें और प्रवृत्ति की दिशा निर्धारित करें

  2. स्टोच सूचकांक का उपयोग करके विशिष्ट खरीद और बिक्री बिंदु निर्धारित करना

    • %K लाइन और %D लाइन की गणना

    • स्टोच ने ओवरबॉय ओवरसेड क्षेत्र के पास एक विक्रय संकेत के रूप में देखा और वापस उठाया

  3. रुझान की दिशा और स्टोच सिग्नल के संयोजन में खरीद और बिक्री संचालन

    • स्टोच खरीद संकेतों के साथ आया जब महाचक्र MACD ऊपर चला गया, और अधिक किया

    • स्टोच ने बिक्री के संकेत दिए जब महाचक्र MACD गिरावट आई, और इसे बंद कर दिया

  4. स्टॉप लॉस स्टॉप सेट करें, फंड मैनेजमेंट को अनुकूलित करें

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

  • इस रणनीति में ट्रेंड ट्रैकिंग और ओवरबॉय ओवरसोल इंडिकेटर के संयोजन से मध्यम और दीर्घकालिक रुझानों को प्रभावी ढंग से पकड़ने में मदद मिलती है।

  • एमएसीडी एक दिशा निर्धारित करता है, स्टोच ट्रेडिंग विवरण देता है, और जोखिम को नियंत्रित करता है

  • सूचकांक रणनीति बनाने के लिए सूचकांकों के बीच संयोजन का लाभ उठाएं

  • ट्रेडिंग जोखिम के प्रबंधन के लिए स्टॉप-लॉस-स्टॉप सिस्टम स्थापित करना

  • विभिन्न बाजार स्थितियों के लिए अनुकूलन योग्य रणनीति पैरामीटर

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

  • मध्य और दीर्घकालिक रुझानों के बारे में गलतफहमी के कारण प्रतिकूल व्यापार घाटा हो सकता है

  • स्टोच सूचकांक में गलत संकेत, कम लाभ या हानि

  • रुझान में बदलाव के साथ, स्टॉपलॉस को तोड़ दिया जा सकता है, जिससे नुकसान बढ़ सकता है

  • राजस्व लक्ष्य बहुत बड़ा या छोटा होना रणनीति को प्रभावित कर सकता है

  • गलत पैरामीटर और बाजार की परिस्थितियों में परिवर्तन के लिए अनुकूलीकरण रणनीति को विफल कर सकता है

  • रुझानों को अनुकूलित करने, स्टोच सिग्नल को सत्यापित करने और स्टॉप-स्टॉप स्थिति को समायोजित करने के माध्यम से जोखिम को कम करना

अनुकूलन दिशा

  • MACD पैरामीटर के संयोजन को अनुकूलित करें और रुझानों के बारे में निर्णय की सटीकता में सुधार करें

  • झूठे संकेतों से बचने के लिए कई समय चक्रों के स्टोच सूचकांक पर विचार करें

  • बाजार में उतार-चढ़ाव के लिए स्टॉप-स्टॉप अनुपात को गतिशील रूप से समायोजित करना

  • अन्य संकेतक संकेतों के साथ संयोजन में verifies, संकेत की प्रभावशीलता में सुधार

  • विभिन्न किस्मों की विशेषताओं और ट्रेडिंग समय के अनुसार पैरामीटर का अनुकूलन

  • मशीन लर्निंग एल्गोरिदम जो ट्रेंड की दिशा निर्धारित करने में मदद करते हैं

  • अपर्याप्त या अत्यधिक पूर्वाग्रह से बचने के लिए संयोजन क्षमता सूचकांक

संक्षेप

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

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

//@version=4

// strategy(title="自用策略v0.2",calc_on_order_fills=false,calc_on_every_tick =false, initial_capital=10000,commission_type=strategy.commission.percent, commission_value=0.00,overlay = true,default_qty_type = strategy.cash, default_qty_value = 10000)



//STOCH
periodD = input(3, title="%D Smoothing", minval=1)
periodK = input(14, title="%K Length", minval=1)
periodK2 = input(42, title="%K2 Length", minval=1)
periodK3 = input(126, title="%K3 Length", minval=1)
periodK4 = input(378, title="%K4 Length", minval=1)
periodK5 = input(14, title="%K5 Length", minval=1)
periodK6 = input(30, title="%K6 Length", minval=1)
smoothK = input(1, title="%K Smoothing", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
k2 = sma(stoch(close, high, low, periodK2), smoothK*3)
k3 = sma(stoch(close, high, low, periodK3), smoothK*3*3)
k4 = sma(stoch(close, high, low, periodK4), smoothK*3*3*3)
d = sma(k, periodD)
all = (k+k2*3+k3*9+k4*18)/31
allp = sma(all, periodK6)



buffer = input(title="buffer", type=input.float, defval=0.3, minval = 0, step = 0.1)
b1 = close[1]* (1+buffer/100)
b2 = close[1]* (1-buffer/100)

//MACD
fast_length = input(title="Fast Length", defval=144)
slow_length = input(title="Slow Length", defval=312)

src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 200, defval = 108)
sma_source = input(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
MACDCHA = input(title="MACDCHA步长", defval=30)
MACDCHA2 = input(title="MACDCHA步长2", defval=20)
MACDCHA3 = input(title="MACDCHA步长3", defval=10)
MACDCHA4 = input(title="MACDCHA步长4", defval=5)
MACDCHA5 = input(title="MACDCHA步长5", defval=3)
MACDCHA6 = input(title="MACDCHA步长6", defval=1)
HISTCHA = input(title="hist步长", defval=50)
macdcha = hist - hist[MACDCHA]
macdcha2 = hist - hist[MACDCHA2]
macdcha3 = hist - hist[MACDCHA3]
macdcha4 = hist - hist[MACDCHA4]
macdcha5 = hist - hist[MACDCHA5]
macdcha6 = hist - hist[MACDCHA6]
histcha = hist[HISTCHA]
var true2 = 0
var true2_1 = 0
var true2_2 = 0
var true2_3 = 0
var true2_4 = 0//延伸
var fangxiang =0
//确认方向
if(macdcha>=0 and macdcha2>=0 and macdcha3>=0 and macdcha4>=0 and macdcha5>=0 and macdcha6>=0)
    fangxiang := 1
    true2_2 := 0
if(macdcha<=0 and macdcha2<=0 and macdcha3<=0 and macdcha4<=0 and macdcha5<=0 and macdcha6<=0)
    fangxiang :=-1
    true2_1 := 1
//k3min = min(k3,k3[1],k3[2],k3[3],k3[4],k3[5],k3[6],k3[7],k3[8],k3[9],k3[10],k3[11],k3[12],k3[13],k3[14],k3[15],k3[16],k3[17],k3[18],k3[19],k3[20],k3[21],k3[22],k3[23],k3[24],k3[25],k3[26],k3[27],k3[28],k3[29],k3[30],k3[31],k3[32],k3[33],k3[34],k3[35],k3[36],k3[37],k3[38],k3[39],k3[40],k3[41],k3[42],k3[43],k3[44],k3[45],k3[46],k3[47],k3[48],k3[49],k3[50])
//k3max = max(k3,k3[1],k3[2],k3[3],k3[4],k3[5],k3[6],k3[7],k3[8],k3[9],k3[10],k3[11],k3[12],k3[13],k3[14],k3[15],k3[16],k3[17],k3[18],k3[19],k3[20],k3[21],k3[22],k3[23],k3[24],k3[25],k3[26],k3[27],k3[28],k3[29],k3[30],k3[31],k3[32],k3[33],k3[34],k3[35],k3[36],k3[37],k3[38],k3[39],k3[40],k3[41],k3[42],k3[43],k3[44],k3[45],k3[46],k3[47],k3[48],k3[49],k3[50])
allpmax = max(allp[1],allp[2],allp[3],allp[4],allp[5],allp[6])
allpmin = min(allp[1],allp[2],allp[3],allp[4],allp[5],allp[6])
if(histcha < 0 and macdcha>=0 and macdcha2>=0 and macdcha3>=0 and macdcha4>=0 and macdcha5>=0 and macdcha6>=0 and d < 20 and volume > volume[1] and true2_1 == 1 and allp>allp[1] and allp <80)//and k3max < 80  //and k3min < 30 and k3 >20 and k2<50
    strategy.entry("开多", true, comment = "开多") // and close > close[1] and cci1> MEA1
    true2_1 :=0
if(d >80)
    strategy.close( "开多", comment = "平多")
    true2_1 :=1

stop_loss=input(4, "做多止损 %", minval = 1, step = 1)
sl = strategy.position_avg_price * (1-stop_loss/100)
close_Stop = close < sl
if(close_Stop or(allp<20 and allp[1]>20))
    strategy.close( "开多", comment = "做多止损")
    true2_1 :=1
Target_profit=input(10, "做多止盈 %", minval = 1, step = 1)
tp = strategy.position_avg_price * (1+Target_profit/100)
close_Target = close > tp
strategy.close("开多", when = close_Target, comment ="做多盈利")


//空
if(histcha > 0 and macdcha<=0 and macdcha2<=0 and macdcha3<=0 and macdcha4<=0 and macdcha5<=0 and macdcha6<=0 and d > 80 and volume > volume[1] and true2_2 == 1 and allp<allp[1] and allp >20) // and k3max>70 and k3<80
    //strategy.entry("开空", comment = "开空") 
    strategy.entry("开空", strategy.short,comment ="开空")
    true2_2 := 0
if( d <20)
   // strategy.close(  comment = "平空")
    strategy.close("开空",  comment = "平空")
    true2_2 := 1

stop_loss2=input(4, "做空止损 %", minval = 1, step = 1)
sl2 = strategy.position_avg_price * (1+stop_loss2/100)
close_Stop2 = close > sl2
if(close_Stop2 or(allp>80 and allp[1]<80))
    strategy.close( "开空", comment = "做空止损")
    true2_2 == 1
Target_profit2=input(10, "做空止盈 %", minval = 1, step = 1)
tp2 = strategy.position_avg_price * (1-Target_profit2/100)
close_Target2 = close < tp2
strategy.close("开空", when = close_Target2, comment ="做空盈利")