স্প্রেজ মম্পটাম ব্রেকআউট কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-01-30 17:33:49
ট্যাগঃ

img

সারসংক্ষেপ

এটি LazyBear এর গতি সংকোচন সূচকের উপর ভিত্তি করে তৈরি একটি পরিমাণগত ট্রেডিং কৌশল। কৌশলটি একাধিক প্রযুক্তিগত সূচকের সংমিশ্রণের মাধ্যমে উচ্চ জয় হার গতির ব্রেকআউট ট্রেডিং অর্জনের জন্য বোলিংজার ব্যান্ড, কেল্টনার চ্যানেল এবং গতির সূচকগুলিকে একীভূত করে।

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

এই কৌশলটির মূল সূচক হ'ল লেজি বিয়ারের গতি সংকোচন সূচক। এই সূচকটি নির্ধারণ করে যে বোলিংজার ব্যান্ডগুলি কেল্টনার চ্যানেলগুলি দ্বারা সংকুচিত হচ্ছে কিনা। যখন সংকোচন ঘটে তখন এটি প্রতিনিধিত্ব করে যে বাজারটি একটি সম্ভাব্য প্রাদুর্ভাবের পয়েন্টে প্রবেশ করেছে। গতির সূচকের দিকটি একত্রিত করে, যখন সংকোচনটি বাজারের প্রাদুর্ভাবকে ধরতে মুক্তি পায় তখন ট্রেড করা যেতে পারে।

বিশেষত, কৌশলটি প্রথমে 21 পিরিয়ডের বোলিংজার ব্যান্ডগুলি গণনা করে, যার প্রস্থ মূল্যের 2 স্ট্যান্ডার্ড বিচ্যুতি। একই সাথে, এটি 20 পিরিয়ডের কেল্টনার চ্যানেলগুলি গণনা করে, যার প্রস্থ মূল্যের প্রস্থের 1.5 গুণ। যখন বোলিংজার ব্যান্ডগুলি কেল্টনার চ্যানেলগুলি দ্বারা সংকুচিত হয়, তখন একটি সংকোচন সংকেত সক্রিয় হয়। এছাড়াও, কৌশলটি একটি নির্দিষ্ট সময়ের মধ্যে নিজস্ব মূল্য চ্যানেলের মাঝামাঝি বিন্দুর তুলনায় মূল্যের গতিবেগও গণনা করে। যখন সংকোচন ঘটে, তখন গতির সূচকের দিকনির্দেশের সাথে মিলিয়ে এটি কেনা বা বিক্রয় কিনা তা নির্ধারণ করে।

প্রস্থানগুলির জন্য, যখন গতির সূচকটির রঙ ধূসর হয়ে যায়, তখন এটি বোঝায় যে সংকোচনের অবস্থা শেষ হয়েছে এবং প্রবণতা বিপরীত হতে পারে।

সুবিধা

  1. নির্ভুলতা উন্নত করতে একাধিক প্রযুক্তিগত সূচক একীভূত করে

এই সূচকগুলির মধ্যে সামগ্রিক সম্পর্ক বিচার করে, ট্রেডিং সিদ্ধান্তের নির্ভুলতা উন্নত করা যায় এবং ভুল ট্রেডিংয়ের সম্ভাবনা হ্রাস করা যায়।

  1. বড় লাভের সম্ভাবনা সহ সঠিক গতির সংকোচন পয়েন্ট

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

  1. ব্রেকআউট ট্রেডিংয়ের উচ্চ সাফল্যের হার অর্জন

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

ঝুঁকি

  1. অনুপযুক্ত প্যারামিটার সেটিংসের ঝুঁকি

বোলিংজার ব্যান্ড এবং কেল্টনার চ্যানেলগুলির চক্রের পরামিতি এবং ব্যান্ডউইথ পরামিতিগুলি ট্রেডিং ফলাফলের উপর ব্যাপক প্রভাব ফেলে। যদি পরামিতিগুলি অনুপযুক্তভাবে সেট করা হয় তবে ভুল বিচার ঘটতে পারে। এর জন্য প্রচুর ব্যাকটেস্টিংয়ের মাধ্যমে সর্বোত্তম পরামিতিগুলি খুঁজে পাওয়া প্রয়োজন।

  1. ব্রেকআউট ব্যর্থতার ঝুঁকি

