এই নিবন্ধটি মোমবাতি প্যাটার্নের উপর ভিত্তি করে একটি গতির ব্রেকআউট ট্রেডিং কৌশল চালু করে। কৌশলটি মোমবাতি গঠনগুলি স্বীকৃতি দিয়ে বাজার প্রবণতা এবং প্রবেশের সুযোগগুলি সনাক্ত করে।
ইম্পোমেন্ট ব্রেকআউট কৌশল মূলত বাজারে প্রবেশের জন্য উত্থান বা হ্রাসের গ্লোবিং প্যাটার্নগুলি সনাক্ত করে সম্ভাব্য বিপরীত সংকেতগুলি মূল্যায়ন করে। সংকেত সনাক্ত করার পরে, এটি দ্রুত অতিরিক্ত রিটার্ন অর্জনের প্রবণতা অনুসরণ করে।
ইম্পোমেন্টাম ব্রেকআউট কৌশলটির মূল যুক্তি হ'ল গল্ফিং প্যাটার্নগুলি সনাক্ত করা, যার মধ্যে বুলিশ গল্ফ এবং হ্রাস গল্ফ অন্তর্ভুক্ত রয়েছে।
বর্তমান সময়ের বন্ধের মূল্য খোলার মূল্যের চেয়ে বেশি এবং পূর্ববর্তী সময়ের বন্ধের মূল্য পূর্ববর্তী সময়ের খোলার মূল্যের তুলনায় কম হলে একটি উত্থানমুখী গ্লোফিং প্যাটার্ন তৈরি হয়। এই প্যাটার্নটি প্রায়শই বাজারের মনোভাবের বিপরীতমুখী থেকে উত্থানমুখী হয়ে ওঠে, এটিকে উত্থানের প্রবণতা অনুসরণ করার জন্য একটি ভাল সুযোগ করে তোলে।
বর্তমান সময়ের বন্ধের মূল্য খোলার মূল্যের চেয়ে কম এবং পূর্ববর্তী সময়ের বন্ধের মূল্য পূর্ববর্তী সময়ের খোলার মূল্যের তুলনায় বেশি হলে একটি হ্রাসমুখী গলফিং প্যাটার্ন তৈরি হয়। এটি বাজারের আবেগের পরিবর্তনের সংকেত দেয়, যা বাজারে শর্ট করার সুযোগ দেয়।
গ্লোবিং প্যাটার্ন চিহ্নিত করার পরে, গতির ব্রেকআউট কৌশলটি সম্ভাব্য বিপরীত প্রবণতা ট্র্যাক করার জন্য অতিরিক্ত লিভারেজ সহ একটি অবস্থান দ্রুত প্রতিষ্ঠা করে। এটি লাভকে লক করার সময় ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস এবং লাভ গ্রহণকে গতিশীলভাবে সামঞ্জস্য করে।
কৌশলটি নিম্নলিখিত উপায়ে অপ্টিমাইজ করা যেতে পারেঃ
গতির ব্রেকআউট কৌশলটি একটি সাধারণ গড় বিপরীতমুখী কৌশল। মূল মোমবাতি সংকেতগুলি ক্যাপচার করে এটি দ্রুত বাজার প্রবণতা বিপরীতমুখী বিচার করে এবং ট্র্যাক করে। যদিও ঝুঁকি বিদ্যমান, কৌশলটি ঝুঁকি-পুরষ্কার অনুপাত নিয়ন্ত্রণের জন্য একাধিক অপ্টিমাইজেশান কৌশলগুলির মাধ্যমে কার্যকরভাবে উন্নত করা যেতে পারে। এটি সালিশের মতো রিটার্ন খুঁজছেন আগ্রাসী বিনিয়োগকারীদের জন্য উপযুক্ত।
/*backtest start: 2022-11-27 00:00:00 end: 2023-11-09 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title = "MomGulfing", shorttitle = "MomGulfing", overlay = true, initial_capital=10000, pyramiding=3, calc_on_order_fills=false, calc_on_every_tick=false, currency="USD", default_qty_type=strategy.cash, default_qty_value=1000, commission_type=strategy.commission.percent, commission_value=0.04) syear = input(2021) smonth = input(1) sday = input(1) fyear = input(2022) fmonth = input(12) fday = input(31) start = timestamp(syear, smonth, sday, 01, 00) finish = timestamp(fyear, fmonth, fday, 23, 59) date = time >= start and time <= finish ? true : false longs = input(true) shorts = input(true) rr = input(2.5) position_risk_percent = input(1)/100 signal_bar_check = input.string(defval="3", options=["1", "2", "3"]) margin_req = input(80) sl_increase_factor = input(0.2) tp_decrease_factor = input(0.0) check_for_volume = input(true) var long_sl = 0.0 var long_tp = 0.0 var short_sl = 0.0 var short_tp = 0.0 var long_lev = 0.0 var short_lev = 0.0 initial_capital = strategy.equity position_risk = initial_capital * position_risk_percent bullishEngulfing_st = close[1] < open[1] and close > open and high[1] < close and (check_for_volume ? volume[1]<volume : true) bullishEngulfing_nd = close[2] < open[2] and close[1] > open[1] and close > open and high[2] > close[1] and high[2] < close and (check_for_volume ? volume[2]<volume : true) bullishEngulfing_rd = close[3] < open[3] and close[2] > open[2] and close[1] > open[1] and close > open and high[3] > close[2] and high[3] > close[1] and high[3] < close and (check_for_volume ? volume[3]<volume : true) bullishEngulfing = signal_bar_check == "1" ? bullishEngulfing_st : signal_bar_check == "2" ? bullishEngulfing_st or bullishEngulfing_nd : bullishEngulfing_st or bullishEngulfing_nd or bullishEngulfing_rd long_stop_level = bullishEngulfing_st ? math.min(low[1], low) : bullishEngulfing_nd ? math.min(low[2], low[1], low) : bullishEngulfing_rd ? math.min(low[3], low[2], low[1], low) : na rr_amount_long = close-long_stop_level long_exit_level = close + rr*rr_amount_long long_leverage = math.floor(margin_req/math.floor((rr_amount_long/close)*100)) bearishEngulfing_st = close[1] > open[1] and close < open and low[1] > close and (check_for_volume ? volume[1]<volume : true) bearishEngulfing_nd = close[2] > open[2] and close[1] < open[1] and close < open and low[2] < close[1] and low[2] > close and (check_for_volume ? volume[2]<volume : true) bearishEngulfing_rd = close[3] > open[3] and close[2] < open[2] and close[1] < open[1] and close < open and low[3] < close[2] and low[3] < close[1] and low[3] > close and (check_for_volume ? volume[3]<volume : true) bearishEngulfing = signal_bar_check == "1" ? bearishEngulfing_st : signal_bar_check == "2" ? bearishEngulfing_st or bearishEngulfing_nd : bearishEngulfing_st or bearishEngulfing_nd or bearishEngulfing_rd short_stop_level = bearishEngulfing_st ? math.max(high[1], high) : bearishEngulfing_nd ? math.max(high[2], high[1], high) : bearishEngulfing_rd ? math.max(high[3], high[2], high[1], high) : na rr_amount_short = short_stop_level-close short_exit_level = close - rr*rr_amount_short short_leverage = math.floor(margin_req/math.floor((rr_amount_short/short_stop_level)*100)) long = longs and date and bullishEngulfing short = shorts and date and bearishEngulfing bgcolor(long[1] ? color.new(color.teal, 80) : (short[1] ? color.new(color.purple, 80) : na)) if long and strategy.position_size <= 0 long_lev := long_leverage if short and strategy.position_size >= 0 short_lev := short_leverage long_pos_size = long_lev * position_risk long_pos_qty = long_pos_size/close short_pos_size = short_lev * position_risk short_pos_qty = short_pos_size/close if long if strategy.position_size <= 0 long_sl := long_stop_level long_tp := long_exit_level else if strategy.position_size > 0 long_sl := long_stop_level + sl_increase_factor*rr_amount_long long_tp := long_exit_level - tp_decrease_factor*rr_amount_long strategy.entry("L"+str.tostring(long_lev)+"X", strategy.long, qty=long_pos_qty) label_text = str.tostring(long_lev)+"X\nSL:"+str.tostring(long_sl)+"\nTP:"+str.tostring(long_tp) label.new(bar_index+1, na, text=label_text, color=color.green, style=label.style_label_up, xloc=xloc.bar_index, yloc=yloc.belowbar) else if short if strategy.position_size >= 0 short_sl := short_stop_level short_tp := short_exit_level else if strategy.position_size < 0 short_sl := short_stop_level - sl_increase_factor*rr_amount_short short_tp := short_exit_level + tp_decrease_factor*rr_amount_short strategy.entry("S"+str.tostring(short_lev)+"X", strategy.short, qty=short_pos_qty) label_text = str.tostring(short_lev)+"X\nSL:"+str.tostring(short_sl)+"\nTP:"+str.tostring(short_tp) label.new(bar_index+1, na, text=label_text, color=color.red, style=label.style_label_down, xloc=xloc.bar_index, yloc=yloc.abovebar) if (strategy.position_size > 0) strategy.exit(id="L TP/SL", stop=long_sl, limit=long_tp) if (strategy.position_size < 0) strategy.exit(id="S TP/SL", stop=short_sl, limit=short_tp) sl_level = strategy.position_size > 0 ? long_sl : strategy.position_size < 0 ? short_sl : na plot(sl_level, color=color.red, style=plot.style_linebr) tp_level = strategy.position_size > 0 ? long_tp : strategy.position_size < 0 ? short_tp : na plot(tp_level, color=color.green, style=plot.style_linebr)