وسائل لوڈ ہو رہے ہیں... لوڈنگ...

ٹرپل ایکسپونینشیل حرکت پذیر اوسط منافع لینے اور سٹاپ نقصان کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-04 10:38:42
ٹیگز:

img

جائزہ

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

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

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

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

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

  1. فیصلے کے اشارے بدیہی اور سمجھنے میں آسان ہیں۔
  2. منظم اور خودکار کرنے میں آسان.
  3. رجحانات کی پیروی اور خطرے کے کنٹرول کو متوازن کرتا ہے۔

خطرے کا تجزیہ

  1. کچھ تاخیر اور وقت پر واپسیوں کو پکڑنے میں ناکامی ہے.
  2. مختلف مارکیٹوں میں نقصانات کو روکنے کے لئے تیار.
  3. پیرامیٹر ٹیوننگ کو بہتر بنانے کی ضرورت ہے، ورنہ نتائج خراب ہوسکتے ہیں.

خطرے کو کم کرنے کے اقدامات میں شامل ہیں: چلتی اوسط مدت کو کم کرنا، منافع / اسٹاپ فیکٹر کو بہتر بنانا، اور معاون اشارے شامل کرنا۔

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

  1. بہترین پیرامیٹرز تلاش کرنے کے لئے چلتی اوسط کے مجموعے کی جانچ کریں.
  2. دیگر تکنیکی اشارے جیسے ایم اے سی ڈی، آر ایس آئی وغیرہ شامل کریں۔
  3. پیرامیٹرز کو خودکار طور پر بہتر بنانے کے لیے مشین لرننگ کا استعمال کریں۔
  4. حقیقی رینج کی بنیاد پر منافع / سٹاپ کی سطح کو متحرک طور پر ایڈجسٹ کریں.
  5. زیادہ سے زیادہ لوگوں سے بچنے کے لئے جذبات کو شامل کریں.

نتیجہ

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


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//© Densz
strategy("3EMA with TP & SL (ATR)", overlay=true )

// INPUTS
startTime           =       input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2017 00:00 +0000"))
endTime             =       input(title="End Time", type = input.time, defval = timestamp("01 Jan 2022 00:00 +0000"))

slowEMALength       =       input(title="Slow EMA Length", type = input.integer, defval = 55)
middleEMALength     =       input(title="Middle EMA Length", type = input.integer, defval = 21)
fastEMALength       =       input(title="Fast EMA Length", type = input.integer, defval = 9)

trendMALength       =       input(title="Trend indicator MA Length", type = input.integer, defval = 200)

atrLength           =       input(title="ATR Length", type = input.integer, defval = 14)
tpATRMult           =       input(title="Take profit ATR multiplier", type = input.integer, defval = 3)
slATRMult           =       input(title="Stop loss ATR multiplier", type = input.integer, defval = 2)

rsiLength           =       input(title="RSI Length", type = input.integer, defval = 14)

// Indicators
slowEMA             =       ema(close, slowEMALength)
middEMA             =       ema(close, middleEMALength)
fastEMA             =       ema(close, fastEMALength)
atr                 =       atr(atrLength)

rsiValue            =       rsi(close, rsiLength)
isRsiOB             =       rsiValue >= 80
isRsiOS             =       rsiValue <= 20

sma200              =       sma(close, trendMALength)

inDateRange         =       true

// Plotting
plot(slowEMA, title="Slow EMA", color=color.red, linewidth=2, transp=50)
plot(middEMA, title="Middle EMA", color=color.orange, linewidth=2, transp=50)
plot(fastEMA, title="Fast EMA", color=color.green, linewidth=2, transp=50)

plot(sma200, title="SMA Trend indicator", color=color.purple, linewidth=3, transp=10)
plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="OB")
plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangledown, text="OS")

float takeprofit    =       na
float stoploss      =       na

var line tpline     =       na
var line slline     =       na

if strategy.position_size != 0
    takeprofit := takeprofit[1]
    stoploss := stoploss[1]
    line.set_x2(tpline, bar_index)
    line.set_x2(slline, bar_index)
    line.set_extend(tpline, extend.none)
    line.set_extend(slline, extend.none)
    
// STRATEGY
goLong  = crossover(middEMA, slowEMA) and inDateRange
closeLong = crossunder(fastEMA, middEMA) and inDateRange


if goLong
    takeprofit := close + atr * tpATRMult
    stoploss := close - atr * slATRMult
    // tpline := line.new(bar_index, takeprofit, bar_index, takeprofit, color=color.green, width=2, extend=extend.right, style=line.style_dotted)
    // slline := line.new(bar_index, stoploss, bar_index, stoploss, color=color.red, width=2, extend=extend.right, style=line.style_dotted)
    // label.new(bar_index, takeprofit, "TP", style=label.style_labeldown)
    // label.new(bar_index, stoploss, "SL", style=label.style_labelup)
    strategy.entry("Long", strategy.long, when = goLong)
    strategy.exit("TP/SL", "Long", stop=stoploss, limit=takeprofit)
if closeLong
    takeprofit := na
    stoploss := na
    strategy.close(id = "Long", when = closeLong)

if (not inDateRange)
    strategy.close_all()


مزید