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

رینڈم انٹری پر مبنی کمپاؤنڈ سٹاپ نقصان اور منافع لینے کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-24 15:38:49
ٹیگز:

img

جائزہ

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

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

یہ حکمت عملی لانگ انٹری پوائنٹ کا تعین کرنے کے لئے 11 اور 13 کے درمیان بے ترتیب نمبر rd_number_entry کا استعمال کرتی ہے ، اور پوزیشنوں کی بندش کا تعین کرنے کے لئے 20 اور 22 کے درمیان rd_number_exit کا استعمال کرتی ہے۔ طویل عرصے سے جانے کے بعد ، اسٹاپ نقصان کو انٹری قیمت مائنس atr ((14) پر مقرر کیا جاتا ہے۔slx. ایک ہی وقت میں، تین لے منافع پوائنٹس مقرر کر رہے ہیں. پہلا لے منافع نقطہ داخلہ کی قیمت کے علاوہ atr ((14) ہے.tpx، دوسرا منافع حاصل کرنے کا نقطہ داخلہ قیمت کے علاوہ 2 ہےtpx، اور تیسرا منافع لینے کا نقطہ داخلہ کی قیمت کے علاوہ 3 ہےtpx. مختصر جانے کا اصول اسی طرح کا ہے، سوائے اس کے کہ داخلہ کا فیصلہ مختلف rd_number_entry اقدار لیتا ہے، اور منافع لینے اور نقصان کو روکنے کی سمت مخالف ہے۔

خطرے کو ٹی پی ایکس (منافع لینے کا گتانک) اور ایس ایل ایکس (اسٹاپ نقصان کا گتانک) کو ایڈجسٹ کرکے کنٹرول کیا جاسکتا ہے۔

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

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

  1. بے ترتیب اندراج کا استعمال منحنی فٹنگ کے امکان کو کم کر سکتا ہے
  2. ایک سے زیادہ سٹاپ نقصان اور منافع لینے کے پوائنٹس کی ترتیب سے ایک ہی تجارت کے خطرے کو کنٹرول کیا جاسکتا ہے
  3. اے ٹی آر کا استعمال کرتے ہوئے منافع لینے اور نقصان کو روکنے کے لئے اسے مارکیٹ کی اتار چڑھاؤ پر مبنی ہونے کی اجازت دیتا ہے
  4. تجارتی خطرے کو ضابطہ کاروں کو ایڈجسٹ کرکے کنٹرول کیا جاسکتا ہے

خطرے کا تجزیہ

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

  1. بے ترتیب اندراج رجحانات کو نظر انداز کر سکتا ہے
  2. اگر سٹاپ نقصان بہت چھوٹا ہے، تو اسے آسانی سے روک دیا جا سکتا ہے
  3. اگر منافع لینے کی جگہ بہت بڑی ہے، منافع ناکافی ہو سکتا ہے
  4. نامناسب پیرامیٹرز زیادہ نقصانات کا باعث بن سکتے ہیں

خطرات کو فائدہ اٹھانے اور نقصان کو روکنے کے ضابطوں کو ایڈجسٹ کرکے اور بے ترتیب اندراج منطق کو بہتر بنانے سے کم کیا جاسکتا ہے۔

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

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

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

نتیجہ

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Random Strategy with 3 TP levels and SL", overlay=true,max_bars_back = 50)

tpx = input(defval = 0.8, title = 'Atr multiplication for TPs?')
slx = input(defval = 1.2, title = 'Atr multiplication for SL?')
isLong = false
isLong := nz(isLong[1])

isShort = false
isShort := nz(isShort[1])

entryPrice = 0.0
entryPrice := nz(entryPrice[1])
tp1 = true
tp1 := nz(tp1[1])
tp2 = true
tp2 := nz(tp2[1])

sl_price = 3213.0
sl_price := nz(sl_price[1])

sl_atr = atr(14)*slx
tp_atr = atr(14)*tpx

rd_number_entry = 1.0
rd_number_entry := (16708 * nz(rd_number_entry[1], 1) % 2147483647)%17

rd_number_exit = 1.0
rd_number_exit := ((16708 * time % 2147483647) %17)


//plot(rd_number_entry)

shortCondition = (rd_number_entry == 13? true:false) and (year >= 2017) and not isLong and not isShort
longCondition = (rd_number_entry == 11 ? true:false) and (year >= 2017) and not isShort and not isShort
//Never exits a trade:
exitLong = (rd_number_exit == 22?true:false) and (year >= 2018) and not isShort
exitShort = (rd_number_exit ==  22?true:false) and (year >= 2018) and not isLong


//shortCondition = crossunder(sma(close, 14), sma(close, 28)) and year >= 2017
//longCondition = crossover(sma(close, 14), sma(close, 28)) and year >= 2017

//exitLong = crossunder(ema(close, 14), ema(close, 28)) and year >= 2017
//exitShort = crossover(ema(close, 14), ema(close, 28)) and year >= 2017

if (longCondition and not isLong)
    strategy.entry('Long1', strategy.long)
    strategy.entry('Long2', strategy.long)
    strategy.entry('Long3', strategy.long)
    isLong := true
    entryPrice := close
    isShort := false
    tp1 := false
    tp2 := false
    sl_price := close-sl_atr

if (shortCondition and not isShort)
    strategy.entry('Short1', strategy.short)
    strategy.entry('Short2', strategy.short)
    strategy.entry('Short3', strategy.short)
    isShort := true
    entryPrice := close
    isLong := false
    tp1 := false
    tp2 := false
    sl_price := close+sl_atr
    
if (exitShort and isShort)
    strategy.close('Short1')
    strategy.close('Short2')
    strategy.close('Short3')
    isShort :=  false

if (exitLong and isLong)
    strategy.close('Long1')
    strategy.close('Long2')
    strategy.close('Long3')
    isLong :=  false

if isLong
    if (close > entryPrice + tp_atr) and not tp1
        strategy.close('Long1')
        tp1 := true
        sl_price := close - tp_atr
    if (close > entryPrice + 2*tp_atr) and not tp2
        strategy.close('Long2')
        tp2 := true
        sl_price := close - tp_atr
    if (close > entryPrice + 3*tp_atr)
        strategy.close('Long3')
        isLong := false
    if (close < sl_price)
        strategy.close('Long1')
        strategy.close('Long2')
        strategy.close('Long3')
        isLong := false

if isShort
    if (close < entryPrice - tp_atr) and not tp1
        strategy.close('Short1')
        sl_price := close + tp_atr
        tp1 := true
    if (close < entryPrice - 2*tp_atr) and not tp2
        strategy.close('Short2')
        sl_price := close + tp_atr
        tp2 := true
    if (close < entryPrice - 3*tp_atr)
        strategy.close('Short3')
        isShort := false
    if (close > sl_price)
        strategy.close('Short1')
        strategy.close('Short2')
        strategy.close('Short3')
        isShort := false
plot(atr(14)*slx)
plot(sl_price)

مزید