بریک آؤٹ ٹریلنگ اسٹاپ پر مبنی رجحان کی حکمت عملی


تخلیق کی تاریخ: 2023-09-14 20:34:02 آخر میں ترمیم کریں: 2023-09-14 20:34:02
کاپی: 0 کلکس کی تعداد: 727
1
پر توجہ دیں
1617
پیروکار

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

حکمت عملی

اس حکمت عملی کے بنیادی ٹریڈنگ منطق مندرجہ ذیل ہیں:

  1. اعلی ترین قیمتوں اور کم ترین قیمتوں کے اتار چڑھاؤ کے نقطہ نظر کا حساب لگانے کے لئے لہراتی اشارے کا استعمال کریں؛

  2. جب قیمت سب سے زیادہ حد کو پار کرتی ہے تو کثیر داخلہ؛

  3. اس کے بعد ، آپ کو ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر ایک بار پھر.

  4. جب اعلی اتار چڑھاؤ کی کم سطحیں ہوتی ہیں تو ، اسٹاپ نقصان کی پوزیشن کو منتقل کیا جاتا ہے ، جس سے ٹریکنگ اسٹاپ نقصان ہوتا ہے۔

اس طرح ، یہ ایک مضبوط رجحان کو پکڑ سکتا ہے جب قیمت اوپر کی مزاحمت کو توڑ دیتی ہے۔ اور اس کی روک تھام کے نقطہ نظر کو مستقل طور پر اوپر کی طرف منتقل کیا جاسکتا ہے تاکہ منافع کو مقفل کیا جاسکے۔

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

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

  1. اس کے علاوہ ، یہ بھی ایک بہت ہی اہم عنصر ہے جس کی وجہ سے ٹرینڈ کے آغاز کے نقطہ نظر کو زیادہ درست طریقے سے سمجھا جاسکتا ہے۔

  2. متحرک ٹریکنگ سٹاپ نقصان، زیادہ سے زیادہ منافع کو لاک کرنے اور واپسی کو کم کرنے؛

  3. سٹاپ نقصان کی پوزیشن میں ایک مخصوص buffered کے علاقے، سٹاپ نقصان سے بچنے کے لئے پار کر دیا گیا ہے.

  4. اس کے علاوہ، ہم آہنگی فلٹرز کو بھی شامل کیا جاسکتا ہے، جو مخالف سمت کے آپریشن سے بچنے کے لئے استعمال کیا جاتا ہے.

تیسرا، ممکنہ خطرات

لیکن اس حکمت عملی کے کچھ ممکنہ خطرات بھی ہیں:

  1. ٹرانسمیشن کے آغاز میں ایک موقع کو نظر انداز کرنے کے لئے ایک بریک سگنل کے پیچھے رہ سکتا ہے.

  2. نقصانات کو روکنے کے لئے زیادہ سے زیادہ شدت پسندی کی وجہ سے نقصانات کو روکنے کی ضرورت نہیں ہے؛

  3. کچھ دباؤ کا سامنا کرنا پڑتا ہے۔

چار مضامین، خلاصہ

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-09-13 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Revision:        1
// Author:          @millerrh
// Strategy:  Enter long when recent swing high breaks out, using recent swing low as stop level.  Move stops up as higher lows print to act
// as trailing stops.  Ride trend as long as it is there and the higher lows aren't breached.  
// Conditions/Variables 
//    1. Can place a user-defined percentage below swing low and swing high to use as a buffer for your stop to help avoid stop hunts
//    2. Can add a filter to only take setups that are above a user-defined moving average (helps avoid trading counter trend) 
//    3. Manually configure which dates to back test
//    4. Color background of backtested dates - allows for easier measuring buy & hold return of time periods that don't go up to current date    


// === CALL STRATEGY/STUDY, PROGRAMATICALLY ENTER STRATEGY PARAMETERS HERE SO YOU DON'T HAVE TO CHANGE THEM EVERY TIME YOU RUN A TEST ===
// (STRATEGY ONLY) - Comment out srategy() when in a study() 
strategy("Breakout Trend Follower", overlay=true, initial_capital=10000, currency='USD', 
   default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1)
// (STUDY ONLY) - Comment out study() when in a strategy() 
//study("Breakout Trend Follower", overlay=true)

// === BACKTEST RANGE ===
From_Year  = input(defval = 2019, title = "From Year")
From_Month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
From_Day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
To_Year    = input(defval = 9999, title = "To Year")
To_Month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
To_Day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
Start  = timestamp(From_Year, From_Month, From_Day, 00, 00)  // backtest start window
Finish = timestamp(To_Year, To_Month, To_Day, 23, 59)        // backtest finish window

// A switch to control background coloring of the test period - Use for easy visualization of backtest range and manual calculation of 
// buy and hold (via measurement) if doing prior periods since value in Strategy Tester extends to current date by default
testPeriodBackground = input(title="Color Background - Test Period?", type=input.bool, defval=false)
testPeriodBackgroundColor = testPeriodBackground and (time >= Start) and (time <= Finish) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=95)

