एमएसीडी संकेतक के आधार पर ट्रेडिंग रणनीति के बाद एमएसीडी रुझान

लेखक:चाओझांग, दिनांक: 2023-09-27 16:46:38
टैगः

अवलोकन

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

रणनीति तर्क

  1. एमएसीडी संकेतक का उपयोग करके प्रमुख प्रवृत्ति दिशा का आकलन करना

    • त्वरित ईएमए, धीमी ईएमए और एमएसीडी हिस्टोग्राम की गणना

    • प्रवृत्ति निर्धारित करने के लिए विभिन्न चक्रों में एमएसीडी आंदोलनों की तुलना करना

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

    • % K रेखा और % D रेखा की गणना करना

    • ओवरबॉट या ओवरसोल्ड जोन के पास विचलन, स्टॉक ट्रेडिंग संकेतों के रूप में वापस उछाल के साथ

  3. रुझान की दिशा और स्टॉक संकेतों के आधार पर खरीद और बिक्री के निर्णय लेना

    • जब मुख्य चक्र एमएसीडी बढ़ता है और स्टॉक खरीद संकेत दिखाई देता है तो लंबे समय तक जाएं

    • जब मुख्य चक्र MACD गिरता है और स्टॉक बेचने का संकेत दिखाई देता है तो शॉर्ट करें

  4. जोखिम प्रबंधन को अनुकूलित करने के लिए स्टॉप लॉस और ले लाभ सेट करना

लाभ विश्लेषण

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

  • एमएसीडी प्रमुख दिशा निर्धारित करता है जबकि स्टॉक व्यापार विवरणों को काम करता है जो जोखिमों को कम करता है

  • व्यवस्थित रणनीतियों को तैयार करने के लिए सूचक संयोजनों का पूर्ण उपयोग करना

  • स्टॉप लॉस और टेक प्रॉफिट सेट करना ट्रेडिंग जोखिमों को नियंत्रित करता है

  • अनुकूलन योग्य मापदंड विभिन्न बाजार स्थितियों के अनुकूल हैं

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

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

  • स्टोक के झूठे संकेतों से अपर्याप्त लाभ या हानि होती है

  • स्टॉप लॉस पॉइंट तब टूट सकता है जब रुझान बदलता है, नुकसान बढ़ता है

  • गलत लाभ लक्ष्य स्तर रणनीति के प्रदर्शन को प्रभावित करते हैं

  • अप्रभावी मापदंड और बदलते परिवेश के अनुकूल नहीं होने से रणनीति अमान्य हो सकती है

  • रुझान निर्णय को अनुकूलित करके, स्टॉक संकेतों को सत्यापित करके, स्टॉप लॉस और लाभ लेने आदि को समायोजित करके जोखिमों को कम किया जा सकता है।

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

  • प्रवृत्ति निर्णय की सटीकता में सुधार के लिए एमएसीडी पैरामीटर मिश्रण को अनुकूलित करें

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

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

  • सत्यापन और वैधता में सुधार के लिए अन्य संकेतक संकेत जोड़ें

  • विभिन्न उत्पादों की विशेषताओं और व्यापारिक सत्रों के आधार पर मापदंडों का अनुकूलन करें

  • रुझान की दिशा का आकलन करने में सहायता के लिए मशीन लर्निंग मॉडल पेश करें

  • अपर्याप्त पीछा या अत्यधिक अनुसरण से बचने के लिए वॉल्यूम संकेतक शामिल करें

निष्कर्ष

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


/*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 ="做空盈利")





अधिक