সুপারট্রেন্ড এবং সিসিআই স্কালপিং কৌশল

লেখক:চাওঝাং, তারিখঃ ২০২৪-০২-২৬ ১০ঃ৩৯ঃ৪৯
ট্যাগঃ

img

সারসংক্ষেপ

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

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

  • দ্রুত সুপার ট্রেন্ড গণনা করতে 14 পিরিয়ড এটিআর ব্যবহার করুন, যার ফ্যাক্টর 3 এ সেট করা হয়েছে; ধীর সুপার ট্রেন্ড গণনা করতে 14 পিরিয়ড এটিআর ব্যবহার করুন, যার ফ্যাক্টর 6 এ সেট করা হয়েছে। দ্রুত সুপার ট্রেন্ড আরও সংবেদনশীল এবং স্বল্পমেয়াদী পরিবর্তনগুলি ক্যাপচার করতে পারে; ধীর সুপার ট্রেন্ড প্রধান প্রবণতার দিক নির্ধারণ করে।

  • যখন দ্রুত সুপার ট্রেন্ড মূল্যের নিচে ক্রস করে, এবং ধীর সুপার ট্রেন্ড এখনও দামের উপরে থাকে, তখন এটি লম্বা হওয়ার সম্ভাব্য বিপরীত সংকেত হিসাবে বিচার করা হয়; যখন দ্রুত সুপার ট্রেন্ড মূল্যের উপরে ক্রস করে, এবং ধীর সুপার ট্রেন্ড এখনও দামের নীচে থাকে, তখন এটি শর্ট হওয়ার সম্ভাব্য বিপরীত সংকেত হিসাবে বিচার করা হয়।

  • একই সময়ে, সিসিআই ব্যবহার করুন বাজারটি অতিরিক্ত ক্রয় বা অতিরিক্ত বিক্রি হয়েছে কিনা তা বিচার করতে। 100 এর উপরে সিসিআই একটি অতিরিক্ত ক্রয় বাজার নির্দেশ করে, যখন -100 এর নীচে একটি অতিরিক্ত বিক্রয় বাজার বোঝায়। মিথ্যা ব্রেকআউটগুলি ফিল্টার করার জন্য সিসিআই সংকেতগুলি একত্রিত করা হয়।

  • সুপার ট্রেন্ড সূচকটি যখন বাজারে অতিরিক্ত ক্রয় বা অতিরিক্ত বিক্রয় হয় তখন বিপরীতমুখী সংকেত দেওয়ার সম্ভাবনা বেশি। এটি কৌশলটির মূল যুক্তি।

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

  • ট্রেন্ড রিভার্স পয়েন্ট নির্ধারণের জন্য সুপার ট্রেন্ড এবং অতিরিক্ত ক্রয়/অতিরিক্ত বিক্রয় শর্তগুলি বিচার করার জন্য সিসিআই একত্রিত করা মিথ্যা ব্রেকআউটগুলি কার্যকরভাবে ফিল্টার করতে পারে এবং সংকেতের গুণমান উন্নত করতে পারে।

  • দ্রুত এবং ধীর গতির সুপার ট্রেন্ড ক্রসওভারগুলি উচ্চ-ফ্রিকোয়েন্সি প্রবেশ এবং প্রস্থান অর্জনের জন্য ট্রেডিং সংকেত গঠন করে।

  • সিসিআই প্যারামিটার এবং সুপার ট্রেন্ড প্যারামিটারগুলি নমনীয়ভাবে বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নিতে পারে।

  • কৌশল ধারণাটি পরিষ্কার এবং সহজেই বোঝা যায়, এবং পরামিতি সামঞ্জস্যও তুলনামূলকভাবে সহজ।