// == FILTERING ==
// Inputs
useMaFilter = input(title = "Use MA for Filtering?", type = input.bool, defval = true)
maType = input(defval="SMA", options=["EMA", "SMA"], title = "MA Type For Filtering")
maLength   = input(defval = 50, title = "MA Period for Filtering", minval = 1)

// Declare function to be able to swap out EMA/SMA
ma(maType, src, length) =>
    maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = ma(maType, close, maLength)
plot(maFilter, title = "Trend Filter MA", color = color.green, linewidth = 3, style = plot.style_line, transp = 50)

// Check to see if the useMaFilter check box is checked, this then inputs this conditional "maFilterCheck" variable into the strategy entry 
maFilterCheck = if useMaFilter == true
    maFilter
else
    0

// === PLOT SWING HIGH/LOW AND MOST RECENT LOW TO USE AS STOP LOSS EXIT POINT ===
// Inputs
//pvtLenL       = input(3, minval=1, title="Pivot Length Left Hand Side") //use if you want to change this to an input
//pvtLenR       = input(3, minval=1, title="Pivot Length Right Hand Side") //use if you want to change this to an input
pvtLenL       = 3
pvtLenR       = 3

// Get High and Low Pivot Points
pvthi_ = pivothigh(high, pvtLenL, pvtLenR)
pvtlo_ = pivotlow(low, pvtLenL, pvtLenR)

// Force Pivot completion before plotting.
Shunt = 1 //Wait for close before printing pivot? 1 for true 0 for flase
maxLvlLen = 0 //Maximum Extension Length
pvthi = pvthi_[Shunt]
pvtlo = pvtlo_[Shunt]

// Count How many candles for current Pivot Level, If new reset.
counthi = barssince(not na(pvthi))
countlo = barssince(not na(pvtlo))
 
pvthis = fixnan(pvthi)
pvtlos = fixnan(pvtlo)
hipc = change(pvthis) != 0 ? na : color.maroon
lopc = change(pvtlos) != 0 ? na : color.green

// Display Pivot lines
plot((maxLvlLen == 0 or counthi < maxLvlLen) ? pvthis : na, color=hipc, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="Top Levels")
plot((maxLvlLen == 0 or countlo < maxLvlLen) ? pvtlos : na, color=lopc, transp=0, linewidth=1, offset=-pvtLenR-Shunt, title="Bottom Levels")
plot((maxLvlLen == 0 or counthi < maxLvlLen) ? pvthis : na, color=hipc, transp=0, linewidth=1, offset=0, title="Top Levels 2")
plot((maxLvlLen == 0 or countlo < maxLvlLen) ? pvtlos : na, color=lopc, transp=0, linewidth=1, offset=0, title="Bottom Levels 2")


// Stop Levels
stopBuff = input(0.0, minval=-2, title="Stop Loss Buffer off Swing Low (%)")
stopPerc = stopBuff*.01 // Turn stop buffer input into a percentage
stopLevel = valuewhen(pvtlo_, low[pvtLenR], 0) //Stop Level at Swing Low
stopLevel2 = stopLevel - stopLevel*stopPerc  // Stop Level with user-defined buffer to avoid stop hunts and give breathing room
plot(stopLevel2, style=plot.style_line, color=color.orange, show_last=1, linewidth=1, transp=50, trackprice=true)
buyLevel = valuewhen(pvthi_, high[pvtLenR], 0) //Buy level at Swing High
buyLevel2 = buyLevel + buyLevel*stopPerc // Buy-stop level with user-defined buffer to avoid stop hunts and give breathing room
plot(buyLevel2, style=plot.style_line, color=color.blue, show_last=1, linewidth=1, transp=50, trackprice=true)

// Conditions for entry and exit
buySignal = high > buyLevel2
buy = buySignal and time > Start and time < Finish and buyLevel2 > maFilterCheck // All these conditions need to be met to buy
sellSignal = low < stopLevel2 // Code to act like a stop-loss for the Study

// (STRATEGY ONLY) Comment out for Study
strategy.entry("Long", strategy.long, stop = buyLevel2, when = buyLevel2 > maFilterCheck)
strategy.exit("Exit Long", from_entry = "Long", stop=stopLevel2)

// == (STUDY ONLY) Comment out for Strategy ==
// Check if in position or not
inPosition = bool(na)
inPosition := buy[1] ? true : sellSignal[1] ? false : inPosition[1]
flat = bool(na)
flat := not inPosition
buyStudy = buy and flat
sellStudy = sellSignal and inPosition
//Plot indicators on chart and set up alerts for Study
plotshape(buyStudy, style = shape.triangleup, location = location.belowbar, color = #1E90FF, text = "Buy")
plotshape(sellStudy, style = shape.triangledown, location = location.abovebar, color = #EE82EE, text = "Sell")
alertcondition(buyStudy, title='Trend Change Follower Buy', message='Trend Change Follower Buy')

// Color background when trade active (for easier visual on what charts are OK to enter on)
tradeBackground = input(title="Color Background for Trades?", type=input.bool, defval=true)
tradeBackgroundColor = tradeBackground and inPosition ? #00FF00 : na
bgcolor(tradeBackgroundColor, transp=95)
noTradeBackgroundColor = tradeBackground and flat ? #FF0000 : na
bgcolor(noTradeBackgroundColor, transp=90)