এই কৌশল দ্বারা নির্বাচিত পয়েন্টটি ভেঙে যাওয়ার পরে দামটি পুনরায় চালু হওয়ার ঝুঁকি সর্বদা থাকে, যার ফলে ক্ষতি হয়। ক্ষতি নিয়ন্ত্রণের জন্য এটি কঠোরভাবে বন্ধ করা দরকার।

  1. প্রবণতা বিপরীত হওয়ার ঝুঁকি

যখন সংকোচনের অবস্থা শেষ হয়, তখন এই কৌশলটি সমস্ত অবস্থান বন্ধ করে দেবে। তবে কখনও কখনও দামের প্রবণতা এখনও অব্যাহত থাকতে পারে, যা অকাল প্রস্থান করার ঝুঁকি তৈরি করে। প্রস্থান যুক্তিটি অনুকূলিত করা দরকার।

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

  1. প্যারামিটার সেটিংস অপ্টিমাইজ করুন

আরও ব্যাকটেস্টিং ডেটা ট্রায়ালের মাধ্যমে, কৌশল কর্মক্ষমতা উন্নত করতে আরও ভাল চক্র এবং ব্যান্ডউইথ পরামিতি সেটিং পাওয়া যাবে।

  1. স্টপ লস কৌশল যোগ করুন

যখন দাম উল্টে যায় তখন দ্রুত ক্ষতি কমাতে চলমান বা দোলানো স্টপ সেট করুন।

  1. পুনরায় প্রবেশের শর্ত যোগ করুন

যখন কৌশলটি পজিশন থেকে বেরিয়ে আসে, ট্রেন্ড অব্যাহত থাকলে বাজারে পুনরায় প্রবেশের জন্য নির্দিষ্ট পুনরায় প্রবেশের শর্তগুলি সেট করা যেতে পারে।

  1. আরও সূচক অন্তর্ভুক্ত করুন

সিদ্ধান্তের নির্ভুলতা উন্নত করার জন্য নির্দেশক সমন্বয়ের একটি যৌগিক কৌশল প্রতিষ্ঠার জন্য বিভিন্ন ধরণের আরও সূচক অন্তর্ভুক্ত করার চেষ্টা করুন, যেমন অন্যান্য অস্থিরতা সূচক, ভলিউম সূচক ইত্যাদি।

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

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//All credits to LazyBear. All I did was turn it into a strategy!

strategy(title = "SQZMOM STRAT", overlay=false)

// --- GENERAL INPUTS ---
FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12)
FromYear  = input(defval = 2020, title = "From Year", minval = 2012)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)
FromDay   = 1
ToDay     = 1
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true

get_round(value, precision) => round(value * (pow(10, precision))) / pow(10, precision)
trade_leverage = input(1, title = "Trade - Leverage", step = 0.25)
trade_risk     = input(100, title = "Trade - Risk Percent", type = input.float, step = 0.1, minval = 0.1, maxval = 100)
tradeType   = input("LONG", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH"])

// --- SQZMOM CODE

length = input(21, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool)

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)

bcolor = color.gray
if (val > 0 and val > nz(val[1]))
    bcolor := color.green
if (val < 0 and val < nz(val[1]))
    bcolor := color.red

scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray 
plot(val, color=bcolor, style=plot.style_histogram, linewidth=4)
plot(0, color=scolor, style=plot.style_cross, linewidth=2)

// --- VWMA CODE ---
useVWMA        = input(false, title = "Use VWMA to selectively long/short?", type = input.bool)
lengthVWMA=input(42, title = "VWMA Length", step = 1, minval = 1)
useCV=input(false, type=input.bool, title="Use Cumulative Volume for VWMA?")
nbfs = useCV ? cum(volume) : sum(volume, lengthVWMA)
medianSrc=close

calc_evwma(price, lengthVWMA, nb_floating_shares) => data = (nz(close[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares)

m=calc_evwma(medianSrc, lengthVWMA, nbfs)


// ---STRATEGY---
if ((tradeType == "LONG" or tradeType == "BOTH") and (m>0 or useVWMA == false))
    longCondition = (val > 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1)
    if (longCondition)
        contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4)
        strategy.entry("LONG", strategy.long, qty = contracts, when = window())
        
if((tradeType == "SHORT" or tradeType == "BOTH") and (m<0 or useVWMA == false))
    shortCondition = (val < 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1)
    if (shortCondition)
        contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4)
        strategy.entry("SHORT", strategy.short, qty = contracts, when = window())

if (bcolor == color.gray)
    strategy.close("LONG")
    strategy.close("SHORT")

আরো