بولنگر بینڈ بریک آؤٹ ٹریڈنگ کی حکمت عملی


تخلیق کی تاریخ: 2023-09-12 16:23:12 آخر میں ترمیم کریں: 2023-09-12 16:23:12
کاپی: 0 کلکس کی تعداد: 815
1
پر توجہ دیں
1617
پیروکار

یہ حکمت عملی بروئنگ بینڈ چینل میں قیمتوں کے ٹوٹنے کے بارے میں فیصلہ کرکے تجارت کرتی ہے۔ یہ حکمت عملی چینل توڑنے والی حکمت عملی کی ایک قسم ہے جس کا مقصد قیمتوں کے ٹوٹنے والے چینل میں پیدا ہونے والے رجحاناتی تجارتی مواقع کو پکڑنا ہے۔

حکمت عملی:

  1. برن بیلٹ کوریج کا حساب لگائیں ، درمیانی ریل n دن کی سادہ متحرک اوسط ہے ، اور اوپر اور نیچے کی ریلیں درمیانی ریل کے اوپر اور نیچے کئی گنا معیاری فرق ہیں۔

  2. جب قیمت اوپر سے نیچے کی طرف سے ٹریک کو توڑتی ہے تو ، مختصر پوزیشن میں داخل ہوں۔ جب قیمت نیچے سے اوپر کی طرف سے ٹریک کو توڑتی ہے تو ، کثیر پوزیشن میں داخل ہوں۔

  3. خطرے کے کنٹرول کے لئے سٹاپ نقصان لائن کو مخالف سمت میں ٹریک لائن سے باہر سیٹ کریں۔

  4. زیادہ سے زیادہ واپسی کے مطابق چینل کی بینڈوڈتھ کو ایڈجسٹ کریں ، پیرامیٹرز کو بہتر بنائیں۔

  5. ٹرانزیکشن حجم فلٹرنگ کے ساتھ، جعلی توڑ سے بچنے کے لئے.

اس حکمت عملی کے فوائد:

  1. ٹرانسمیشن ٹرانسمیشن ٹرانسمیشن ٹرانسمیشن ٹرانسمیشن ٹرانسمیشن ٹرانسمیشن ٹرانسمیشن

  2. برن بینڈ پیرامیٹرز کو بہتر بنانا آسان اور عملی ہے ، اور اس کو بہتر بنانا آسان نہیں ہے۔

  3. ٹرانزیکشن کی مقدار کے ساتھ مل کر جعلی توڑ کو فلٹر کرنے اور معیار کو بہتر بنانے میں مدد ملتی ہے۔

اس حکمت عملی کے خطرات:

  1. برن کی کمر کے پیچھے ہونے کا مسئلہ نمایاں ہے ، اور وہ ممکنہ طور پر بہترین داخلے کے نقطہ نظر سے محروم ہیں۔

  2. ایک بار جب آپ کو ایک ٹوٹ جاتا ہے تو ، آپ کو معقول حد تک نقصان پہنچانا چاہئے۔

  3. کم تعدد تجارت کو بہتر بنانے کے لیے کوشش کرنے سے مواقع ضائع ہو سکتے ہیں۔

خلاصہ یہ ہے کہ یہ حکمت عملی بروئنگ بینڈ میں ہونے والی پیشرفت کا اندازہ لگا کر تجارت کرتی ہے ، جو ایک عام راہداری کی توڑ کی حکمت عملی ہے۔ نسبتا simple آسان قواعد پیرامیٹرز کی اصلاح کے لئے موزوں ہیں ، لیکن تاخیر اور اسٹاپ نقصان کی ترتیب کے بارے میں ابھی بھی محتاط رہنا چاہئے ، تاکہ طویل مدتی مستحکم منافع حاصل کیا جاسکے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-08-12 00:00:00
end: 2023-09-11 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("ChannelBreakOutStrategyV2.1", commission_type = "percent", commission_value = 0.1, calc_on_order_fills = true, overlay=true)

