سپر ٹرینڈ ڈیلی ریورسل اسٹریٹیجی


تخلیق کی تاریخ: 2024-02-22 16:22:28 آخر میں ترمیم کریں: 2024-02-22 16:22:28
کاپی: 0 کلکس کی تعداد: 724
1
پر توجہ دیں
1617
پیروکار

سپر ٹرینڈ ڈیلی ریورسل اسٹریٹیجی

جائزہ

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

حکمت عملی کا اصول

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

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

اسٹریٹجی میں اسٹاپ نقصان کے دو طریقے ہیں: فکسڈ اسٹاپ نقصان کا تناسب اور اے ٹی آر پر مبنی خود کار طریقے سے سکڑنے والا اسٹاپ۔ فکسڈ اسٹاپ آسان اور براہ راست ہے ، اے ٹی آر اسٹاپ مارکیٹ میں اتار چڑھاؤ کے مطابق اسٹاپ کی حد کو ایڈجسٹ کرسکتا ہے۔

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

طاقت کا تجزیہ

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

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

ٹیسٹ کے نتائج کے مطابق ، یہ حکمت عملی بیل مارکیٹ میں عمدہ کارکردگی کا مظاہرہ کرتی ہے۔ بڑے پیمانے پر لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی لمبی

خطرے کا تجزیہ

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

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

مذکورہ بالا خطرات کے ل AT ، اے ٹی آر کے حساب کتاب کی مدت کو مناسب طریقے سے کم کیا جاسکتا ہے یا اے ٹی آر کو روکنے کے لئے ضربی فیکٹر کو ایڈجسٹ کیا جاسکتا ہے۔ اس کے علاوہ ، اہم معاون مزاحمت والے علاقوں کی نشاندہی کرنے کے لئے اضافی اشارے شامل کیے جاسکتے ہیں تاکہ ان علاقوں سے گمراہ کن سگنلوں کو روکا جاسکے۔

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

  1. سپر ٹرینڈ اشارے کے پیرامیٹرز کو ایڈجسٹ کریں ، اے ٹی آر سائیکل اور اے ٹی آر ضرب کو بہتر بنائیں ، اور سپر ٹرینڈ لائن کو ہموار کریں۔

  2. قیمت میں تبدیلی کی شرح کے اشارے کے پیرامیٹرز کو ایڈجسٹ کریں ، اصلاحی دورانیہ اور تبدیلی کی شرح کی حد کو کم کریں ، جعلی سگنل کو کم کریں۔

  3. مختلف سٹاپ میکانیزموں کو آزمائیں ، جیسے کہ اسٹاپ ٹریکنگ ، یا فکسڈ اسٹاپ کی حد کو بہتر بنانا۔

  4. اضافی فیصلے کے اشارے شامل کریں ، اہم معاون مزاحمت کی نشاندہی کریں ، اور رجحان کے الٹ فیصلے کی غلطیوں سے بچیں۔

  5. مختلف اقسام کے پیرامیٹرز کی ترتیبات اور اثرات کی جانچ کریں ، بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔

  6. بہترین پیرامیٹرز کی ترتیب کو تلاش کرنے کے لئے ریٹرننگ کو بہتر بنائیں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Super Trend Daily BF 🚀", overlay=true, precision=2, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

/////////////// Time Frame ///////////////
_1 = input(false,  "════════ Test Period ═══════")
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true

///////////// Super Trend /////////////
_2 = input(false,  "══════ Super Trend ══════")
length = input(title="ATR Period", type=input.integer, defval=3)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=1.3)

atr = mult * atr(length)

longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop :=  close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : dir == 1 and close < longStopPrev ? -1 : dir

///////////// Rate Of Change ///////////// 
_3 = input(false,  "══════ Rate of Change ══════")
source = close
roclength = input(30, "ROC Length",  minval=1)
pcntChange = input(6, "ROC % Change", minval=1)
roc = 100 * (source - source[roclength]) / source[roclength]
emaroc = ema(roc, roclength / 2)
isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2))

///////////////  Strategy  /////////////// 
long = dir == 1 and dir[1] == -1 and isMoving()
short = dir == -1 and dir[1] == 1 and isMoving()

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

/////////////// Dynamic ATR Stop Losses ///////////////
_4 = input(false,  "════════ Stop Loss ═══════")
SL_type = input("Fixed", options=["Fixed", "ATR Derived"], title="Stop Loss Type")
sl_inp = input(6.0, title='Fixed Stop Loss %') / 100
atrLkb = input(20, minval=1, title='ATR Stop Period')
atrMult = input(1.5, step=0.25, title='ATR Stop Multiplier') 
atr1 = atr(atrLkb)

longStop1 = 0.0
longStop1 :=  short_signal ? na : long_signal ? close - (atr1 * atrMult) : longStop1[1]
shortStop1 = 0.0
shortStop1 := long_signal ? na : short_signal ? close + (atr1 * atrMult) : shortStop1[1]

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

/////////////// Execution ///////////////
if testPeriod()
    strategy.entry("L", strategy.long, when=long)
    strategy.entry("S", strategy.short, when=short)
    strategy.exit("L SL", "L", stop = SL_type == "Fixed" ? long_sl : longStop1, when=since_longEntry > 0)
    strategy.exit("S SL", "S", stop = SL_type == "Fixed" ? short_sl : shortStop1, when=since_shortEntry > 0)

/////////////// Plotting /////////////// 
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)
bgcolor(isMoving() ? dir == 1 ? color.lime : color.red : color.white , transp=80)