
হাই-ফ্রিকোয়েন্সি প্রাইস রিডিশন কপি-ডাউন কৌশল একটি প্রযুক্তিগত সূচক-ভিত্তিক পরিমাণগত ট্রেডিং সিস্টেম যা দামের রিডিশনের জন্য বিশেষভাবে বুল মার্কেটের পরিবেশে ট্রেডিংয়ের সুযোগ দেয়। এই কৌশলটি 2020 সালে প্রকাশিত Coinrule এর “Buy The Dips in Bull Market” কৌশলটির একটি সম্পূর্ণ অপ্টিমাইজেশন এবং পুনর্লিখন, পাইন স্ক্রিপ্ট v6 ব্যবহার করে পুনর্গঠন করা হয়েছে। বিটকয়েনের দুই বছরেরও বেশি সময় ধরে ঘন্টা-স্তরের ডেটা গভীরভাবে বিশ্লেষণ করে, অপ্টিমাইজড সংস্করণটি মূল কৌশলটির তুলনায় 312.6% অতিরিক্ত আয় প্রদান করে এবং 74.8% সাফল্য অর্জন করে।
মূল মানসিকতা: এই কৌশলটি একটি বুল মার্কেটের পরিস্থিতিতে অস্থায়ী মূল্য পুনর্নির্ধারণকে কাজে লাগায়, যখন RSI সূচকটি oversold দেখায় এবং বাজার কাঠামো এখনও bullish থাকে তখন বেশি পরিমাণে প্রবেশ করে এবং যখন দামগুলি মূল চলমান গড়ের উপরে ফিরে আসে তখন বেরিয়ে যায়।
এই কৌশলটি একাধিক শর্তযুক্ত বিচার ব্যবস্থার সাথে সম্পর্কিত, যার মধ্যে প্রধানত নিম্নলিখিত মূল যুক্তি রয়েছেঃ
ইনপুট যুক্তি: একটি কৌশল যখন নিম্নলিখিত সমস্ত শর্ত পূরণ করে তখন এটি একটি মাল্টিপ্লেয়ার পজিশনে প্রবেশ করেঃ
প্রস্থান লজিক: যখন নিম্নলিখিত দুটি শর্ত পূরণ হয়, তখন কৌশলটি সমতল হয়ঃ
বিকল্প খালি মাথা লেনদেন: যখন এটি চালু করা হয়, কৌশলটি বিপরীত লজিক ব্যবহার করে ফাঁকা ট্রেডিং করতে পারেঃ
ঝুঁকি ব্যবস্থাপনা: এই কৌশলটি ATR-এর উপর ভিত্তি করে স্টপ/স্টপ সেটিং ব্যবহার করে, ঝুঁকি স্তরকে গতিশীলভাবে নির্ধারণ করার জন্য উর্ধ্বগতি ব্যবহার করে। ডিফল্টরূপে একটি 2: 1 ঝুঁকি-ফেরত অনুপাত ব্যবহার করা হয় এবং সম্পূর্ণ কাস্টমাইজযোগ্য বিকল্প সরবরাহ করা হয়। এছাড়াও, একটি নির্দিষ্ট শতাংশের উপর ভিত্তি করে ঝুঁকি ব্যবস্থাপনা বিকল্প সরবরাহ করা হয়।
উচ্চ সাফল্যের হার: অপ্টিমাইজড প্যারামিটার সেটিং দিয়ে, কৌশলটি 74.8% এর একটি উচ্চ সাফল্য অর্জন করেছে, যা একটি পরিমাণগত ট্রেডিং কৌশলগুলির মধ্যে একটি খুব উল্লেখযোগ্য মান। উচ্চ সাফল্যটি তহবিলের বক্ররেখা আরও মসৃণ করে তোলে এবং মানসিক চাপ কমাতে সহায়তা করে।
গতিশীল ঝুঁকি ব্যবস্থাপনা: কৌশলটি এটিআর-ভিত্তিক স্টপ অ্যান্ড স্টপ মেকানিজম ব্যবহার করে, যা বাজারের অস্থিরতার সাথে স্বয়ংক্রিয়ভাবে ঝুঁকি স্তরকে সামঞ্জস্য করতে পারে। এই পদ্ধতিটি স্থির শতাংশের চেয়ে আরও বৈজ্ঞানিক এবং বিভিন্ন ওঠানামার পরিবেশে ধারাবাহিক ঝুঁকি নিয়ন্ত্রণ বজায় রাখতে পারে।
অপ্টিমাইজড প্যারামিটার সমন্বয়:
দ্বিপাক্ষিক লেনদেনের ক্ষমতা: কৌশলটি একটি একক দিকের লেনদেনের পরিবর্তে বিভিন্ন বাজার পরিবেশে অভিযোজিত করার জন্য একটি ঐচ্ছিক ফাঁকা ট্রেডিং ফাংশন সরবরাহ করে।
সম্পূর্ণ দৃশ্যমানতা: কৌশলটি উন্নত চার্ট ম্যাপিং বৈশিষ্ট্য সরবরাহ করে, যার মধ্যে রয়েছে ঝুঁকি স্তরের প্রদর্শন, যা ব্যবসায়ীদের ট্রেডিং লজিক এবং ঝুঁকি পরিচালনার ক্ষেত্রে সহায়তা করে।
ষাঁড়ের বাজার নির্ভরতা: এই কৌশলটি বিশেষভাবে বুল মার্কেটের অবস্থার জন্য ডিজাইন করা হয়েছে এবং দীর্ঘমেয়াদী ভাল বাজার পরিবেশে পারফরম্যান্স উল্লেখযোগ্যভাবে হ্রাস পেতে পারে। প্রবণতা অনিশ্চিত বা ক্রস-ব্রিজ বাজারে কৌশলটি প্রায়শই মিথ্যা সংকেত তৈরি করতে পারে।
প্রবণতা অনুসরণ বৈশিষ্ট্য: একটি প্রবণতা অনুসরণকারী কৌশল হিসাবে, একটি শক্তিশালী প্রবণতা বিপরীতের সময় একটি বড় প্রত্যাহারের অভিজ্ঞতা হতে পারে। বিশেষত যখন বাজার একটি বুল বাজার থেকে একটি ভাল বাজারে দ্রুত স্থানান্তরিত হয়, কৌশলটি সময়মত সামঞ্জস্য করতে পারে না।
উচ্চ ফ্রিকোয়েন্সি ট্রেডিং চ্যালেঞ্জ: কৌশলগুলি একাধিক সংকেত উত্পন্ন করে এবং সক্রিয়ভাবে পর্যবেক্ষণের প্রয়োজন হয়, যা লেনদেনের ব্যয় এবং অপারেশনাল জটিলতা বাড়িয়ে তুলতে পারে। উচ্চ-ফ্রিকোয়েন্সি লেনদেনের ফলে স্লাইড পয়েন্ট এবং ফি বৃদ্ধি হতে পারে যা প্রকৃত উপার্জনকে প্রভাবিত করে।
পরামিতি সংবেদনশীলতা: কৌশলগত কর্মক্ষমতা প্যারামিটার সেটিংয়ের জন্য সংবেদনশীল, বিভিন্ন বাজার এবং সময় ফ্রেমগুলির জন্য বিভিন্ন প্যারামিটার অপ্টিমাইজেশনের প্রয়োজন হতে পারে। ভুল প্যারামিটার নির্বাচন অতিরিক্ত ফিট বা সংকেতের মান হ্রাস করতে পারে।
ঝুঁকি ব্যবস্থাপনার সীমাবদ্ধতা: যদিও এটিআর ঝুঁকি ব্যবস্থাপনা একটি শ্রেষ্ঠত্বপূর্ণ পদ্ধতি, কিন্তু চরম বাজার পরিস্থিতিতে (যেমন ফ্ল্যাশ বা উড়ন্ত) স্টপ লসগুলি প্রত্যাশিত মূল্যে কার্যকর হতে পারে না, যার ফলে প্রকৃত ক্ষতির পরিমাণ প্রত্যাশিতের চেয়ে বেশি হয়।
অভিযোজনযোগ্যতা প্যারামিটার সমন্বয়: একটি স্বনির্ধারিত প্যারামিটার সিস্টেম বিবেচনা করা যেতে পারে যা বাজারের অস্থিরতা এবং প্রবণতা শক্তির উপর নির্ভর করে স্বয়ংক্রিয়ভাবে আরএসআই থ্রেশহোল্ড এবং মুভিং এভারেজ চক্রের সমন্বয় করে। উদাহরণস্বরূপ, একটি উচ্চ অস্থির পরিবেশে একটি নিম্ন আরএসআই থ্রেশহোল্ড এবং একটি দীর্ঘতর মুভিং এভারেজ চক্র ব্যবহার করে মিথ্যা সংকেত কমাতে।
বাজার অবস্থা শ্রেণীবিভাগ: বাজারের অবস্থা সনাক্ত করার জন্য আরও জটিল অ্যালগরিদম যুক্ত করা হয়েছে, একটি সুস্পষ্ট গরুর বাজার, একটি ভাল বাজার এবং একটি ক্রসওভার বাজার, এবং বিভিন্ন বাজারের অবস্থার জন্য বিভিন্ন ট্রেডিং লজিক ব্যবহার করা হয়েছে। ট্রেন্ডের শক্তি পরিমাপ করার জন্য অতিরিক্ত সূচক যেমন ADX ((গড় দিকনির্দেশক সূচক) চালু করা যেতে পারে।
মেশিন লার্নিং অপ্টিমাইজেশন: মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে স্বয়ংক্রিয়ভাবে সর্বোত্তম প্যারামিটার সংমিশ্রণ সনাক্ত করা যায় এবং এমনকি একটি গতিশীল পূর্বাভাস মডেল তৈরি করা যায় যাতে সংকেতের গুণমান উন্নত করা যায়। এটি ঐতিহাসিক তথ্য প্রশিক্ষণের মাধ্যমে করা যেতে পারে এবং বাজারের পরিবর্তনের সাথে সামঞ্জস্য রেখে নিয়মিত পুনরায় প্রশিক্ষণ দেওয়া যেতে পারে।
মাল্টি টাইম ফ্রেম নিশ্চিতকরণ: মাল্টি টাইম ফ্রেম বিশ্লেষণ যোগ করা হয়েছে যাতে নিশ্চিত করা যায় যে প্রবেশের সংকেতগুলি একই সাথে বৃহত্তর টাইম ফ্রেম প্রবণতা দ্বারা সমর্থিত। এটি একাধিক সময়কালের চলমান গড় সারি এবং আরএসআই পাঠ্য পরীক্ষা করে করা যেতে পারে, যার ফলে মিথ্যা সংকেত হ্রাস করা যায়।
অস্থিরতা ফিল্টার: উর্ধ্বমুখীতা ফিল্টারিং ব্যবস্থা বাড়ানো, অত্যন্ত উর্ধ্বমুখী পরিবেশে লেনদেন স্থগিত করা বা ঝুঁকি পরামিতিগুলি সামঞ্জস্য করা। এটিআর এর ঐতিহাসিক শতাংশগুলি উর্ধ্বমুখীতার পরিমাপের পরিমাপ হিসাবে ব্যবহার করা যেতে পারে, যখন উর্ধ্বমুখীতা নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করে তখন আরও রক্ষণশীল ট্রেডিং কৌশল গ্রহণ করা যেতে পারে।
তহবিল ব্যবস্থাপনা অপ্টিমাইজেশন: একটি উন্নত তহবিল ব্যবস্থাপনা সিস্টেম বাস্তবায়ন করুন, অ্যাকাউন্টের আকার, সাম্প্রতিক কৌশলগত কর্মক্ষমতা এবং বাজারের অবস্থার গতিশীলতার উপর ভিত্তি করে অবস্থানের আকারকে সামঞ্জস্য করুন। উদাহরণস্বরূপ, ধারাবাহিকভাবে লাভের পরে ধীরে ধীরে অবস্থান বাড়ান এবং ধারাবাহিকভাবে ক্ষতির পরে অবস্থান হ্রাস করুন।
হাই-ফ্রিকোয়েন্সি প্রাইস রিটার্ন স্ক্রিপ্টিং কৌশল একটি পরিমাণগত ট্রেডিং সিস্টেম যা বিশেষভাবে বুল মার্কেটের পরিবেশের জন্য ডিজাইন করা হয়েছে যাতে ওভারসোল্ড শর্তগুলি সনাক্ত করে এবং মুভিং এভারেজ ট্রেন্ড নিশ্চিতকরণের সাথে দামের রিটার্নের সুযোগগুলি ধরা যায়। মূল সংস্করণের তুলনায়, কৌশলটি প্যারামিটার অপ্টিমাইজড এবং বর্ধিত ঝুঁকি ব্যবস্থাপনার মাধ্যমে উল্লেখযোগ্যভাবে উন্নত হয়েছে, যা 312.6% অতিরিক্ত আয় এবং 74.8% জয়লাভ করেছে।
এই কৌশলটির মূল সুবিধা হ’ল এর গতিশীল ঝুঁকি ব্যবস্থাপনা ব্যবস্থা এবং উচ্চ বিজয় হার যা এটিকে একটি ষাঁড়ের বাজারের পরিবেশে দুর্দান্ত করে তোলে। যাইহোক, কৌশলটি বাজারের পরিবেশের উপর নির্ভরশীল এবং প্রবণতা বিপরীত হওয়ার সময় বড় প্রত্যাহারের মতো ঝুঁকি থাকতে পারে।
ভবিষ্যতে অপ্টিমাইজেশনের দিকগুলি মূলত অভিযোজনযোগ্যতা প্যারামিটার সমন্বয়, বাজার অবস্থার শ্রেণিবিন্যাস, মেশিন লার্নিং অ্যাপ্লিকেশন, মাল্টি টাইম ফ্রেম অ্যানালিসিস এবং আরও উন্নত তহবিল পরিচালনার সিস্টেমের উপর দৃষ্টি নিবদ্ধ করে। এই অপ্টিমাইজেশনের মাধ্যমে, কৌশলগুলি বিভিন্ন বাজারের পরিবেশে স্থিতিশীল পারফরম্যান্স বজায় রাখার এবং আরও বেশি স্থিতিশীলতা এবং লাভজনকতা বাড়ানোর আশা করা যায়।
যাই হোক না কেন অপ্টিমাইজেশান ব্যবস্থা গ্রহণ, ব্যবসায়ীরা বাজার ঝুঁকি বিবেচনা করা উচিত, যথেষ্ট ব্যাক-টেস্টিং যাচাই, এবং ব্যক্তিগত ঝুঁকি সহনশীলতা এবং বিনিয়োগ লক্ষ্য অনুযায়ী কৌশলগত পরামিতি এবং তহবিল বন্টন সমন্বয়।
/*backtest
start: 2025-06-13 00:00:00
end: 2025-07-13 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
// === DESCRIPTION ===
// Buy The Dips Bull Market Strategy - Optimized
// Modified strategy based on the original 2020 strategy from Coinrule
// Optimized parameters based on 2+ years of BTC hourly data analysis
// Performance improvement: 312.6% better returns with 74.8% win rate
// Enters long when RSI is oversold and we're in a bull market structure
// Exits when price recovers above fast MA and fast MA > slow MA
// Quant Trading Pro
//@version=6
strategy(title="High Freq Buy The Dips Bull Market [Quant Trading]",
shorttitle="High Freq Buy The Dips BUll Market",
overlay=true,
initial_capital=1000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.1,
slippage=3,
margin_long=0,
margin_short=0)
// === INPUT PARAMETERS ===
// RSI Settings
lengthRSI = input.int(14, "RSI Period", minval=1, maxval=50, group="📊 RSI Settings")
rsiBuySignal = input.int(45, "RSI Buy Signal", minval=20, maxval=50, group="📊 RSI Settings")
// Moving Average Settings
maFastLength = input.int(15, "Fast MA Length", minval=1, maxval=50, group="📈 Moving Averages")
maSlowLength = input.int(40, "Slow MA Length", minval=10, maxval=100, group="📈 Moving Averages")
maLongLength = input.int(150, "Long MA Length", minval=50, maxval=300, group="📈 Moving Averages")
// Trade Settings
allowShortTrades = input.bool(false, "Allow Short Trades?", group="🚫 Short Trades")
// Risk Management - ATR Based
enableATRRisk = input.bool(true, "Enable ATR Risk Management", group="🛡️ Risk Management")
atrLength = input.int(14, "ATR Period", minval=1, maxval=50, group="🛡️ Risk Management")
atrMultiplier = input.float(2.0, "ATR Stop Loss Multiplier", minval=0.5, maxval=5.0, step=0.1, group="🛡️ Risk Management")
riskRewardRatio = input.float(2.0, "Risk Reward Ratio", minval=1.0, maxval=10.0, step=0.1, group="🛡️ Risk Management")
// Optional Percentage-based Risk Management
usePercentageRisk = input.bool(false, "Use Percentage Instead of ATR", group="🛡️ Risk Management")
stopLossPercent = input.float(5.0, "Stop Loss (%)", minval=1.0, maxval=20.0, step=0.5, group="🛡️ Risk Management")
takeProfitPercent = input.float(10.0, "Take Profit (%)", minval=2.0, maxval=50.0, step=0.5, group="🛡️ Risk Management")
// === 1️⃣ CALCULATIONS ===
// RSI Calculation
rsiValue = ta.rsi(close, lengthRSI)
// Moving Averages
maFast = ta.sma(close, maFastLength)
maSlow = ta.sma(close, maSlowLength)
maLong = ta.sma(close, maLongLength)
// ATR Calculation for Risk Management
atrValue = ta.atr(atrLength)
// === 2️⃣ ENTRY & EXIT LOGIC ===
// Long Entry Conditions
rsiOversold = rsiValue < rsiBuySignal
bullMarketStructure = maLong < maSlow // Long MA below slow MA indicates bullish structure
longCondition = rsiOversold and bullMarketStructure
// Long Exit Conditions
priceRecovery = close > maFast
maAlignment = maFast > maSlow
longExitCondition = priceRecovery and maAlignment
// Short Entry Conditions (reverse logic)
rsiOverbought = rsiValue > (100 - rsiBuySignal) // If RSI buy signal is 35, short when RSI > 65
bearMarketStructure = maLong > maSlow // Long MA above slow MA indicates bearish structure
shortCondition = rsiOverbought and bearMarketStructure and allowShortTrades
// Short Exit Conditions (reverse logic)
priceDecline = close < maFast
maAlignmentBear = maFast < maSlow
shortExitCondition = priceDecline and maAlignmentBear and allowShortTrades
// === 3️⃣ TRADE EXECUTIONS ===
// Long Trades
if longCondition
strategy.entry("Long", strategy.long)
// Long Exits
if longExitCondition
strategy.close("Long")
// Short Trades (if enabled)
if shortCondition
strategy.entry("Short", strategy.short)
// Short Exits
if shortExitCondition
strategy.close("Short")
// ATR-Based Risk Management (if enabled)
if enableATRRisk and not usePercentageRisk
// Calculate ATR-based stop loss and take profit levels
longStopLoss = close - (atrValue * atrMultiplier)
longTakeProfit = close + (atrValue * atrMultiplier * riskRewardRatio)
shortStopLoss = close + (atrValue * atrMultiplier)
shortTakeProfit = close - (atrValue * atrMultiplier * riskRewardRatio)
// Long position risk management
strategy.exit("Long Exit", from_entry="Long",
stop=longStopLoss,
limit=longTakeProfit)
// Short position risk management
if allowShortTrades
strategy.exit("Short Exit", from_entry="Short",
stop=shortStopLoss,
limit=shortTakeProfit)
// Percentage-Based Risk Management (Alternative)
else if enableATRRisk and usePercentageRisk
strategy.exit("Long Exit", from_entry="Long",
stop=strategy.position_avg_price * (1 - stopLossPercent / 100),
limit=strategy.position_avg_price * (1 + takeProfitPercent / 100))
if allowShortTrades
strategy.exit("Short Exit", from_entry="Short",
stop=strategy.position_avg_price * (1 + stopLossPercent / 100),
limit=strategy.position_avg_price * (1 - takeProfitPercent / 100))
// === 4️⃣ VISUALIZATIONS ===
// Moving Averages - ensure they're properly connected to price data
plot(maFast, "Fast MA", color=color.new(color.purple, 0), linewidth=2, display=display.all)
plot(maSlow, "Slow MA", color=color.new(color.orange, 0), linewidth=2, display=display.all)
plot(maLong, "Long MA", color=color.new(color.blue, 0), linewidth=3, display=display.all)
// Entry/Exit Signals - ensure they're anchored to bars
//plotshape(longCondition, title="Long Entry", location=location.belowbar,
// color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
//plotshape(longExitCondition, title="Long Exit", location=location.abovebar,
// color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
// Short signals (if enabled)
//plotshape(shortCondition, title="Short Entry", location=location.abovebar,
// color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
//plotshape(shortExitCondition, title="Short Exit", location=location.belowbar,
// color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
// Risk Management Visualization
var float longSL = na
var float longTP = na
var float shortSL = na
var float shortTP = na
// Set risk levels only when entering new positions
if longCondition and enableATRRisk
if not usePercentageRisk
longSL := close - (atrValue * atrMultiplier)
longTP := close + (atrValue * atrMultiplier * riskRewardRatio)
else
longSL := close * (1 - stopLossPercent / 100)
longTP := close * (1 + takeProfitPercent / 100)
if shortCondition and enableATRRisk
if not usePercentageRisk
shortSL := close + (atrValue * atrMultiplier)
shortTP := close - (atrValue * atrMultiplier * riskRewardRatio)
else
shortSL := close * (1 + stopLossPercent / 100)
shortTP := close * (1 - takeProfitPercent / 100)
// Clear levels when positions are closed
if strategy.position_size == 0
longSL := na
longTP := na
shortSL := na
shortTP := na
// Plot risk levels only when in position
plot(strategy.position_size > 0 ? longSL : na, "Long Stop Loss", color=color.new(color.red, 0), style=plot.style_linebr, linewidth=2)
plot(strategy.position_size > 0 ? longTP : na, "Long Take Profit", color=color.new(color.green, 0), style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? shortSL : na, "Short Stop Loss", color=color.new(color.red, 50), style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? shortTP : na, "Short Take Profit", color=color.new(color.green, 50), style=plot.style_linebr, linewidth=2)