
এই কৌশলটি পোল ব্যান্ড চ্যানেলের অভ্যন্তরীণ এবং বহিরাগত তুলনা ব্যবহার করে প্রবণতা নির্ধারণ করে এবং গতিশীলতার সূচক অনুসরণ করে। এটি একটি প্রবণতা অনুসরণকারী কৌশল। এই কৌশলটি যখন চ্যানেলের অভ্যন্তরীণ ওঠানামাগুলি চ্যানেলের বাইরের তুলনায় কম থাকে তখন একটি নতুন প্রবণতা দিকের সংকেত উত্পন্ন করে এবং পজিশনটি খোলার জন্য। পজিশন স্টপ লসটি এটিআর গুণক ব্যবহার করে, স্টপগুলি এটিআর গুণকের ঝুঁকি-রিটার্ন অনুপাত।
এই কৌশলটি নিম্নলিখিত অংশগুলি নিয়ে গঠিতঃ
পোল ব্যান্ড সেটআপঃ বড় পোল ব্যান্ড দৈর্ঘ্যের 40 টি চক্র, ছোট পোল ব্যান্ড দৈর্ঘ্যের 20 টি চক্র এবং স্ট্যান্ডার্ড ডিফারেনশিয়ালের দ্বিগুণ চ্যানেলের প্রস্থ।
চ্যানেলের বিস্ফোরণ বিচারঃ যদি বড় পোল ব্যান্ডটি ছোট পোল ব্যান্ডের চেয়ে কম এবং বড় পোল ব্যান্ডটি ছোট পোল ব্যান্ডের চেয়ে বেশি হয় তবে এটি বোঝায় যে তরঙ্গটি আরও বড় হয়ে যায় এবং একটি নতুন প্রবণতা দিকের সংকেত তৈরি করে।
গতিশীলতা সূচকঃ ২৪০ চক্রের ১৪ দিনের ইএমএ, প্রবণতা দিক নির্ণয় করা।
এটিআর স্টপ-ড্যামেজ স্টপঃ এটিআর স্টপ-ড্যামেজ দূরত্বের ১৪ গুণ এবং স্টপ-ড্যামেজ স্টপ-ড্যামেজ দূরত্বের ১.৫ গুণ
কৌশলটি প্রথমে বিচার করে যে কোনও চ্যানেল বিস্ফোরিত হয়েছে কিনা, যদি চ্যানেলটি বিস্ফোরিত হয়, তবে গতির দিকটি বিচার করে, অতিরিক্ত বা খালি করার সিদ্ধান্ত নেয়। প্রবেশের পরে, এটিআর গুণক দিয়ে স্টপ লস স্টপ ম্যানেজমেন্ট করুন।
ডাবল পোল ব্যান্ড গঠন ব্যবহার করে, আপনি বিভিন্ন সময়কালের মধ্যে ওঠানামা তুলনা করতে পারেন এবং প্রবণতা ব্রেকডাউন নির্ধারণ করতে পারেন।
ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য গতিশীলতার সূচক ব্যবহার করুন, যাতে বাজারের ঝড়ের মধ্যে আপনি না পড়ে যান।
এটিআর ব্যবহার করে স্টপ স্টপ ম্যানেজমেন্ট করা যায় এবং বাজারের অস্থিরতার উপর নির্ভর করে স্টপ দূরত্বের পরিবর্তন করা যায়।
“এটি ঝুঁকি-লাভের অনুপাতের মধ্যে যুক্তিসঙ্গত, অত্যধিক চেষ্টা করা এড়িয়ে চলুন এবং খুব বেশি সংরক্ষণশীল হবেন না”।
কোন সুস্পষ্ট প্রবণতা না থাকা ঝাঁকুনির ক্ষেত্রে, এটি সহজেই আটকে যায়। গতিশীলতার সূচক প্যারামিটারগুলিকে অপ্টিমাইজ করে ভুল বিচার কমাতে পারে।
এটিআর থামানো খুব রক্ষণশীল হতে পারে, অন্য থামানোর পদ্ধতি যেমন মোবাইল থামানো পরীক্ষা করা যেতে পারে।
নির্দিষ্ট স্টপ লস স্টপ ফ্রিকোয়েন্সি সমস্ত জাতের জন্য উপযুক্ত নাও হতে পারে, এটিকে সামঞ্জস্যযোগ্য করার কথা বিবেচনা করা যেতে পারে।
ডাবল পোল ব্যান্ডেড ট্রেন্ড টার্নপয়েন্টের কার্যকারিতা সন্দেহজনক, অন্যান্য চ্যানেলের সূচক যেমন কেডি চ্যানেল ইত্যাদি পরীক্ষা করা যেতে পারে।
বিভিন্ন গতির সূচক পরামিতি পরীক্ষা করুন এবং সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করুন।
বিভিন্ন ধরনের ক্ষতি বন্ধ করার চেষ্টা করুন, যেমন মোবাইল ক্ষতি বন্ধ করা, স্বয়ংক্রিয় ATR ইত্যাদি।
বিভিন্ন জাত এবং বাজারের পরিবেশের উপর ভিত্তি করে স্টপ লস স্টপ কুপন গুণককে সামঞ্জস্য করা যায়।
বিভিন্ন চ্যানেলের কার্যকারিতা পরীক্ষা করুন এবং আরও স্থিতিশীল চ্যানেল চয়ন করুন।
“আমি মনে করি, আমাদের এই উদ্যোগের মাধ্যমে আমরা আরও বেশি লাভবান হতে পারব।
আপনি আপনার সময়, সময় এবং অন্যান্য বিষয়ের উপর ভিত্তি করে ফিল্টার করতে পারেন, যা আপনার বিজয় হারকে উন্নত করবে।
এই কৌশলটির সামগ্রিক ধারণাটি পরিষ্কার, ডাবল পোল ব্যান্ড ব্যবহার করে ট্রেন্ডের ব্রেকপয়েন্টগুলি বিচার করা এর সর্বাধিক উজ্জ্বলতা। তবে স্টপ লস, চ্যানেলের সূচক এবং ঝুঁকি ব্যবস্থাপনা ইত্যাদির ক্ষেত্রে অপ্টিমাইজেশান টেস্টিং করা দরকার, যাতে কৌশলটির প্যারামিটারগুলি আরও অভিযোজিত হতে পারে এবং বিভিন্ন বাজারের পরিবেশে স্থিতিশীলভাবে কাজ করতে পারে। সামগ্রিকভাবে, কৌশলটির ভাল সুবিধা এবং বিকাশের সম্ভাবনা রয়েছে এবং এটি গভীর গবেষণার জন্য উপযুক্ত।
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
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/
// © kasaism
//@version=4
// strategy(title="[EURUSD60] BB Expansion Strategy", shorttitle="[EURUSD60] BBEXP",overlay=true, max_bars_back=5000, max_labels_count=500)
// === INPUTS === //
////BB
largeBbRes = input(title="Large BB Resolution", type=input.resolution, defval="", group="BB")
largeBbLength = input(title="Large BB Length", type=input.integer, defval=40, minval=1, group="BB")
smallBbRes = input(title="Small BB Resolution ", type=input.resolution, defval="", group="BB")
smallBbLength = input(title="Small BB Length", type=input.integer, defval=20, minval=1, group="BB")
multi = input(title="BB StdDev", type=input.float, defval=2.0, maxval=10, minval=0.01, group="BB")
validLen = input(title="BB expand valid length", defval=14, group="BB")
// 3 each EMA settings. EMA directions are as each time frame directions.
resFirstTime = input(title="EMA Trend t/f", type=input.resolution, defval="240", group="SMT")
// resSecondTime = input(title="Second t/f", type=input.resolution, defval="30", group="SMT")
// resThirdTime = input(title="Third t/f", type=input.resolution, defval="", group="SMT")
emaLen = input(14, minval=1, title="Length", group="SMT")
smooth = input(3, minval=1, title="Smooth factor", group="SMT")
//Lisk Management
var riskManagementRule1 = "ATR"
var riskManagementRule2 = "Bracket"
riskManagementRule = input(riskManagementRule1, "Detect Risk Management Based On", options=[riskManagementRule1, riskManagementRule2, "No detection"], group="Trade")
atrMulti = input(3.0, title="ATR Multiple", type=input.float, minval = 1.0, group="ATR")
riskRewardRatio = input(1.5, title="Risk Reward Ratio for ATR", type=input.float, minval = 0.01, group="ATR")
stopLossPoint = input(100, title="Stop Loss Point for Braket(tick)", type=input.float, minval = 1.0, group="Bracket")
takeProfitPoint = input(200, title="Take Profit Point for Braket(tick)", type=input.float, minval = 1.0, group="Bracket")
// === /INPUTS/ === //
// === CONSTANT === //
//For barmerge.lookahead_off
index = barstate.isrealtime ? 1 : 0
//For Entry
NOENTRY=0
LONG=1
SHORT=2
//SMT color
int up=1
int dn=2
int up_HL=3
int dn_HL=4
//label color
color_bearish = color.red
color_bullish = color.blue
C_label_color_bearish = color.red
C_label_color_bullish = color.blue
// === /CONSTANT/ === //
// === FUNCTIONS === //
//BB trade direction
bbTradeDetection(lrgUpper, lrgLower, smlUpper, smlLower) =>
if not(na(lrgUpper) or na(lrgLower) or na(smlUpper) or na(smlLower))
if lrgUpper < smlUpper and lrgLower > smlLower
true
else
false
else
na
// === /FUNCTIONS/ === //
// === CALCURATES === //
////BB
//large BB
lrgBbBasis = security(syminfo.tickerid, largeBbRes, sma(close[index], largeBbLength))
lrgBbDev = multi * security(syminfo.tickerid, largeBbRes, stdev(close[index], largeBbLength))
lrgBbUpper = lrgBbBasis + lrgBbDev
lrgBbLower = lrgBbBasis - lrgBbDev
//small BB
smlBbBasis = security(syminfo.tickerid, smallBbRes, sma(close[index], smallBbLength))
smlBbDev = multi * security(syminfo.tickerid, smallBbRes, stdev(close[index], smallBbLength))
smlBbUpper = smlBbBasis + smlBbDev
smlBbLower = smlBbBasis - smlBbDev
bbTrade = bbTradeDetection(lrgBbUpper, lrgBbLower, smlBbUpper, smlBbLower)
//EMA Trend
base=security(syminfo.tickerid, resFirstTime, ema(close[index],emaLen))
sig=security(syminfo.tickerid, resFirstTime, ema(base[index],smooth))
emaTrend = not(na(base) or na(sig)) ? base < sig ? dn : up : na
////LISK MANAGEMENT
float stopLossLineForLong = na
float stopLossLineForShort = na
float takeProfitLineForLong = na
float takeProfitLineForShort = na
atr_ = atr(14) * atrMulti
if riskManagementRule == riskManagementRule1
stopLossLineForLong := strategy.position_size > 0 ? stopLossLineForLong[1] ? stopLossLineForLong[1] : round(close[index] - atr_,3) : na
stopLossLineForShort := strategy.position_size < 0 ? stopLossLineForShort[1] ? stopLossLineForShort[1] : round(close[index] + atr_,3) : na
takeProfitLineForLong := strategy.position_size > 0 ? takeProfitLineForLong[1] ? takeProfitLineForLong[1] : close[index] + atr_*riskRewardRatio : na
takeProfitLineForShort := strategy.position_size < 0 ? takeProfitLineForShort[1] ? takeProfitLineForShort[1] :close[index] - atr_*riskRewardRatio : na
if riskManagementRule == riskManagementRule2
stopLossLineForLong := strategy.position_size > 0 ? stopLossLineForLong[1] ? stopLossLineForLong[1] : close[index] - stopLossPoint * syminfo.mintick : na
stopLossLineForShort := strategy.position_size < 0 ? stopLossLineForShort[1] ? stopLossLineForShort[1] : close[index] + stopLossPoint * syminfo.mintick : na
takeProfitLineForLong := strategy.position_size > 0 ? takeProfitLineForLong[1] ? takeProfitLineForLong[1] : close[index] +takeProfitPoint * syminfo.mintick : na
takeProfitLineForShort := strategy.position_size < 0 ? takeProfitLineForShort[1] ? takeProfitLineForShort[1] :close[index] - takeProfitPoint * syminfo.mintick : na
// === /CALCURATES/ === //
// === CONDITIONS === //
//BB
bool isBbEntry = na
for i=0 to validLen
isBbEntry := bbTrade==true ? true : bbTrade[i]==true ? true : false
//plotshape(isBbEntry, style=shape.circle, location=location.bottom)
isBbLong = isBbEntry and open[index] < smlBbBasis[index] and close[index] > smlBbBasis[index]
isBbShort = isBbEntry and open[index] > smlBbBasis[index] and close[index] < smlBbBasis[index]
//SMT
isEmaLong = emaTrend == up
isEmaShort = emaTrend == dn
//ATR
isAtrLongStop = low[index] <= stopLossLineForLong
isAtrShortStop = high[index] >= stopLossLineForShort
isAtrLongLimit = high[index] >= takeProfitLineForLong
isAtrShortLimit = low[index] <= takeProfitLineForShort
// === /CONDITIONS/ === //
// === TRADE === //
//ENTRY
if (isBbLong and isEmaLong)
strategy.entry("LongEntry", strategy.long, comment="LongEntry")
if riskManagementRule == riskManagementRule2
strategy.exit("LongEntry", loss=stopLossPoint, profit=takeProfitPoint, comment="bracket")
if (isBbShort and isEmaShort)
strategy.entry("ShortEntry", strategy.short, comment="ShortEntry")
if riskManagementRule == riskManagementRule2
strategy.exit("ShortEntry", loss=stopLossPoint, profit=takeProfitPoint, comment="bracket")
//EXIT
if riskManagementRule == riskManagementRule1
if(isAtrLongStop)
strategy.close("LongEntry", when=isAtrLongStop, comment="ATR Stop")
if(isAtrShortStop)
strategy.close("ShortEntry", when=isAtrShortStop, comment="ATR Stop")
if(isAtrLongLimit)
strategy.close("LongEntry", when=isAtrLongLimit, comment="ATR Limit")
if(isAtrShortLimit)
strategy.close("ShortEntry", when=isAtrShortLimit, comment="ATR Limit")
// === /TRADE/ === //
// === PLOTS === //
plot(lrgBbBasis, title="Large BB Basis", linewidth=2, color=color.gray)
plot(lrgBbUpper, title="Large BB Upper", linewidth=2, color=color.gray)
plot(lrgBbLower, title="Large BB Lower", linewidth=2, color=color.gray)
plot(smlBbBasis, title="Small BB Basis", color=color.white)
plot(smlBbUpper, title="Small BB Upper", color=color.white)
plot(smlBbLower, title="Small BB Lower", color=color.white)
plot(base, title="EMA Line", color= emaTrend==dn ? color_bearish : emaTrend==up ? color_bullish : color.gray)
plot(stopLossLineForLong ? stopLossLineForLong : na, title="S/L Line For Long", color=color.yellow, style=plot.style_circles)
plot(stopLossLineForShort ? stopLossLineForShort : na, title="S/L Line For Short", color=color.yellow, style=plot.style_circles)
plot(takeProfitLineForLong ? takeProfitLineForLong : na, title="T/P Line For Long", color=color.purple, style=plot.style_circles)
plot(takeProfitLineForShort ? takeProfitLineForShort : na, title="T/P Line For Short", color=color.purple, style=plot.style_circles)
// /=== PLOTS ===/ //