سپر ٹرینڈ ڈیلی انورسر حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-22 16:22:28
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

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

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

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

فوائد کا تجزیہ

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

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

ٹیسٹ کے نتائج سے ، یہ حکمت عملی ایک بیل مارکیٹ میں غیر معمولی طور پر اچھی کارکردگی کا مظاہرہ کرتی ہے۔ طویل مدتی رجحانات میں کامیابی کی شرح بہت زیادہ ہے۔

خطرے کا تجزیہ

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

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

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

اصلاح کی ہدایات

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

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

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

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

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

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

  6. بہترین پیرامیٹر کی ترتیبات تلاش کرنے کے لئے بیک ٹیسٹ کی اصلاح کریں.

نتیجہ

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


/*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)

مزید