এই কৌশলটি এমএসিডি সূচকের উপর ভিত্তি করে প্রবণতা দিক চিহ্নিত করে এবং স্টক সূচক ব্যবহার করে নির্দিষ্ট ক্রয় এবং বিক্রয় সিদ্ধান্ত নেয়। এটি প্রবেশ এবং প্রস্থানগুলির জন্য প্রধান প্রবণতা এবং সংক্ষিপ্ত চক্র স্টক নির্ধারণের জন্য দীর্ঘ চক্র এমএসিডি গ্রহণ করে।
এমএসিডি সূচক ব্যবহার করে প্রধান প্রবণতা দিক বিচার করা
দ্রুত EMA, ধীর EMA এবং MACD হিস্টোগ্রাম গণনা
প্রবণতা নির্ধারণের জন্য বিভিন্ন চক্রের MACD গতির তুলনা
স্টোক সূচক ব্যবহার করে নির্দিষ্ট ক্রয় এবং বিক্রয় পয়েন্ট সনাক্তকরণ
%K লাইন এবং %D লাইন গণনা করা হচ্ছে
লেনদেনের সংকেত হিসাবে স্টকস পুনরুদ্ধারের সাথে অতিরিক্ত ক্রয় বা অতিরিক্ত বিক্রয়ের অঞ্চলের কাছাকাছি বিচ্যুতি
ট্রেন্ডের দিকনির্দেশনা এবং স্টক সংকেতগুলির উপর ভিত্তি করে কেনা এবং বিক্রয় সিদ্ধান্ত নেওয়া
যখন বড় চক্রের MACD বৃদ্ধি পায় এবং স্টক ক্রয় সংকেত প্রদর্শিত হয় তখন দীর্ঘ যান
প্রধান চক্রের 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 ="做空盈利")