
এই কৌশলটি LazyBear এর কম্প্রেশন গতিশীলতা সূচক উপর ভিত্তি করে তৈরি করা হয়েছে, যা বুলিন বেল্ট এবং কেল্টনার চ্যানেলের সাথে মিলিত হয়, দামের বিরতি চ্যানেল তৈরির সংক্ষেপণ এবং সম্প্রসারণের মডেলগুলি সনাক্ত করে, স্টক মূল্যের সম্ভাব্য প্রবণতা দিকটি বিচার করে, অবস্থানটি খোলার দিকটি নির্ধারণের জন্য প্রবণতা-অনুসরণ পদ্ধতি ব্যবহার করে। কৌশলটির সুবিধা হ’ল সম্ভাব্য প্রবণতা সনাক্ত করার ক্ষমতা এবং ট্রেডিং সিগন্যালের গুণমান নিয়ন্ত্রণের জন্য একাধিক শর্তাধীন ফিল্টার সেট করা হয়েছে, যা অনিশ্চিত ট্রেডিং সিগন্যালগুলিকে কার্যকরভাবে ফিল্টার করতে পারে, ঝড়ের প্যাকেটে খুব ঘন ঘন ট্রেডিং এড়াতে পারে।
বুলিন বন্ডের মধ্যম, উপরের এবং নীচের রেলগুলি গণনা করুন। মধ্যম রেলটি n দিনের সমাপ্তির দামের একটি সরল চলমান গড়, এবং উপরের এবং নীচের রেলটি n দিনের সমাপ্তির দামের মানক পার্থক্যকে m গুণ করে।
কেল্টনার চ্যানেলের মধ্যম, উপরের এবং নীচের লাইনগুলি গণনা করুন। মধ্যম লাইনটি হল n দিনের ক্লোজিং মূল্যের একটি সরল চলমান গড়, এবং উপরের এবং নীচের লাইনটি হল n দিনের আসল তরঙ্গদৈর্ঘ্যের একটি সরল চলমান গড় যা m গুণিত হয়।
দামগুলি ব্রিন বন্ড এবং কেল্টনার খালের উপর থেকে নীচের ট্র্যাকটি ভেঙেছে কিনা তা বিচার করার জন্য এটি সংকোচন এবং সম্প্রসারণের ফর্ম গঠন করে। দামগুলি যখন উপরে থেকে নীচের ট্র্যাকটি ভেঙেছে তখন এটি সংকোচনের ফর্ম এবং যখন দামগুলি নীচে থেকে ট্র্যাকটি ভেঙেছে তখন এটি সম্প্রসারণের ফর্ম গঠন করে।
গতির সূচক হিসাবে লিনিয়ার রিগ্রেশন কার্ভের মান গণনা করুন। যখন গতির লাইনটি 0 অতিক্রম করে তখন এটি একটি কেনার সংকেত এবং যখন এটি 0 অতিক্রম করে তখন এটি একটি বিক্রয় সংকেত।
চূড়ান্ত ট্রেডিং সিগন্যালের বিচার করার জন্য একাধিক শর্ত যেমন কম্প্রেশন সম্প্রসারণের আকৃতি, গতিশীল সূচক দিকনির্দেশনা, গড় মান ফিল্টার ইত্যাদি। কেবলমাত্র সমস্ত শর্ত পূরণ করা হলে ট্রেডিং সিগন্যাল তৈরি হবে, ভুল লেনদেন এড়ানো হবে।
উচ্চমানের কম্প্রেশন এবং এক্সপেনশন মোডগুলি সনাক্ত করতে বুলিন-ব্যান্ড এবং কেল্টনার-চ্যানেল দ্বৈত ফিল্টার ব্যবহার করা হয়েছে।
ডায়নামিক সূচকগুলি মূল্যের প্রবণতাকে সময়মতো ধরতে সক্ষম হয়, যা চ্যানেল সূচকের সাথে পরিপূরক।
এই প্রকল্পের আওতাভুক্ত দেশগুলোতে, এই প্রকল্পের আওতাভুক্ত দেশগুলোতে,
একাধিক শর্তাদির বিচার ব্যবহার করে, ভূমিকম্পের সময় ঘন ঘন পজিশন খোলার এড়াতে।
বিভিন্ন প্রজাতি এবং প্যারামিটার সমন্বয় অনুসারে প্রযুক্তিগত সূচক প্যারামিটারগুলি কাস্টমাইজ করা যায়।
একটি নির্দিষ্ট সময়কালের জন্য অপ্টিমাইজড পরীক্ষার জন্য একটি রিটার্নিং সময়কাল সেট করতে পারেন।
ট্রেন্ড ট্র্যাকিং কৌশল, যখন ট্রেন্ড বিপরীত হয় তখন ক্ষতি হতে পারে।
প্যারামিটার সেটিং ভুল হলে ট্রেডিং ফ্রিকোয়েন্সি বা সিগন্যালের মান খারাপ হতে পারে।
ইতিহাসের উপর নির্ভর করে, ভবিষ্যতে ফিরে আসার কোনও গ্যারান্টি নেই।
মার্কেটের ঝড় এবং দামের তীব্র ওঠানামা মোকাবেলা করতে অক্ষম।
পুনরুদ্ধার সময় উইন্ডোটি ভুলভাবে সেট করা হয়েছে, যার ফলে ওভারফিট হতে পারে।
ব্রিন বেল্ট এবং কেল্টনার খালের পরামিতিগুলিকে অপ্টিমাইজ করুন এবং সর্বোত্তম সমন্বয় খুঁজে বের করুন।
একক লেনদেনের সর্বোচ্চ ক্ষতি নিয়ন্ত্রণের জন্য মোবাইল স্টপ লস যোগ করার পরীক্ষা।
নির্দিষ্ট প্রজাতি এবং সময়কালের পরামিতিগুলির সমন্বয়ে আরও অনুকূলিতকরণের চেষ্টা করুন।
মেশিন লার্নিং মডেলের সাথে যুক্ত হয়ে ট্রেন্ড রিভার্সনের অনুসন্ধান করুন।
প্রবেশের বিভিন্ন ক্রম এবং পজিশন ব্যবস্থাপনা কৌশল পরীক্ষা করা।
এই প্রবণতা পাল্টানোর সংকেতগুলি কীভাবে চিহ্নিত করা যায় এবং সময়মতো ক্ষতি বন্ধ করা যায় তা নিয়ে গবেষণা করা।
এই কৌশলটি মূল্যের প্রবণতার দিকনির্দেশের জন্য এবং প্রবণতা অনুসরণের জন্য একাধিক প্রযুক্তিগত সূচককে একত্রিত করে এবং এর শক্তিশালী অভিযোজনযোগ্যতা রয়েছে। প্যারামিটার কাস্টমাইজেশন এবং একাধিক শর্ত ফিল্টারিংয়ের মাধ্যমে, এটি কার্যকরভাবে লেনদেনের ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে পারে এবং সংকেতের গুণমান উন্নত করতে পারে। তবে বিপরীত লেনদেন এবং অপ্রত্যাশিত ঘটনাগুলি সম্পর্কে সতর্কতা অবলম্বন করা দরকার, ট্রেন্ড বিপরীত সংকেত এবং ঝুঁকি নিয়ন্ত্রণ ব্যবস্থাটি আরও দৃ strong় করার জন্য কৌশলটি আরও দৃ strongly় করার জন্য অনুসন্ধান করা যেতে পারে।
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Strategy based on LazyBear Squeeze Momentum Indicator
//I added some custom feature and filters
//
// @author LazyBear
// List of all my indicators:
// https://docs.google.com/document/d/15AGCufJZ8CIUvwFJ9W-IKns88gkWOKBCvByMEvm5MLo/edit?usp=sharing
// v2 - fixed a typo, where BB multipler was always stuck at 1.5. [Thanks @ucsgears]
//
strategy(shorttitle = "SQZMOM_LB", title="Strategy for Squeeze Momentum Indicator [LazyBear]", overlay=false, calc_on_every_tick=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)
length = input(14, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(16, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)", type=bool)
//FILTERS
useExtremeOrders = input(false, title="Early entry on momentum change", type=bool)
useMomAverage = input(false, title="Filter for Momenutum value", type=bool)
MomentumMin = input(20, title="Min for momentum")
// Calculate BB
src = close
basis = sma(src, length)
dev = mult * stdev(src, length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(src, 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(src - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)
bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : aqua
plot(val, color=bcolor, style=histogram, linewidth=4)
plot(0, color=scolor, style=cross, linewidth=2)
//LOGIC
//momentum filter
filterMom=useMomAverage?abs(val)>(MomentumMin/100000)?true:false:true
//standard condition
longCondition = scolor[1]!=aqua and scolor==aqua and bcolor==lime and filterMom
exitLongCondition = bcolor==green and not useExtremeOrders
shortCondition = scolor[1]!=aqua and scolor==aqua and bcolor==red and filterMom
exitShortCondition = bcolor==maroon and not useExtremeOrders
//early entry
extremeLong= useExtremeOrders and scolor==aqua and bcolor==maroon and bcolor[1]!=bcolor[0] and filterMom
exitExtLong = scolor==black or bcolor==red
extremeShort = useExtremeOrders and scolor==aqua and bcolor==green and bcolor[1]!=bcolor[0] and filterMom
exitExtShort = scolor==black or bcolor==lime
//STRATEGY
strategy.entry("SQ_Long", strategy.long, when = longCondition)
strategy.close("SQ_Long",when = exitLongCondition )
strategy.entry("SQ_Long_Ext", strategy.long, when = extremeLong)
strategy.close("SQ_Long_Ext",when = exitExtLong)
//strategy.exit("exit Long", "SQ_Long", when = exitLongCondition)
strategy.entry("SQ_Short", strategy.short, when = shortCondition)
strategy.close("SQ_Short",when = exitShortCondition)
strategy.entry("SQ_Short_Ext", strategy.short, when = extremeShort)
strategy.close("SQ_Short_Ext",when = exitExtShort)
//strategy.exit("exit Short", "SQ_Short", when = exitShortCondition)
// // === Backtesting Dates === thanks to Trost
// testPeriodSwitch = input(true, "Custom Backtesting Dates")
// testStartYear = input(2018, "Backtest Start Year")
// testStartMonth = input(1, "Backtest Start Month")
// testStartDay = input(1, "Backtest Start Day")
// testStartHour = input(0, "Backtest Start Hour")
// testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
// testStopYear = input(2018, "Backtest Stop Year")
// testStopMonth = input(12, "Backtest Stop Month")
// testStopDay = input(14, "Backtest Stop Day")
// testStopHour = input(23, "Backtest Stop Hour")
// testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
// testPeriod() =>
// time >= testPeriodStart and time <= testPeriodStop ? true : false
// isPeriod = testPeriodSwitch == true ? testPeriod() : true
// // === /END
// if not isPeriod
// strategy.cancel_all()
// strategy.close_all()