হাই লো ব্রেকার ব্যাকটেস্ট কৌশল হল একটি ট্রেন্ড-ফলোিং কৌশল যা একটি স্টক এর ঐতিহাসিক উচ্চ এবং নিম্ন স্তরের ব্যবহার করে নির্ধারণ করে যে দাম এই উচ্চ-নিম্ন পরিসীমা থেকে বেরিয়ে আসে কিনা। এটি একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্য গণনা করে, এবং বর্তমান সময়ের
এই কৌশলটির মূল যুক্তি হ'ল একটি নির্দিষ্ট সংখ্যক বার (ডিফল্ট 50 বার) এর উপর সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্য গণনা করা। সর্বোচ্চ / সর্বনিম্ন দাম গণনা করার সময়, এটি বন্ধ মূল্য বা প্রকৃত উচ্চ / নিম্ন মূল্য ব্যবহার করার অনুমতি দেয় (উচ্চ / নিম্ন দাম ব্যবহার করার জন্য ডিফল্ট) । তারপরে এটি বর্তমান বারের বন্ধের মূল্য বা উচ্চ মূল্য সাম্প্রতিক সময়ের সর্বোচ্চ মূল্য অতিক্রম করে কিনা তা পরীক্ষা করে। যদি হ্যাঁ এবং এটি সর্বশেষ সর্বোচ্চ মূল্য বারের পর থেকে সর্বনিম্ন সংখ্যক বার (ডিফল্ট 30 বার) এর চেয়ে বেশি হয়েছে তবে এটি একটি ক্রয় সংকেত উত্পন্ন করে। একইভাবে, যদি বর্তমান বারের বন্ধের মূল্য বা সর্বনিম্ন মূল্য সাম্প্রতিক সময়ের সর্বনিম্ন মূল্যকে ভেঙে দেয় এবং সর্বশেষ সর্বনিম্ন মূল্যের পরে সর্বনিম্ন সংখ্যক বার অতিক্রম করে তবে এটি একটি বিক্রয় সংকেত উত্পন্ন করে।
ক্রয় সংকেত তৈরি করার পরে, কৌশলটি সেই মূল্যে দীর্ঘ অবস্থানগুলিতে প্রবেশ করে, একটি স্টপ লস মূল্য এবং লাভের মূল্য নির্ধারণ করে। এটি স্টপ লস দাম স্পর্শ করার সময় স্টপ লস দিয়ে অবস্থানটি ছেড়ে যায় এবং লাভের দাম স্পর্শ করার সময় লাভের সাথে প্রস্থান করে। বিক্রয় সংকেতের যুক্তি অনুরূপ।
এই উচ্চ নিম্ন ব্রেকার ব্যাকটেস্ট কৌশল নিম্নলিখিত সুবিধা আছেঃ
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
নিম্নলিখিত দিকগুলি এই ঝুঁকিগুলি হ্রাস করতে সহায়তা করতে পারেঃ
এই কৌশল নিম্নলিখিত উপায়ে উন্নত করা যেতে পারেঃ
সংক্ষেপে, হাই লো ব্রেকার ব্যাকটেস্ট কৌশল একটি সহজ এবং ব্যবহারিক প্রবণতা অনুসরণকারী কৌশল। এটি পর্যায়ক্রমিক সর্বোচ্চ / সর্বনিম্ন মূল্যের দাম ভাঙ্গার উপর ভিত্তি করে ট্রেডিং সংকেত উত্পন্ন করে। কৌশলটির সরলতা, প্রবণতা অনুসরণ এবং পরামিতি অপ্টিমাইজযোগ্যতার মতো সুবিধা রয়েছে, তবে অতিরিক্ত ট্রেডিং এবং দোলনশীল বাজার পরিচালনা করতে অক্ষমতার মতো ঝুঁকিও রয়েছে। এর পারফরম্যান্স উন্নত করতে পরামিতি, সংকেত ফিল্টার, অবস্থান আকার ইত্যাদির চারপাশে আরও অপ্টিমাইজেশন করা যেতে পারে।
/*backtest start: 2023-11-25 00:00:00 end: 2023-11-26 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("High/Low Breaker Backtest 1.0", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, max_bars_back=700) // Strategy Settings takeProfitPercentageLong = input(.1, title='Take Profit Percentage Long', type=float)/100 stopLossPercentageLong = input(0.15, title='Stop Loss Percentage Long', type=float)/100 takeProfitPercentageShort = input(.1, title='Take Profit Percentage Short', type=float)/100 stopLossPercentageShort = input(0.15, title='Stop Loss Percentage Short', type=float)/100 candlesBack = input(title="Number of candles back", defval=50) useHighAndLows = input(true, title="Use high and lows (uncheck to use close)", defval=true) lastBarsBackMinimum = input(title="Number of candles back to ignore for last high/low", defval=30) showHighsAndLows = input(true, title="Show high/low lines", defval=true) getIndexOfLowestInSeries(series, period) => index = 0 current = series for i = 1 to period if series[i] <= current index := i current := series[i] index getIndexOfHighestInSeries(series, period) => index = 0 current = series for i = 1 to period if series[i] >= current index := i current := series[i] index indexOfHighestInRange = getIndexOfHighestInSeries(useHighAndLows ? high : close, candlesBack) indexOfLowestInRange = getIndexOfLowestInSeries(useHighAndLows ? low : close, candlesBack) max = useHighAndLows ? high[indexOfHighestInRange] : close[indexOfHighestInRange] min = useHighAndLows ? low[indexOfLowestInRange] : close[indexOfLowestInRange] barsSinceLastHigh = indexOfHighestInRange barsSinceLastLow = indexOfLowestInRange isNewHigh = (useHighAndLows ? high > max[1] : close > max[1]) and (barsSinceLastHigh[1] + 1 > lastBarsBackMinimum) isNewLow = (useHighAndLows ? low < min[1] : close < min[1]) and (barsSinceLastLow[1] + 1 > lastBarsBackMinimum) alertcondition(condition=isNewHigh, title="New High", message="Last High Broken") alertcondition(condition=isNewLow, title="New Low", message="Last Low Broken") if high > max max := high barsSinceLastHigh := 0 if low < min min := low barsSinceLastLow := 0 plot( showHighsAndLows ? max : na, color=red, style=line, title="High", linewidth=3) plot( showHighsAndLows ? min : na, color=green, style=line, title="Low", linewidth=3) // Strategy Entry/Exit Logic goLong =isNewHigh longStopLevel = strategy.position_avg_price * (1 - stopLossPercentageLong) longTakeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercentageLong) goShort = isNewLow shortStopLevel = strategy.position_avg_price * (1 + stopLossPercentageShort) shortTakeProfitLevel = strategy.position_avg_price * (1 - takeProfitPercentageShort) strategy.entry("Long", strategy.long, when=goLong) strategy.exit("Long Exit", "Long", stop=longStopLevel, limit=longTakeProfitLevel) strategy.entry("Short", strategy.short, when=goShort) strategy.exit("Short Exit", "Short", stop=shortStopLevel, limit=shortTakeProfitLevel) plot(goShort ? shortStopLevel : na, color=yellow, style=linebr, linewidth=2) plot(goShort ? shortTakeProfitLevel : na, color=blue, style=linebr, linewidth=2) plot(goLong ? longStopLevel : na, color=yellow, style=linebr, linewidth=2) plot(goLong ? longTakeProfitLevel : na, color=blue, style=linebr, linewidth=2)