
এই কৌশলটি বুলিন ব্রেডের ব্রেকডাউন ব্যবহার করে ট্রেডিং সিগন্যাল সনাক্ত করে এবং এমসিএল এবং ওয়াইজি দুটি পজিটিভ-সম্পর্কিত সম্পদের জন্য জোড়া ট্রেডিং করে। যখন এমসিএল দাম বুলিন ব্রেডকে স্পর্শ করে, তখন ওভার এমসিএল এবং ওয়াইজি বন্ধ করে দেয়। যখন এমসিএল দাম বুলিন ব্রেডকে স্পর্শ করে, তখন ওয়াইজি বন্ধ করে দেয় এবং দামের প্রবণতার জন্য ধীরগতিতে ট্রেডিং করে।
প্রথমত, এই কৌশলটি একটি নির্দিষ্ট সময়কালের মধ্যে বন্ধের দামের উপর ভিত্তি করে এসএমএ গড় এবং স্ট্যান্ডার্ড ডিভেরিয়েন্স StdDev গণনা করে। তারপরে এসএমএ গড়ের উপরে এবং নীচে একটি বিচ্যুতি যোগ করা হয়, যা ব্রিনের ব্যান্ডের উপরের ট্র্যাক এবং নীচের ট্র্যাক গঠন করে। যখন দামটি উপরের ট্র্যাকটি স্পর্শ করে তখন একটি ক্রয় সংকেত তৈরি হয় এবং যখন এটি নীচের ট্র্যাকটি স্পর্শ করে তখন একটি বিক্রয় সংকেত তৈরি হয়।
এই কৌশলটি বুলিন ব্যান্ডের ব্রেকডাউন ট্রেডিং ধারণাটি গ্রহণ করে, অর্থাৎ দামের ব্রেকডাউনের সময় বেশি দেখা যায় এবং ব্রেকডাউনের সময় খালি দেখা যায়। বুলিন ব্যান্ডটি গতিশীলভাবে চ্যানেলের প্রস্থকে সামঞ্জস্য করে বাজারের পরিবর্তনের সাথে খাপ খাইয়ে নিতে সক্ষম, কার্যকরভাবে বাজারের ঝাঁকুনির শব্দটি ফিল্টার করতে সক্ষম। স্থির চ্যানেলের বিপরীতে, বুলিন ব্যান্ডের চ্যানেলের প্রস্থ বাজার অস্থিরতার পরিবর্তনের সাথে সাথে প্রসারিত বা সঙ্কুচিত হয়। যখন অস্থিরতা বেশি থাকে, তখন বুলিন ব্যান্ডের উপর একটি বড় ফাঁক থাকে, যা আংশিক শব্দটি ফিল্টার করতে পারে। এবং যখন অস্থিরতা কম থাকে, তখন বুলিন ব্যান্ডের উপর একটি ছোট ফাঁক থাকে, যা ছোট ব্রেকডাউন সংকেতগুলি ধরতে পারে।
দুটি ইতিবাচকভাবে সম্পর্কিত সম্পদ এমসিএল এবং ওয়াইজি-র সাথে জোড়া ট্রেডিং। যখন এমসিএল ট্র্যাকের উপর দিয়ে যায়, তখন এটি নির্দেশ করে যে এমসিএল দাম একটি উচ্চতর প্রবণতাতে রয়েছে। এই সময়ে আরও এমসিএল করা হয় এবং একই সাথে ওয়াইজি খালি করা হয়, অর্থাৎ শক্তিশালী সম্পদ কেনা এবং দুর্বল সম্পদ বিক্রি করা হয় যাতে দুটি সম্পদের মূল্যের পার্থক্য থেকে লাভ করা যায়।
প্যারামিটার অপ্টিমাইজেশান, আরো প্রাসঙ্গিক, আরো তরল ট্রেডিং বিকল্প নির্বাচন, এবং যুক্তিসঙ্গত স্টপ লস অবস্থান সেট করার মাধ্যমে ঝুঁকি হ্রাস করা যেতে পারে।
সামগ্রিকভাবে, এই কৌশলটি সহজ এবং সরাসরি, প্রবণতা ক্যাপচার এবং আলফা লাভের জন্য ব্রিনের বন্ড ব্যবহার করে। তবে কিছু প্যারামিটার অপ্টিমাইজেশন, স্টপ লস এবং প্যারামিটার বিকল্পের মতো কিছু অপ্টিমাইজযোগ্য স্থান রয়েছে। বিভিন্ন প্যারামিটার, ট্রেডিং অবজেক্টের পরীক্ষা করে এবং প্রবণতা ফিল্টারিংয়ের মতো পদ্ধতিগুলি যথাযথভাবে প্রবর্তন করে আরও ভাল কৌশলগত প্রভাব অর্জন করা যায়।
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shark792
//@version=5
// 1. Define strategy settings
strategy(title="MCL-YG Pair Trading Strategy", overlay=true,
pyramiding=0, initial_capital=10000,
commission_type=strategy.commission.cash_per_order,
commission_value=4, slippage=2)
smaLength = input.int(title="SMA Length", defval=20)
stdLength = input.int(title="StdDev Length", defval=20)
ubOffset = input.float(title="Upper Band Offset", defval=1, step=0.5)
lbOffset = input.float(title="Lower Band Offset", defval=1, step=0.5)
usePosSize = input.bool(title="Use Position Sizing?", defval=true)
riskPerc = input.float(title="Risk %", defval=0.5, step=0.25)
// 2. Calculate strategy values
smaValue = ta.sma(close, smaLength)
stdDev = ta.stdev(close, stdLength)
upperBand = smaValue + (stdDev * ubOffset)
lowerBand = smaValue - (stdDev * lbOffset)
riskEquity = (riskPerc / 100) * strategy.equity
atrCurrency = (ta.atr(20) * syminfo.pointvalue)
posSize = usePosSize ? math.floor(riskEquity / atrCurrency) : 1
// 3. Output strategy data
plot(series=smaValue, title="SMA", color=color.teal)
plot(series=upperBand, title="UB", color=color.green,
linewidth=2)
plot(series=lowerBand, title="LB", color=color.red,
linewidth=2)
// 4. Determine long trading conditions
enterLong = ta.crossover(close, upperBand)
exitLong = ta.crossunder(close, smaValue)
// 5. Code short trading conditions
enterShort = ta.crossunder(close, lowerBand)
exitShort = ta.crossover(close, smaValue)
// 6. Submit entry orders
if enterLong
strategy.entry(id="EL", direction=strategy.long, qty=posSize)
if enterShort
strategy.entry(id="ES", direction=strategy.short, qty=posSize)
// 7. Submit exit orders
strategy.close(id="EL", when=exitLong)
strategy.close(id="ES", when=exitShort)