এই নিবন্ধটি মোমবাতি গণনার উপর ভিত্তি করে একটি প্রবণতা অনুসরণ কৌশল চালু করে। এটি মোমবাতি দিক গণনা করে প্রবণতা দিক বিচার করে এবং একটি নির্দিষ্ট সংখ্যক মোমবাতি পরে প্রবেশ করে।
কৌশলটি নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করেঃ
বাজার পক্ষপাত নির্ধারণের জন্য মোমবাতি দিক গণনা করা। যখন N ধারাবাহিক মোমবাতি এক দিকে যায়, একটি প্রবণতা চিহ্নিত করা হয়।
ঊর্ধ্বমুখী ট্রেন্ডে, N ধারাবাহিক হ্রাসমুখী মোমবাতিগুলির পরে দীর্ঘ যান। নিম্নমুখী ট্রেন্ডে, N ধারাবাহিক উত্থানমুখী মোমবাতিগুলির পরে শর্ট যান।
ছোট এন মানগুলি দ্রুত প্রবণতা ধারণ করে তবে হুইপসাউয়ের জন্য আরও সংবেদনশীল।
ফিক্সড লাভ এবং স্টপ লস পয়েন্ট লাভ এবং নিয়ন্ত্রণ ঝুঁকিতে লক।
বিপরীতমুখী মোমবাতি প্রদর্শিত হলে অবস্থান বন্ধ করুন।
এই কৌশলটির সুবিধাঃ
সরাসরি প্রবণতা বিচার করার জন্য সহজ মোমবাতি গণনা। বাস্তবায়ন করা সহজ।
প্রবণতা-সহ এন্ট্রিগুলি ধারণ করে প্রবণতা ভালভাবে চলে।
স্থির স্টপগুলি কার্যকরভাবে ঝুঁকি পরিচালনা করে।
সামঞ্জস্যযোগ্য পরামিতি বিভিন্ন বাজারের পরিবেশের জন্য উপযুক্ত।
সহজ যুক্তি অপ্টিমাইজেশানকে সহজ করে তোলে।
এছাড়াও বিবেচনা করার মতো ঝুঁকি রয়েছেঃ
গণনা বিভিন্ন বাজারে বিভ্রান্তিকর হতে পারে।
স্থির স্টপগুলি লাভের সম্ভাবনাকে সীমাবদ্ধ করতে পারে।
অকাল থামার কারণ হচ্ছে খারাপ বিচার।
পরামিতি এবং আকার যথাযথভাবে সামঞ্জস্য করুন।
গণনার পরামিতিগুলি সতর্কতার সাথে মূল্যায়ন করা উচিত।
এই কৌশলটি মোমবাতি গণনা এবং প্রবণতা অনুসরণকে একত্রিত করে। যথাযথ সুরের সাথে, এটি শালীন ফলাফল দিতে পারে। তবে ব্যবসায়ীদের বাজারের যত্ন সহকারে মূল্যায়ন করা উচিত এবং দীর্ঘমেয়াদী মুনাফার জন্য পরামিতিগুলি সামঞ্জস্য করা উচিত।
/*backtest start: 2023-08-16 00:00:00 end: 2023-09-15 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //@author=Daveatt StrategyName = "BEST Candle Meter Strategy" ShortStrategyName = "BEST Candle Meter Strategy" // strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true, // pyramiding=0, default_qty_value=100, precision=7, currency=currency.USD, // commission_value=0.2,commission_type=strategy.commission.percent, initial_capital=10000) /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// INPUTS /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // TD Sequential approach would be setting bar_counter == 9 bar_counter = input(5, "Bar Counter",minval=1, step=1) // if based on same candle GreenCandle = close > open RedCandle = close < open // if based on previous candle open GreenPrevCandle = close > open[1] RedPrevCandle = close < open[1] // conditons barUP = GreenCandle barDN = RedCandle /////////////////////////////////////////////////////////////////////////////// ////////////////////////////// COUNTERS /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// var barsFromUp = 0 var barsFromDn = 0 barsFromUp := barUP ? barsFromUp + 1 : 0 barsFromDn := barDN ? barsFromDn + 1 : 0 /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// PLOTS /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// plot_color = barsFromUp > 0 ? color.lime : color.red //plot(barsFromUp, title="UP Histogram", color=plot_color, style=plot.style_histogram, linewidth=4) //plot(barsFromDn, title="DN Histogram", color=plot_color, style=plot.style_histogram, linewidth=4) /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// HLINE /////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// //hline(9, '9 TD Sequential Line', linestyle=hline.style_solid, linewidth=2, color=color.black) //hline(13, '12 TD Sequential Line', linestyle=hline.style_solid, linewidth=3, color=color.purple) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////// PLOTCHAR ////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // var _lbl_UP = label(na) // if barsFromUp > 0 // _lbl_UP := label.new(bar_index, close, tostring(barsFromUp, '#'), textcolor=color.green, style=label.style_none, yloc=yloc.price, xloc=xloc.bar_index, size=size.normal) // var _lbl_DN = label(na) // if barsFromDn > 0 // _lbl_DN := label.new(bar_index, close, tostring(barsFromDn, '#'), textcolor=color.red, style=label.style_none, yloc=yloc.price, xloc=xloc.bar_index, size=size.normal) //plotshape(barsFromUp > 0, "", shape.arrowup, location.abovebar, color.green, text="A") /////////////////////////////////////////////////////////////////////////////// /////////////////////////////// ALERTS //////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // alertcondition(barsFromUp == 9, title='🔔Sell 9 Alert🔔', message="Sell 9 Alert") // alertcondition(barsFromDn == 9, title='🔔Buy 9 Alert🔔', message='Buy 9 Alert') // alertcondition(barsFromUp > 9, title='🔔Sell > 9 Alert🔔', message="Sell > 9 Alert") // alertcondition(barsFromDn > 9, title='🔔Buy > 9 Alert🔔', message='Buy > 9 Alert') /////////////////////////////////////////////// //* Backtesting Period Selector | Component *// /////////////////////////////////////////////// StartYear = input(2017, "Backtest Start Year",minval=1980) StartMonth = input(1, "Backtest Start Month",minval=1,maxval=12) StartDay = input(1, "Backtest Start Day",minval=1,maxval=31) testPeriodStart = timestamp(StartYear,StartMonth,StartDay,0,0) StopYear = input(2020, "Backtest Stop Year",minval=1980) StopMonth = input(12, "Backtest Stop Month",minval=1,maxval=12) StopDay = input(31, "Backtest Stop Day",minval=1,maxval=31) testPeriodStop = timestamp(StopYear,StopMonth,StopDay,0,0) testPeriod() => true isLong = barsFromUp == bar_counter isShort = barsFromDn == bar_counter long_entry_price = valuewhen(isLong, close, 0) short_entry_price = valuewhen(isShort, close, 0) sinceNUP = barssince(isLong) sinceNDN = barssince(isShort) buy_trend = sinceNDN > sinceNUP sell_trend = sinceNDN < sinceNUP ////////////////////////// //* Profit Component *// ////////////////////////// //////////////////////////// MinTick /////////////////////////// fx_pips_value = syminfo.type == "forex" ? syminfo.mintick*10 : 1 input_tp_pips = input(60, "Backtest Profit Goal (in USD)",minval=0)*fx_pips_value input_sl_pips = input(30, "Backtest STOP Goal (in USD)",minval=0)*fx_pips_value tp = buy_trend? long_entry_price + input_tp_pips : short_entry_price - input_tp_pips sl = buy_trend? long_entry_price - input_sl_pips : short_entry_price + input_sl_pips plot_tp = buy_trend and high[1] <= tp ? tp : sell_trend and low[1] <= tp ? tp : na plot_sl = buy_trend and low[1] >= sl ? sl : sell_trend and high[1] >= sl ? sl : na plot(plot_tp, title="TP", style=plot.style_circles, linewidth=3, color=color.blue) plot(plot_sl, title="SL", style=plot.style_circles, linewidth=3, color=color.red) longClose = isShort shortClose = isLong if testPeriod() strategy.entry("Long", 1, when=isLong) strategy.close("Long", when=longClose ) strategy.exit("XL","Long", limit=tp, when=buy_trend, stop=sl) if testPeriod() strategy.entry("Short", 0, when=isShort) strategy.close("Short", when=shortClose ) strategy.exit("XS","Short", when=sell_trend, limit=tp, stop=sl)