ঝুঁকি এবং সমাধান

  • সুপার ট্রেন্ড নিজেই একটি বিলম্বিত প্রভাব আছে, সম্ভবত প্রথম বিপরীত সুযোগ মিস। এটিআর সময়কাল সংক্ষিপ্ত করার চেষ্টা করতে পারেন।

  • সিসিআইতে কলব্যাক ঝুঁকি রয়েছে এবং অত্যধিক ওঠানামা পুনরাবৃত্তিমূলক ব্যবসায়ের কারণ হতে পারে। সিসিআই পরামিতি বাড়ানোর চেষ্টা করতে পারেন বা সীমানা সামঞ্জস্য করতে পারেন।

  • উচ্চ ফ্রিকোয়েন্সি ট্রেডিং লেনদেনের ফ্রিকোয়েন্সি এবং ট্রেডিং খরচ বাড়ানোর প্রবণতা রয়েছে। এটি হোল্ডিং সময় সামঞ্জস্য এবং খোলা / বন্ধ ফ্রিকোয়েন্সি হ্রাস করার পরামর্শ দেওয়া হয়।

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

  • সর্বোত্তম পরামিতি খুঁজে পেতে সর্বোচ্চ ড্রাউনডাউন বা মুনাফা / ক্ষতির অনুপাতের ভিত্তিতে প্যারামিটার সংমিশ্রণটি অতিক্রম এবং অনুকূলিত করা যেতে পারে।

  • মেশিন লার্নিং পদ্ধতি যেমন র্যান্ডম ফরেস্ট স্বয়ংক্রিয় প্যারামিটার অপ্টিমাইজেশান অর্জনের জন্য প্যারামিটারে বৈশিষ্ট্য নির্বাচনের জন্য ব্যবহার করা যেতে পারে।

  • ঝুঁকি নিয়ন্ত্রণের জন্য একটি নির্দিষ্ট চক্রের মধ্যে সর্বোচ্চ সংখ্যক খোলা পজিশন সীমাবদ্ধ করার বিষয়ে গবেষণা করুন।

সিদ্ধান্ত

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


/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supertrend & CCI Strategy Scalp", overlay=true)

// SuperTrend Settings
atrLength1 = input(14, "ATR Length 1")
factor1 = input(3.0, "Factor 1" )
atrLength2 = input(14, "ATR Length 2")
factor2 = input(6.0, "Factor 2")
 // Calculate SuperTrend 1
[superTrend1, direction1] = ta.supertrend(factor1, atrLength1)

// // Calculate SuperTrend 2
[superTrend2, direction2] = ta.supertrend(factor2, atrLength2)

// superTrend1 := barstate.isfirst ? na : superTrend1
// upTrend1 =    plot(direction1 < 0 ? superTrend1 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
// downTrend1 =  plot(direction1 < 0 ? na : superTrend1, "Down Trend", color = color.red,   style = plot.style_linebr)
// bodyMiddle1 = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)

// fill(bodyMiddle1, upTrend1,   color.new(color.green, 90), fillgaps = false)
// fill(bodyMiddle1, downTrend1, color.new(color.red,   90), fillgaps = false)

// superTrend2 := barstate.isfirst ? na : superTrend2
// upTrend2 =    plot(direction1 < 0 ? superTrend2 : na, "Up Trend",   color = color.green, style = plot.style_linebr)
// downTrend2 =  plot(direction1 < 0 ? na : superTrend2, "Down Trend", color = color.red,   style = plot.style_linebr)
// bodyMiddle2 = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle",display = display.none)

// fill(bodyMiddle2, upTrend2,   color.new(color.green, 90), fillgaps = false)
// fill(bodyMiddle2, downTrend2, color.new(color.red,   90), fillgaps = false)
// CCI Settings
//cciLength = input.int(14, title="CCI Length")
cciLevel = input.int(100, title="CCI Level")

// Calculate CCI
length = input.int(20, minval=1)
src = input(hlc3, title="Source")
ma = ta.sma(src, length)
cci = (src - ma) / (0.015 * ta.dev(src, length))
//plot(cci, "CCI", color=#2962FF)
//band1 = hline(100, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
//hline(0, "Middle Band", color=color.new(#787B86, 50))
//band0 = hline(-100, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
//fill(band1, band0, color=color.rgb(33, 150, 243, 90), title="Background")

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(cci, smoothingLength, typeMA)
//plot(smoothingLine, title="Smoothing Line", color=#f37f20, display=display.none)


// Entry conditions
longCondition = superTrend1 > close and superTrend2 < close and smoothingLine < -100
shortCondition = superTrend1 < close and superTrend2 > close and smoothingLine > 100

/// Initialize variables to track trade direction
var bool isLong = na
var bool isShort = na

// Strategy entry and exit
if (longCondition)
    strategy.entry("Long", strategy.long)
    isLong := true
    isShort := false
    
if (shortCondition)
    strategy.entry("Short", strategy.short)
    isShort := true
    isLong := false

// Close Long positions
if (isLong)
    strategy.close("Long", when = superTrend1 < close or superTrend2 > close or cci > 100)

// Close Short positions
if (isShort)
    strategy.close("Short", when = superTrend1 > close or superTrend2 < close or cci < -100)



// Plotting
plot(superTrend1, color=color.blue, title="SuperTrend 1")
plot(superTrend2, color=color.red, title="SuperTrend 2")
//plot(cci, color=color.orange, title="CCI")



আরো