length = input(title="Length",  minval=1, maxval=1000, defval=40)
maxR = input(title = "R",  minval = 1.0, maxval = 10, defval = 3, step = 0.1)
adoptR = input(title = "Auto Adjust R",  defval = false)
stepR = input(title = "Step in R",  minval = 0.01, maxval = 0.1, step = 0.01, defval = 0.02)
baseYear = input(title = "Base Year",  minval = 2000, maxval = 2016, defval = 2000)
volumeTh = input(title = "Volume Threadhold",  minval = 100.0, maxval = 200, defval = 120, step = 5)
hasLong = input(title = "Include Long",  defval = true)
hasShort = input(title = "Include Short",  defval = true)
usePositionSizing = input(title = "Enable Position Sizing",  defval = true)

getTrailStop(val, current) => 
    s = val > 1.6 ? 0.8 : val >= 1.4 ? 0.85 : val >= 1.3 ? 0.9 : 0.93
    s * current


upBound = highest(high, length)
downBound = lowest(low, length)
hasVol = (volume / sma(volume, length) * 100 >= volumeTh) ? 1 : 0

hasPos = strategy.position_size != 0 ? 1 : 0

trailstop = atr(length) * 3
ptvalue = syminfo.pointvalue
equity = strategy.openprofit > 0 ? strategy.equity - strategy.openprofit : strategy.equity
curR = adoptR == false ? maxR : n == 0 ? maxR : hasPos == 1 ? curR[1] : (rising(equity,1) > 0? curR[1] + stepR : falling(equity, 1) > 0 ? curR[1] <= 2.0 ? 2.0 : curR[1] - stepR : curR[1])
contracts = usePositionSizing == false ? 20 : floor(equity / 100 * curR / (trailstop * ptvalue))

realbuystop = close - trailstop
realsellstop = close + trailstop

isPFst = (hasPos[1] == 0 and hasPos == 1) ? 1 : 0
isPOn = (hasPos[1] + hasPos == 2) ? 1 : 0
largestR = hasPos == 0 or isPFst == 1 ? -1 : nz(largestR[1]) < close ? close : largestR[1]
pctRise =  largestR / strategy.position_avg_price

rbs = strategy.position_size <= 0 ? realbuystop : isPFst ? strategy.position_avg_price - trailstop : pctRise >= 1.3 ? getTrailStop(pctRise, largestR) : (isPOn and realbuystop > rbs[1] and close > close[1]) ? realbuystop : rbs[1]
rss = strategy.position_size >= 0 ? realsellstop : isPFst ? strategy.position_avg_price + trailstop : (isPOn and realsellstop < rss[1] and close < close[1]) ? realsellstop : rss[1]

isStart = na(rbs) or na(rss) ? 0 : 1
buyARun = close - open > 0 ? 0 : open - close
sellARun = open - close > 0 ? 0 : close - open

if (strategy.position_size > 0 and buyARun >= trailstop / 3 * 2 and pctRise < 1.3)
    strategy.close("buy")
    strategy.cancel("exit")
if (strategy.position_size < 0 and sellARun >= trailstop / 3 * 2)
    strategy.close("sell")
    strategy.cancel("exit")

strategy.cancel("buy")
strategy.cancel("sell")
conLong = hasLong == true and hasPos == 0 and year > baseYear and (isStart + hasVol) == 2
strategy.order("buy", strategy.long, qty = contracts, stop=upBound + syminfo.mintick * 5, comment="BUY", when = conLong)
if (rbs > high)
    strategy.close("buy")
strategy.exit("exit", "buy", stop = rbs, when = hasPos == 1 and isStart == 1)

conShort = hasShort == true and hasPos == 0 and year > baseYear and (isStart + hasVol) == 2
strategy.order("sell", strategy.short, qty = contracts, stop=downBound - syminfo.mintick * 5, comment="SELL", when = conShort)
if (rss < low)
    strategy.close("sell")
strategy.exit("exit", "sell", stop = rss, when = hasPos == 1 and isStart == 1)

plot(series = rbs, color=blue)
plot(series = realbuystop, color=green)
plot(series = rss, color=red)
plot(series = realsellstop, color=yellow)