উচ্চ নিম্ন ব্রেকার ব্যাকটেস্ট কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১১-২৭ 15:37:13
ট্যাগঃ

img

সারসংক্ষেপ

হাই লো ব্রেকার ব্যাকটেস্ট কৌশল হল একটি ট্রেন্ড-ফলোিং কৌশল যা একটি স্টক এর ঐতিহাসিক উচ্চ এবং নিম্ন স্তরের ব্যবহার করে নির্ধারণ করে যে দাম এই উচ্চ-নিম্ন পরিসীমা থেকে বেরিয়ে আসে কিনা। এটি একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্য গণনা করে, এবং বর্তমান সময়ের এর দাম সাম্প্রতিক সময়ের সর্বোচ্চ মূল্য অতিক্রম করার সময় কিনতে সংকেত তৈরি করে, এবং বিক্রয় সংকেত যখন মূল্য সাম্প্রতিক সময়ের মধ্যে সর্বনিম্ন মূল্যের নীচে ভঙ্গ করে। একটি প্রবণতা অনুসরণকারী কৌশল হিসাবে, এটি স্টক মূল্যের কিছু ট্রেন্ডিং বৈশিষ্ট্যগুলি ক্যাপচার করতে পারে এবং লাইভ ট্রেডিংয়ের জন্য ব্যবহারিক মূল্য রয়েছে।

কৌশলগত যুক্তি

এই কৌশলটির মূল যুক্তি হ'ল একটি নির্দিষ্ট সংখ্যক বার (ডিফল্ট 50 বার) এর উপর সর্বোচ্চ মূল্য এবং সর্বনিম্ন মূল্য গণনা করা। সর্বোচ্চ / সর্বনিম্ন দাম গণনা করার সময়, এটি বন্ধ মূল্য বা প্রকৃত উচ্চ / নিম্ন মূল্য ব্যবহার করার অনুমতি দেয় (উচ্চ / নিম্ন দাম ব্যবহার করার জন্য ডিফল্ট) । তারপরে এটি বর্তমান বারের বন্ধের মূল্য বা উচ্চ মূল্য সাম্প্রতিক সময়ের সর্বোচ্চ মূল্য অতিক্রম করে কিনা তা পরীক্ষা করে। যদি হ্যাঁ এবং এটি সর্বশেষ সর্বোচ্চ মূল্য বারের পর থেকে সর্বনিম্ন সংখ্যক বার (ডিফল্ট 30 বার) এর চেয়ে বেশি হয়েছে তবে এটি একটি ক্রয় সংকেত উত্পন্ন করে। একইভাবে, যদি বর্তমান বারের বন্ধের মূল্য বা সর্বনিম্ন মূল্য সাম্প্রতিক সময়ের সর্বনিম্ন মূল্যকে ভেঙে দেয় এবং সর্বশেষ সর্বনিম্ন মূল্যের পরে সর্বনিম্ন সংখ্যক বার অতিক্রম করে তবে এটি একটি বিক্রয় সংকেত উত্পন্ন করে।

ক্রয় সংকেত তৈরি করার পরে, কৌশলটি সেই মূল্যে দীর্ঘ অবস্থানগুলিতে প্রবেশ করে, একটি স্টপ লস মূল্য এবং লাভের মূল্য নির্ধারণ করে। এটি স্টপ লস দাম স্পর্শ করার সময় স্টপ লস দিয়ে অবস্থানটি ছেড়ে যায় এবং লাভের দাম স্পর্শ করার সময় লাভের সাথে প্রস্থান করে। বিক্রয় সংকেতের যুক্তি অনুরূপ।

সুবিধা বিশ্লেষণ

