
اس حکمت عملی کا استعمال پول بینڈ چینل کے اندر اور باہر موازنہ کرنے کے لئے کیا جاتا ہے ، اور رجحانات کی پیروی کرنے کے لئے متحرک اشارے کے ساتھ مل کر ، یہ رجحانات کی پیروی کرنے کی حکمت عملی ہے۔ حکمت عملی کا تعین کرتا ہے کہ جب چینل کے اندر کا اتار چڑھاؤ چینل سے کم ہوتا ہے تو ایک نیا رجحان کی سمت کا اشارہ پیدا ہوتا ہے ، اور پوزیشن کھول دی جاتی ہے۔ پوزیشن کا نقصان بند کرنے کے لئے اے ٹی آر ضرب استعمال کیا جاتا ہے ، اسٹاپ اے ٹی آر ضرب کے لئے خطرہ کی واپسی کا تناسب ہے۔
اس حکمت عملی میں مندرجہ ذیل اجزاء شامل ہیں:
پول بینڈ کی ترتیب: بڑے پول بینڈ کی لمبائی 40 دوروں ، چھوٹے پول بینڈ کی لمبائی 20 دوروں پر مشتمل ہے ، جس کی چوڑائی معیاری فرق سے دوگنا ہے۔
چینل دھماکے کا فیصلہ: اگر بڑے بولٹ بینڈ کے اوپر کا مدار چھوٹے بولٹ بینڈ کے اوپر سے کم ہے اور بڑے بولٹ بینڈ کے نیچے کا مدار چھوٹے بولٹ بینڈ کے نیچے سے زیادہ ہے تو ، اس سے ظاہر ہوتا ہے کہ لہر بڑھتی ہے اور ایک نیا رجحان کی سمت کا اشارہ پیدا کرتی ہے۔
متحرک اشارے: 240 سائیکلوں پر 14 دن کا EMA ، رجحان کی سمت کا تعین کریں۔
اے ٹی آر اسٹاپ نقصان: اے ٹی آر سے 14 گنا زیادہ نقصان کی دوری اور اسٹاپ نقصان سے 1.5 گنا زیادہ نقصان کی دوری۔
حکمت عملی سب سے پہلے یہ فیصلہ کرتی ہے کہ آیا راستہ پھٹ گیا ہے ، اگر راستہ پھٹ گیا ہے تو ، پھر حرکیات کی سمت کا فیصلہ کریں ، فیصلہ کریں کہ کیا زیادہ کرنا ہے یا خالی کرنا ہے۔ داخلہ کے بعد ، اے ٹی آر کے ضرب سے اسٹاپ نقصان کو روکنے کا انتظام کریں۔
ڈبل پول بینڈ ڈھانچے کا استعمال کرتے ہوئے ، مختلف ٹائم پیریڈ میں اتار چڑھاؤ کی صورتحال کا موازنہ کیا جاسکتا ہے تاکہ رجحانات کے پھوٹ پانے کا پتہ لگایا جاسکے۔
رجحانات کی سمت کا تعین کرنے کے لئے متحرک اشارے کا استعمال کریں ، اور مارکیٹ کی ہلچل سے بچنے سے بچیں۔
اے ٹی آر کا استعمال اسٹاپ اسٹاپ مینجمنٹ کے لئے کیا جاتا ہے ، جس میں اسٹاپ فاصلہ کو مارکیٹ کے اتار چڑھاؤ کے مطابق ایڈجسٹ کیا جاسکتا ہے۔
اس کے علاوہ، یہ بھی کہا گیا ہے کہ یہ ایک بہت ہی کم خطرہ ہے، اور اس کے نتیجے میں، یہ بہت زیادہ محتاط ہے.
واضح رجحان کے بغیر ہلچل کے حالات میں ، آسانی سے پھنس جانا آسان ہے۔ حرکیات کے اشارے کے پیرامیٹرز کو بہتر بنانے کے ذریعے غلط فہمیوں کو کم کیا جاسکتا ہے۔
اے ٹی آر اسٹاپ بہت زیادہ قدامت پسند ہوسکتا ہے ، اور آپ اس کے لئے دوسرے اسٹاپ طریقوں کی جانچ کرسکتے ہیں ، جیسے موبائل اسٹاپ وغیرہ۔
ایک مقررہ سٹاپ نقصان روک تھام ضارب تمام پرجاتیوں کے لئے موزوں نہیں ہو سکتا ہے، اسے ایڈجسٹ کرنے کے لئے غور کیا جا سکتا ہے.
ڈبل پول بینڈ کا رجحان ٹرانسمیشن پوائنٹ کا اندازہ لگانے کے لئے مشکوک ہے، دیگر چینل کے اشارے جیسے کے ڈی چینل وغیرہ کی جانچ پڑتال کی جا سکتی ہے.
مختلف پیمائش کے پیرامیٹرز کی جانچ پڑتال کریں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں.
مختلف سٹاپ نقصان کے طریقوں کو آزمائیں، جیسے کہ موبائل سٹاپ، خود کار طریقے سے اے ٹی آر وغیرہ۔
سٹاپ نقصان اور سٹاپ کوڈ کو مختلف اقسام اور مارکیٹ کے حالات کے مطابق بہتر بنایا جا سکتا ہے.
مختلف چینل کے اشارے کی جانچ پڑتال کریں اور زیادہ مستحکم چینل کے اشارے کا انتخاب کریں۔
منافع کے انتظام میں شامل ہونے پر غور کریں تاکہ منافع زیادہ کنٹرول میں ہو۔
آپ کے پاس اپنے پسندیدہ کھیلوں میں سے ایک ہے، اور آپ کو اپنے پسندیدہ کھیلوں میں سے ایک کو کھیلنے کے لئے تیار ہیں.
اس حکمت عملی کا مجموعی نظریہ واضح ہے ، ڈبل پول بینڈ کا استعمال کرتے ہوئے رجحان کے پھوٹ پڑنے کا تعین کرنا اس کی سب سے بڑی روشنی ہے۔ تاہم ، اسٹریٹجک پیرامیٹرز کو زیادہ لچکدار بنانے کے لئے اسٹاپ نقصان ، چینل اشارے ، رسک مینجمنٹ وغیرہ کے لئے بہتر جانچ کی ضرورت ہے ، تاکہ مارکیٹ کے مختلف ماحول میں مستحکم طور پر کام کیا جاسکے۔ مجموعی طور پر ، اس حکمت عملی میں اچھے فوائد اور ترقی کی صلاحیت موجود ہے ، اور اس پر گہری تحقیق کے قابل ہے۔
/*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 ===/ //