यह रणनीति एमएसीडी संकेतक के आधार पर प्रवृत्ति की दिशा की पहचान करती है और स्टॉक संकेतक का उपयोग करके विशिष्ट खरीद और बिक्री निर्णय लेती है। यह प्रवेश और निकास के लिए प्रमुख प्रवृत्ति और लघु चक्र स्टॉक निर्धारित करने के लिए लंबे चक्र एमएसीडी को अपनाती है।
एमएसीडी संकेतक का उपयोग करके प्रमुख प्रवृत्ति दिशा का आकलन करना
त्वरित ईएमए, धीमी ईएमए और एमएसीडी हिस्टोग्राम की गणना
प्रवृत्ति निर्धारित करने के लिए विभिन्न चक्रों में एमएसीडी आंदोलनों की तुलना करना
स्टॉक सूचक का उपयोग करके विशिष्ट खरीद और बिक्री बिंदुओं की पहचान करना
% K रेखा और % D रेखा की गणना करना
ओवरबॉट या ओवरसोल्ड जोन के पास विचलन, स्टॉक ट्रेडिंग संकेतों के रूप में वापस उछाल के साथ
रुझान की दिशा और स्टॉक संकेतों के आधार पर खरीद और बिक्री के निर्णय लेना
जब मुख्य चक्र एमएसीडी बढ़ता है और स्टॉक खरीद संकेत दिखाई देता है तो लंबे समय तक जाएं
जब मुख्य चक्र MACD गिरता है और स्टॉक बेचने का संकेत दिखाई देता है तो शॉर्ट करें
जोखिम प्रबंधन को अनुकूलित करने के लिए स्टॉप लॉस और ले लाभ सेट करना
ट्रेंड फॉलो करने वाले और ओवरबोल्ड ओवरसोल्ड इंडिकेटर का संयोजन मध्यम से दीर्घकालिक रुझानों को प्रभावी ढंग से पकड़ने में मदद करता है
एमएसीडी प्रमुख दिशा निर्धारित करता है जबकि स्टॉक व्यापार विवरणों को काम करता है जो जोखिमों को कम करता है
व्यवस्थित रणनीतियों को तैयार करने के लिए सूचक संयोजनों का पूर्ण उपयोग करना
स्टॉप लॉस और टेक प्रॉफिट सेट करना ट्रेडिंग जोखिमों को नियंत्रित करता है
अनुकूलन योग्य मापदंड विभिन्न बाजार स्थितियों के अनुकूल हैं
मध्यम से दीर्घकालिक रुझान का गलत आकलन विपरीत व्यापारिक घाटे का कारण बन सकता है
स्टोक के झूठे संकेतों से अपर्याप्त लाभ या हानि होती है
स्टॉप लॉस पॉइंट तब टूट सकता है जब रुझान बदलता है, नुकसान बढ़ता है
गलत लाभ लक्ष्य स्तर रणनीति के प्रदर्शन को प्रभावित करते हैं
अप्रभावी मापदंड और बदलते परिवेश के अनुकूल नहीं होने से रणनीति अमान्य हो सकती है
रुझान निर्णय को अनुकूलित करके, स्टॉक संकेतों को सत्यापित करके, स्टॉप लॉस और लाभ लेने आदि को समायोजित करके जोखिमों को कम किया जा सकता है।
प्रवृत्ति निर्णय की सटीकता में सुधार के लिए एमएसीडी पैरामीटर मिश्रण को अनुकूलित करें
झूठे संकेतों से बचने के लिए बहु चक्र स्टोक पर विचार करें
बाजार की अस्थिरता को अनुकूलित करने के लिए स्टॉप लॉस और ले लाभ अनुपात को गतिशील रूप से समायोजित करें
सत्यापन और वैधता में सुधार के लिए अन्य संकेतक संकेत जोड़ें
विभिन्न उत्पादों की विशेषताओं और व्यापारिक सत्रों के आधार पर मापदंडों का अनुकूलन करें
रुझान की दिशा का आकलन करने में सहायता के लिए मशीन लर्निंग मॉडल पेश करें
अपर्याप्त पीछा या अत्यधिक अनुसरण से बचने के लिए वॉल्यूम संकेतक शामिल करें
यह रणनीति जोखिमों को नियंत्रित करते हुए मध्यम से दीर्घकालिक रुझानों को पकड़ने के लिए एमएसीडी और स्टॉक संकेतकों की ताकत को एकीकृत करती है। यह पैरामीटर को अनुकूलित करके, स्टॉप लॉस और ले लाभ सेट करके, संकेतों को सत्यापित करके, आदि विभिन्न बाजार स्थितियों में प्रभावी हो सकती है। आगे पैरामीटर ट्यूनिंग, सिग्नल सटीकता में सुधार और मशीन लर्निंग को शामिल करके सुधार के लिए अभी भी जगह है। रणनीति अधिक व्यापक और बुद्धिमान हो सकती है।
/*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 ="做空盈利")