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

RSI حکمت عملی کا بیک ٹیسٹنگ اور اصلاح

مصنف:چاؤ ژانگ، تاریخ: 2023-11-10 11:59:40
ٹیگز:

img

جائزہ

یہ حکمت عملی زیادہ خریدنے اور زیادہ فروخت ہونے والی حالتوں کا تعین کرنے کے لئے آر ایس آئی (رشتہ دار طاقت انڈیکس) اشارے پر مبنی ہے۔ یہ مارکیٹ میں قلیل مدتی زیادہ خریدنے اور زیادہ فروخت ہونے والے منظرناموں سے فائدہ اٹھاتے ہوئے ، سادہ اور موثر ہے۔

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

یہ حکمت عملی صرف داخلہ سگنل کے طور پر آر ایس آئی اشارے کا استعمال کرتی ہے۔ جب آر ایس آئی کم نقطہ (ڈیفالٹ 20) سے نیچے گزرتا ہے تو یہ طویل ہوجاتا ہے ، اور جب آر ایس آئی اعلی نقطہ (ڈیفالٹ 80) سے اوپر گزرتا ہے تو یہ مختصر ہوجاتا ہے۔ یہ ہر بار مقررہ رقم (ڈیفالٹ 100) کی تجارت کرتا ہے اور مارکیٹ کی حالت سے قطع نظر 1٪ منافع حاصل کرنے کا مقصد رکھتا ہے۔ اگر نقصان 3٪ تک پہنچ جاتا ہے تو ، یہ رک جاتا ہے۔ تجارتی تعدد کو کنٹرول کرنے کے لئے ، حکمت عملی کھونے والی تجارت کے بعد 24 بار تک تجارت بند کردیتی ہے۔

بنیادی منطق یہ ہے:

  1. زیادہ خریدنے / زیادہ فروخت کرنے کا تعین کرنے کے لئے RSI کا استعمال کریں
  2. جب آر ایس آئی 20 سے نیچے گزرتا ہے تو طویل عرصے تک جائیں
  3. جب آر ایس آئی 80 سے زیادہ ہو تو مختصر ہوجائیں
  4. تجارت ہر بار 100 ڈالر مقرر
  5. بند کرنے کے لئے منافع یا سٹاپ نقصان لے لو
  6. نقصان کے معاملے میں، 24 بار کے لئے ٹریڈنگ کو روکیں

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

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

اس حکمت عملی کا سب سے بڑا فائدہ سادگی اور کارکردگی ہے۔

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

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

خطرے کا تجزیہ

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

  1. مضبوط رجحان کی مارکیٹ میں منافع حاصل کرنے میں ناکام۔ جب رجحان برقرار رہتا ہے تو آر ایس آئی طویل عرصے تک اوور بک / اوور سیل زون میں رہ سکتا ہے۔

  2. اسٹاپ نقصان بہت وسیع ہونے سے زیادہ نقصان ہوسکتا ہے۔ موجودہ 3٪ اسٹاپ نقصان کو 1-2٪ تک کم کرنے کی ضرورت ہوسکتی ہے۔

  3. اعلی تجارتی تعدد جیت کے بعد زیادہ تجارت کا باعث بن سکتی ہے۔ تجارت کی تعدد کو محدود کرنے کی ضرورت ہے۔

  4. $ 100 کے فکسڈ سائز کے خطرات کی حراستی۔ سرمایہ کے فیصد کو بہتر بنانا چاہئے۔

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

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

  1. جب رجحان غیر واضح ہو تو ٹریڈنگ کو روکنے کے لئے ایم اے جیسے رجحان فلٹر شامل کریں۔

  2. سٹاپ نقصان / منافع حاصل کرنے کے تناسب کو بہتر بنائیں۔ اسٹاپ نقصان کو 1-2٪ تک کم کریں اور متحرک منافع حاصل کریں۔

  3. تجارتی تعدد کو محدود کریں، جیسے زیادہ سے زیادہ 2 تجارت فی وقت کی مدت.

  4. سائز کی تجارت 100 ڈالر کی بجائے فیصد کیپٹل پر مبنی ہے۔

  5. RSI پیرامیٹرز کو بہتر بنائیں جیسے مدت، زیادہ خرید / فروخت کی سطح.

  6. سرمایہ میں اضافے کے وقت سائز میں اضافہ نہ کرنے کے لیے پوزیشن سائزنگ شامل کریں۔

ان اصلاحات کے ساتھ، خطرات کو کم کیا جا سکتا ہے اور استحکام میں نمایاں اضافہ کیا جا سکتا ہے.

نتیجہ

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


/*backtest
start: 2023-11-02 00:00:00
end: 2023-11-09 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("rsi超买超卖_回测用", overlay=false, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash)
open_pos = input.int(50000, title = "每次开单资金(usdt)")
rsi_period = input.int(14, title = "rsi周期")
rsi_line      = input.float(20.0,      title='RSI触发线',      step=0.05)
stop_rsi_top_line = input.float(70, title = "顶部rsi止损线")
stop_rsi_bottom_line = input.float(30, title = "底部rsi止损线")
stop_loss_perc = input.float(0.03, title = "止损线")
stop_profit = input.float(0.01, title = "止盈")
loss_stop_trade_k = input.int(24, title = "亏损后x根K线不做交易")


rsiParam = ta.rsi(close, rsi_period)

var int failedTimes = 0
var bool stopTrade = false

// plot(rsiParam)

if stopTrade
    failedTimes += 1
    if failedTimes == loss_stop_trade_k
        failedTimes := 0
        stopTrade := false



// 获取当前持仓方向
checkCurrentPosition() =>
    strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0

curPosition = checkCurrentPosition()

// 当前持仓成本价
position_avg_price = strategy.position_avg_price


// 当前持单, 触达反向的rsi线,清仓
if curPosition > 0 and rsiParam >= stop_rsi_top_line
    strategy.close_all(comment = "closebuy")

if curPosition < 0 and rsiParam <= stop_rsi_bottom_line
    strategy.close_all(comment = "closesell")


// 止盈止损清仓
if curPosition > 0
    // if (position_avg_price - close) / close >= stop_loss_perc
    //     // 止损
    //     strategy.close_all(comment = "closebuy")
    //     stopTrade := true
    if (close - position_avg_price) / position_avg_price >= stop_profit
        // 止盈
        strategy.close_all(comment = "closebuy")



if curPosition < 0
    // if (close - position_avg_price) / position_avg_price >= stop_loss_perc
    //     // 止损
    //     strategy.close_all(comment = "closesell")
    //     stopTrade := true

    if (position_avg_price - close) / close >= stop_profit
        // 止盈
        strategy.close_all(comment = "closesell")


a = strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1)

if bar_index == a and strategy.closedtrades.profit(strategy.closedtrades - 1) < 0
    stopTrade := true

var float openPrice = 0.0



if rsiParam <= rsi_line and stopTrade == false
	strategy.entry("long", strategy.long, open_pos / close, comment = "long")
    if curPosition == 0
        openPrice := close
    strategy.exit("long_stop", "long", limit = openPrice * (1+stop_profit), stop=openPrice * (1-stop_loss_perc), comment = "closebuy")

if rsiParam >= 100 - rsi_line and stopTrade == false
    strategy.entry("short", strategy.short, open_pos / close, comment = "short")
    if curPosition == 0
        openPrice := close
    strategy.exit("short_stop", "short", limit = openPrice * (1-stop_profit), stop=openPrice * (1+stop_loss_perc), comment = "closesell")




plot(failedTimes)

مزید