یہ مضمون بریک آؤٹ انٹری اور ٹریلنگ اسٹاپ نقصان سے باہر نکلنے پر مبنی ٹرینڈ ٹریڈنگ کی حکمت عملی کی تفصیل سے وضاحت کرتا ہے۔ یہ اپسائڈ بریک آؤٹ پر طویل پوزیشنیں بناتا ہے اور اسٹاپ نقصان کے پیچھے جانے کے لئے سوئنگ لو کا استعمال کرتا ہے۔
I. حکمت عملی منطق
تجارت کا بنیادی منطق یہ ہے:
سوئنگ اونچائیوں اور اونچائیوں کا حساب لگانے کے لئے محور پوائنٹس کا استعمال کریں۔
جب قیمت سوئنگ اونچائیوں سے تجاوز کرتی ہے تو طویل پوزیشنیں لیں.
تازہ ترین سوئنگ لو کو جارحانہ سٹاپ نقصان کے طور پر استعمال کیا جاتا ہے۔
جب ایک اعلی سوئنگ کم ظاہر ہوتا ہے، ٹریل سٹاپ نقصان کی سطح اوپر کی طرف.
یہ حکمت عملی کو تیزی سے مزاحمت کے وقفے کے بعد مضبوط رجحان کی نقل و حرکت کو پکڑنے کی اجازت دیتا ہے۔ رجحان میں توسیع کے ساتھ ہی ٹریلنگ اسٹاپ بھی منافع میں مقفل ہوتا ہے۔
II۔ اسٹریٹیجی کے فوائد
اہم فوائد یہ ہیں:
بریک آؤٹ انٹری درست طریقے سے رجحان کے آغاز کے مقامات کو پکڑتا ہے.
ٹریلنگ اسٹاپ منافع کی گرفت کو زیادہ سے زیادہ کرتا ہے اور ڈراؤونگ کو کم کرتا ہے۔
سٹاپ نقصان کی سطحوں میں ایک بفر ہوتا ہے تاکہ انفیکشن کو روکا جا سکے۔
مخالف رجحان کی تجارت سے بچنے کے لئے چلتی اوسط فلٹرز شامل کیے جا سکتے ہیں۔
III. ممکنہ خطرات
تاہم، کچھ ممکنہ خطرات بھی موجود ہیں:
بریک آؤٹ سگنل تاخیر کا شکار ہو سکتے ہیں، جس کی وجہ سے ابتدائی مواقع ضائع ہو جاتے ہیں۔
جارحانہ رک جاتا ہے خطرہ معمول retracements پر قبل از وقت باہر نکلنے.
کم کرنے کے دباؤ کو برداشت کرنے کی ضرورت ہے.
IV. خلاصہ
خلاصہ میں ، اس مضمون میں قیمتوں میں توڑ اور ٹریلنگ اسٹاپ نقصان پر مبنی رجحان کی پیروی کرنے والی حکمت عملی کی وضاحت کی گئی ہے۔ یہ مؤثر طریقے سے رجحانات کی پیروی کرکے منافع کو زیادہ سے زیادہ کرتا ہے لیکن اسٹاپ نقصان کی باطلگی جیسے خطرات کا انتظام کرنے کی ضرورت ہے۔ مجموعی طور پر یہ ایک آسان اور بدیہی رجحان ٹریکنگ طریقہ کار فراہم کرتا ہے۔
/*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)