এই উচ্চ নিম্ন ব্রেকার ব্যাকটেস্ট কৌশল নিম্নলিখিত সুবিধা আছেঃ

  1. যুক্তিটি সহজ এবং বোঝা/প্রয়োগ করা সহজ।
  2. এটি শেয়ারের দামের কিছু প্রবণতা চিহ্নিত করতে পারে।
  3. সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে পেতে প্যারামিটারগুলি অপ্টিমাইজ করা যেতে পারে।
  4. বিল্ট ইন স্টপ লস এবং লভ্যাংশ গ্রহণ ঝুঁকি নিয়ন্ত্রণ করে।
  5. ভিজ্যুয়ালাইজেশনগুলি প্যারামিটার টিউনিং এবং ফলাফল বিশ্লেষণকে ব্যাপকভাবে সহজ করে তোলে।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

  1. একাধিক ফ্লিপ-ফ্লপ ট্রেড এবং ওভার-ট্রেডিংয়ের প্রবণতা।
  2. দামের ওশিলেশনের সময় ঘন ঘন পজিশন খোলা।
  3. যদি প্যারামিটারগুলি সঠিকভাবে সেট না করা হয় তবে প্রধান প্রবণতার সুযোগগুলি মিস করা।
  4. দামের ওঠানামা ও প্রবণতা বিবেচনা না করে।
  5. অন্যান্য সূচকগুলির সাথে সিগন্যালের বৈধতা নেই।

নিম্নলিখিত দিকগুলি এই ঝুঁকিগুলি হ্রাস করতে সহায়তা করতে পারেঃ

  1. স্টপ লস দূরত্ব কমাতে হোল্ডিং সময় বাড়াতে হবে।
  2. ঘন ঘন প্রবেশ এড়ানোর জন্য আরো প্রবেশের মানদণ্ড যোগ করুন।
  3. সর্বোত্তম সমন্বয় খুঁজে পেতে পরামিতি অপ্টিমাইজ করুন।
  4. অন্যান্য সূচকগুলির সাথে ফিল্টার শর্ত যুক্ত করুন।

অপ্টিমাইজেশান নির্দেশাবলী

এই কৌশল নিম্নলিখিত উপায়ে উন্নত করা যেতে পারেঃ

  1. আরো পদ্ধতিগত পরীক্ষার মাধ্যমে পরামিতি অপ্টিমাইজেশান।
  2. অন্যান্য সূচক সহ সংকেত ফিল্টার যোগ করুন যেমন চলমান গড়।
  3. বিচ্ছিন্নতা প্রান্তিককে সংশোধন করার জন্য ATR ব্যবহার করে মূল্যের অস্থিরতা বিবেচনা করুন।
  4. প্যারামিটারগুলিকে সামঞ্জস্য করার জন্য ট্রেন্ডিং বনাম দোলনকারী বাজারগুলির মধ্যে পার্থক্য করুন।
  5. পজিশনের আকার নির্ধারণের নিয়ম উন্নত করুন, যেমন উল্লেখযোগ্য ক্ষতির পর নতুন পজিশন খোলা বন্ধ করুন।

সংক্ষিপ্তসার

সংক্ষেপে, হাই লো ব্রেকার ব্যাকটেস্ট কৌশল একটি সহজ এবং ব্যবহারিক প্রবণতা অনুসরণকারী কৌশল। এটি পর্যায়ক্রমিক সর্বোচ্চ / সর্বনিম্ন মূল্যের দাম ভাঙ্গার উপর ভিত্তি করে ট্রেডিং সংকেত উত্পন্ন করে। কৌশলটির সরলতা, প্রবণতা অনুসরণ এবং পরামিতি অপ্টিমাইজযোগ্যতার মতো সুবিধা রয়েছে, তবে অতিরিক্ত ট্রেডিং এবং দোলনশীল বাজার পরিচালনা করতে অক্ষমতার মতো ঝুঁকিও রয়েছে। এর পারফরম্যান্স উন্নত করতে পরামিতি, সংকেত ফিল্টার, অবস্থান আকার ইত্যাদির চারপাশে আরও অপ্টিমাইজেশন করা যেতে পারে।


/*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)


আরো