রিসোর্স লোড হচ্ছে... লোডিং...

বোলিংজার ব্যান্ড এবং ক্যান্ডেলস্টিক প্যাটার্নের উপর ভিত্তি করে গতিশীল অস্থিরতা ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৪-১১-২৯ 16:29:01
ট্যাগঃবি বিএসএমএএটিআরআরএসআইROCএমটিএফ

img

সারসংক্ষেপ

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

কৌশলগত নীতি

কৌশলটি ২.০ এর মান বিচ্যুতি গুণক সহ প্রাথমিক প্রযুক্তিগত সূচক হিসাবে ২০ পেরিওড বোলিঞ্জার ব্যান্ড ব্যবহার করে। মোমবাতি ছায়া এবং দেহের মধ্যে অনুপাত গণনা করে, এই অনুপাতটি একটি সেট থ্রেশহোল্ড (ডিফল্ট ১.০) অতিক্রম করলে এবং দাম বোলিঞ্জার ব্যান্ডের সীমানা স্পর্শ করলে সিস্টেমটি ট্রেডিং সংকেত উত্পন্ন করে। প্রবেশের সময়টি নমনীয়ভাবে দৈনিক বন্ধ, পরের দিন খোলা, দৈনিক উচ্চ, বা কম সময়ে বেছে নেওয়া যেতে পারে। কৌশলটিতে অ্যাকাউন্ট ব্যালেন্সের উপর ভিত্তি করে একটি ঝুঁকি ব্যবস্থাপনা সিস্টেম অন্তর্ভুক্ত রয়েছে, গতিশীল অবস্থানের আকারের মাধ্যমে ঝুঁকি নিয়ন্ত্রণ করে। স্টপ-লস সাম্প্রতিক সুইং উচ্চ বা নিম্ন স্তরে সেট করা হয়, বিপরীত বোলিঞ্জার ব্যান্ডে লাভের লক্ষ্যমাত্রা নিয়ে।

কৌশলগত সুবিধা

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

কৌশলগত ঝুঁকি

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

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

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

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

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


/*backtest
start: 2023-11-29 00:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trade Entry Detector, based on Wick to Body Ratio when price tests Bollinger Bands", overlay=true, default_qty_type=strategy.fixed)

// Input for primary analysis time frame
timeFrame = "D"  // Daily time frame

// Bollinger Band settings
length = input.int(20, title="Bollinger Band Length", minval=1)
mult = input.float(2.0, title="Standard Deviation Multiplier", minval=0.1)
source = input(close, title="Source")

// Entry ratio settings
wickToBodyRatio = input.float(1.0, title="Minimum Wick-to-Body Ratio", minval=0)

// Order Fill Timing Option
fillOption = input.string("Daily Close", title="Order Fill Timing", options=["Daily Close", "Daily Open", "HOD", "LOD"])

// Account and risk settings
accountBalance = 100000  // Account balance in dollars
riskPercentage = 1.0     // Risk percentage per trade
riskAmount = (riskPercentage / 100) * accountBalance // Fixed 1% risk amount

// Request daily data for calculations
dailyHigh = request.security(syminfo.tickerid, timeFrame, high)
dailyLow = request.security(syminfo.tickerid, timeFrame, low)
dailyClose = request.security(syminfo.tickerid, timeFrame, close)
dailyOpen = request.security(syminfo.tickerid, timeFrame, open)

// Calculate Bollinger Bands on the daily time frame
dailyBasis = request.security(syminfo.tickerid, timeFrame, ta.sma(source, length))
dailyDev = mult * request.security(syminfo.tickerid, timeFrame, ta.stdev(source, length))
dailyUpperBand = dailyBasis + dailyDev
dailyLowerBand = dailyBasis - dailyDev

// Calculate the body and wick sizes on the daily time frame
dailyBodySize = math.abs(dailyOpen - dailyClose)
dailyUpperWickSize = dailyHigh - math.max(dailyOpen, dailyClose)
dailyLowerWickSize = math.min(dailyOpen, dailyClose) - dailyLow

// Conditions for a candle with an upper wick or lower wick that touches the Bollinger Bands
upperWickCondition = (dailyUpperWickSize / dailyBodySize >= wickToBodyRatio) and (dailyHigh > dailyUpperBand)
lowerWickCondition = (dailyLowerWickSize / dailyBodySize >= wickToBodyRatio) and (dailyLow < dailyLowerBand)

// Define the swing high and swing low for stop loss placement
var float swingLow = na
var float swingHigh = na

if (ta.pivothigh(dailyHigh, 5, 5))
    swingHigh := dailyHigh[5]

if (ta.pivotlow(dailyLow, 5, 5))
    swingLow := dailyLow[5]

// Determine entry price based on chosen fill option
var float longEntryPrice = na
var float shortEntryPrice = na

if lowerWickCondition
    longEntryPrice := fillOption == "Daily Close" ? dailyClose :
                      fillOption == "Daily Open" ? dailyOpen :
                      fillOption == "HOD" ? dailyHigh : dailyLow

if upperWickCondition
    shortEntryPrice := fillOption == "Daily Close" ? dailyClose :
                       fillOption == "Daily Open" ? dailyOpen :
                       fillOption == "HOD" ? dailyHigh : dailyLow

// Execute the long and short entries with expiration
var int longOrderExpiry = na
var int shortOrderExpiry = na

if not na(longEntryPrice)
    longOrderExpiry := bar_index + 2  // Order expires after 2 days

if not na(shortEntryPrice)
    shortOrderExpiry := bar_index + 2  // Order expires after 2 days

// Check expiration and execute orders
if (longEntryPrice and bar_index <= longOrderExpiry and high >= longEntryPrice)
    longStopDistance = close - nz(swingLow, close)
    longPositionSize = longStopDistance > 0 ? riskAmount / longStopDistance : na
    if (not na(longPositionSize))
        strategy.entry("Long", strategy.long, qty=longPositionSize)
    longEntryPrice := na  // Reset after entry

if (shortEntryPrice and bar_index <= shortOrderExpiry and low <= shortEntryPrice)
    shortStopDistance = nz(swingHigh, close) - close
    shortPositionSize = shortStopDistance > 0 ? riskAmount / shortStopDistance : na
    if (not na(shortPositionSize))
        strategy.entry("Short", strategy.short, qty=shortPositionSize)
    shortEntryPrice := na  // Reset after entry

// Exit logic: hit the opposing Bollinger Band
if (strategy.position_size > 0) // Long position
    strategy.exit("Exit Long", "Long", limit=dailyUpperBand)
else if (strategy.position_size < 0) // Short position
    strategy.exit("Exit Short", "Short", limit=dailyLowerBand)

if (strategy.position_size > 0) // Long position
    strategy.exit("Stop Loss Long", "Long", stop=swingLow)
else if (strategy.position_size < 0) // Short position
    strategy.exit("Stop Loss Short", "Short", stop=swingHigh)

// Plot daily Bollinger Bands and levels on the chosen time frame
plot(dailyUpperBand, color=color.blue, linewidth=1, title="Daily Upper Bollinger Band")
plot(dailyLowerBand, color=color.blue, linewidth=1, title="Daily Lower Bollinger Band")
plot(dailyBasis, color=color.gray, linewidth=1, title="Daily Middle Bollinger Band")


সম্পর্কিত

আরো