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


সৃষ্টির তারিখ: 2023-11-27 15:37:13 অবশেষে সংশোধন করুন: 2023-11-27 15:37:13
অনুলিপি: 0 ক্লিকের সংখ্যা: 689
1
ফোকাস
1617
অনুসারী

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

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির কেন্দ্রীয় যুক্তি হল একটি নির্দিষ্ট সময়ের মধ্যে সর্বোচ্চ এবং সর্বনিম্ন মূল্য গণনা করা (ডিফল্ট 50 K লাইন) । সর্বোচ্চ এবং সর্বনিম্ন মূল্য গণনা করার জন্য, আপনি বন্ধের মূল্য বা সর্বোচ্চ এবং সর্বনিম্ন মূল্য ব্যবহার করতে পারেন (ডিফল্ট সর্বোচ্চ এবং সর্বনিম্ন ব্যবহার করুন) । তারপরে বিচার করুন যে বর্তমান K লাইনের বন্ধের মূল্য বা সর্বোচ্চ দামটি সাম্প্রতিক নির্দিষ্ট সময়ের সর্বোচ্চ মূল্যের চেয়ে বেশি কিনা, যদি তা হয় এবং যদি একটি নির্দিষ্ট সময়ের সর্বোচ্চ মূল্য থাকে (ডিফল্ট 30 K লাইন), একটি কেনার সংকেত তৈরি করুন। একইভাবে, বিচার করুন যে বর্তমান K লাইনের বন্ধের মূল্য বা সর্বনিম্ন মূল্য সর্বশেষ নির্দিষ্ট সময়ের সর্বনিম্ন মূল্যের চেয়ে কম কিনা, এবং যদি একটি নির্দিষ্ট সময়ের সর্বনিম্ন মূল্য থাকে তবে একটি বিক্রয় সংকেত তৈরি করুন।

যখন একটি ক্রয় সংকেত উত্পন্ন হয়, তখন কৌশলটি সেই মূল্যে ক্রয় করে এবং স্টপ লস এবং স্টপ প্রস সেট করে। যখন মূল্য স্টপ লস স্পর্শ করে তখন কৌশলটি স্টপ লস এবং প্রস্থান করে; যখন মূল্য স্টপ প্রস স্পর্শ করে তখন কৌশলটি স্টপ প্রস্থান করে। বিক্রয় সংকেতের যুক্তিও অনুরূপ।

সামর্থ্য বিশ্লেষণ

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

  1. এই কৌশলগুলি সহজ, সহজেই বোঝা যায় এবং বাস্তবায়িত হয়।
  2. শেয়ারের মূল্যের প্রবণতা চিহ্নিত করতে সক্ষম হওয়া এবং মূল্যের প্রবণতা অনুসারে চলা।
  3. Finding প্যারামিটারটি পরিবর্তন করে সবচেয়ে উপযুক্ত নীতি প্যারামিটার সমন্বয় করা যেতে পারে।
  4. বিল্ট-ইন স্টপ অ্যান্ড স্টপ মেকানিজম, যা ঝুঁকি নিয়ন্ত্রণ করতে পারে।
  5. দৃশ্যমান প্রদর্শনটি প্যারামিটার সমন্বয় এবং ফলাফল বিশ্লেষণের জন্য অত্যন্ত সুবিধাজনক।

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

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

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

এই ঝুঁকিগুলি নিয়ন্ত্রণ করতে, নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ

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

অপ্টিমাইজেশান দিক

এই উচ্চ-নিম্ন-বিপ্লব পুনরুদ্ধারের কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ

  1. প্যারামিটার অপ্টিমাইজেশানঃ বিভিন্ন প্যারামিটার সমন্বয়কে আরও পদ্ধতিগতভাবে পরীক্ষা করে সর্বোত্তম প্যারামিটার খুঁজে পাওয়া যায়।

  2. অন্যান্য সূচকগুলির সাথে মিলিত একটি ফিল্টারিং সংকেত। উদাহরণস্বরূপ, একটি চলমান গড় সূচকের সাথে মিলিত হতে পারে, কেবলমাত্র যখন দাম সর্বোচ্চ মূল্য অতিক্রম করে এবং দীর্ঘমেয়াদী চলমান গড়ের উপর দীর্ঘমেয়াদী চলমান গড়কে অতিক্রম করে তখনই একটি ক্রয় সংকেত তৈরি করা হয়।

  3. শেয়ারের দামের ওঠানামার ফ্রিকোয়েন্সি বিবেচনা করুন। উদাহরণস্বরূপ, এটিআর সূচকটি সংযুক্ত করা যেতে পারে, যখন শেয়ারের দামের ওঠানামার পরিমাণ বাড়বে, তখন বিপর্যয়ের মাত্রা যথাযথভাবে প্রশস্ত করা যায়।

  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)