এই কৌশলটি বাজারের প্রবণতা ক্যাপচার করার জন্য একাধিক সময়সীমার উপর সহজ চলমান গড় (এসএমএ) ব্যবহার করে। স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী এসএমএগুলির আপেক্ষিক অবস্থানগুলির তুলনা করে এটি ক্রয় এবং বিক্রয় সংকেত উত্পন্ন করে। কৌশলটি মিথ্যা সংকেতগুলি ফিল্টার করতে এবং ব্যবসায়ের নির্ভুলতা উন্নত করতে প্রবণতা নিশ্চিতকরণ শর্তও ব্যবহার করে। অতিরিক্তভাবে, এটি ঝুঁকি পরিচালনার জন্য লাভ এবং স্টপ লস বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে।
গতিশীল স্টপ লস সহ এই মাল্টি-টাইমফ্রেম এসএমএ ট্রেন্ড অনুসরণকারী কৌশলটি বাজারের প্রবণতা ক্যাপচার করতে বিভিন্ন সময়সীমার এসএমএ ব্যবহার করে, প্রবণতা নিশ্চিতকরণ শর্তগুলি ব্যবহার করে মিথ্যা সংকেতগুলি ফিল্টার করে এবং প্রবণতা অনুসরণ এবং ঝুঁকি পরিচালনার লক্ষ্য অর্জনের জন্য লাভ / স্টপ লস এবং গতিশীল অবস্থান সমন্বয় বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করে। যদিও কৌশলটির কিছু সুবিধা রয়েছে, তবুও এটি প্যারামিটার অপ্টিমাইজেশন, অস্থির বাজার এবং অপ্রত্যাশিত ইভেন্টগুলির মতো ঝুঁকির মুখোমুখি হয়। ভবিষ্যতের অপ্টিমাইজেশনগুলি অতিরিক্ত প্রযুক্তিগত সূচকগুলি অন্তর্ভুক্ত করতে, প্যারামিটার নির্বাচনকে অনুকূল করতে, ঝুঁকি ব্যবস্থাপনা উন্নত করতে এবং কৌশলটির দৃust়তা এবং লাভজনকতা বাড়ানোর জন্য বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নিতে পারে।
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("market slayer v3", overlay=true) // Input parameters showConfirmationTrend = input(title='Show Trend', defval=true) confirmationTrendTimeframe = input.timeframe(title='Main Trend', defval='240') confirmationTrendValue = input(title='Main Trend Value', defval=2) showConfirmationBars = input(title='Show Confirmation Bars', defval=true) topCbarValue = input(title='Top Confirmation Value', defval=60) short_length = input.int(10, minval=1, title="Short SMA Length") long_length = input.int(20, minval=1, title="Long SMA Length") takeProfitEnabled = input(title="Take Profit Enabled", defval=false) takeProfitValue = input.float(title="Take Profit (points)", defval=20, minval=1) stopLossEnabled = input(title="Stop Loss Enabled", defval=false) stopLossValue = input.float(title="Stop Loss (points)", defval=50, minval=1) // Calculate SMAs short_sma = ta.sma(close, short_length) long_sma = ta.sma(close, long_length) // Generate buy and sell signals based on SMAs buy_signal = ta.crossover(short_sma, long_sma) sell_signal = ta.crossunder(short_sma, long_sma) // Plot SMAs plot(short_sma, color=color.rgb(24, 170, 11), title="Short SMA") plot(long_sma, color=color.red, title="Long SMA") // Confirmation Bars f_confirmationBarBullish(cbValue) => cBarClose = close slowConfirmationBarSmaHigh = ta.sma(high, cbValue) slowConfirmationBarSmaLow = ta.sma(low, cbValue) slowConfirmationBarHlv = int(na) slowConfirmationBarHlv := cBarClose > slowConfirmationBarSmaHigh ? 1 : cBarClose < slowConfirmationBarSmaLow ? -1 : slowConfirmationBarHlv[1] slowConfirmationBarSslDown = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaHigh : slowConfirmationBarSmaLow slowConfirmationBarSslUp = slowConfirmationBarHlv < 0 ? slowConfirmationBarSmaLow : slowConfirmationBarSmaHigh slowConfirmationBarSslUp > slowConfirmationBarSslDown fastConfirmationBarBullish = f_confirmationBarBullish(topCbarValue) fastConfirmationBarBearish = not fastConfirmationBarBullish fastConfirmationBarClr = fastConfirmationBarBullish ? color.green : color.red fastConfirmationChangeBullish = fastConfirmationBarBullish and fastConfirmationBarBearish[1] fastConfirmationChangeBearish = fastConfirmationBarBearish and fastConfirmationBarBullish[1] confirmationTrendBullish = request.security(syminfo.tickerid, confirmationTrendTimeframe, f_confirmationBarBullish(confirmationTrendValue), lookahead=barmerge.lookahead_on) confirmationTrendBearish = not confirmationTrendBullish confirmationTrendClr = confirmationTrendBullish ? color.green : color.red // Plot trend labels plotshape(showConfirmationTrend, style=shape.square, location=location.top, color=confirmationTrendClr, title='Trend Confirmation Bars') plotshape(showConfirmationBars and (fastConfirmationChangeBullish or fastConfirmationChangeBearish), style=shape.triangleup, location=location.top, color=fastConfirmationChangeBullish ? color.green : color.red, title='Fast Confirmation Bars') plotshape(showConfirmationBars and buy_signal and confirmationTrendBullish, style=shape.triangleup, location=location.top, color=color.green, title='Buy Signal') plotshape(showConfirmationBars and sell_signal and confirmationTrendBearish, style=shape.triangledown, location=location.top, color=color.red, title='Sell Signal') // Generate trade signals buy_condition = buy_signal and confirmationTrendBullish and not (strategy.opentrades > 0) sell_condition = sell_signal and confirmationTrendBearish and not (strategy.opentrades > 0) strategy.entry("Buy", strategy.long, when=buy_condition, comment ="BUY CALLS") strategy.entry("Sell", strategy.short, when=sell_condition, comment ="BUY PUTS") // Take Profit if (takeProfitEnabled) strategy.exit("Take Profit Buy", from_entry="Buy", profit=takeProfitValue) strategy.exit("Take Profit Sell", from_entry="Sell", profit=takeProfitValue) // Stop Loss if (stopLossEnabled) strategy.exit("Stop Loss Buy", from_entry="Buy", loss=stopLossValue) strategy.exit("Stop Loss Sell", from_entry="Sell", loss=stopLossValue) // Close trades based on trend confirmation bars if strategy.opentrades > 0 if strategy.position_size > 0 if not confirmationTrendBullish strategy.close("Buy", comment ="CLOSE CALLS") else if not confirmationTrendBearish strategy.close("Sell", comment ="CLOSE PUTS") // Define alert conditions as booleans buy_open_alert = buy_condition sell_open_alert = sell_condition buy_closed_alert = strategy.opentrades < 0 sell_closed_alert = strategy.opentrades > 0 // Alerts alertcondition(buy_open_alert, title='Buy calls', message='Buy calls Opened') alertcondition(sell_open_alert, title='buy puts', message='buy Puts Opened') alertcondition(buy_closed_alert, title='exit calls', message='exit calls ') alertcondition(sell_closed_alert, title='exit puts', message='exit puts Closed')