ہم آہنگ سلائیڈنگ سٹاپ نقصان کی حکمت عملی

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

img

جائزہ

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

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

سب سے پہلے ، حکمت عملی اسٹوکاسٹک آر ایس آئی کا حساب 5 لمبائی کے آر ایس آئی اشارے اور 7 لمبائی کے اسٹوکاسٹک اشارے کا استعمال کرتے ہوئے کرتی ہے۔ جب اسٹوکاسٹک آر ایس آئی کی قیمت ڈی ویلیو سے اوپر ہوتی ہے تو ، یہ تیزی کا اشارہ ہے۔ جب K ڈی سے نیچے ہوتا ہے تو ، یہ bearish سگنل ہوتا ہے۔

دوسرا ، حکمت عملی قیمت کی شرح تبدیلی اشارے EMA ROC کا حساب لگاتی ہے۔ جب EMA ROC حد کے نصف سے اوپر یا حد کے منفی نصف سے نیچے ہوتا ہے تو ، یہ فعال قیمت کی نقل و حرکت کی نشاندہی کرتا ہے۔

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

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

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

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

  1. اسٹوکاسٹک آر ایس آئی اشارے مؤثر طریقے سے رجحانات اور زیادہ خرید / فروخت کی صورتحال کی نشاندہی کرتا ہے۔

  2. غلط سگنل سے بچنے کے لئے قیمت کی شرح کی تبدیلی مارکیٹ کی حد سے باہر فلٹر کرتی ہے۔

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

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

  5. حکمت عملی کا منطق سادہ اور واضح ہے، سمجھنے اور لاگو کرنے میں آسان ہے.

خطرے کا تجزیہ

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

  1. اسٹوکاسٹک آر ایس آئی غلط سگنل پیدا کر سکتا ہے، دیگر عوامل کے ساتھ تصدیق کی ضرورت ہے.

  2. کوآرڈینیٹ سلائیڈنگ سٹاپ نقصان بہت جارحانہ ہو سکتا ہے، راتوں رات خلاؤں کی طرف سے روک دیا جا سکتا ہے.

  3. مختصر مدت میں واپسی سٹاپ نقصان کا سبب بن سکتی ہے۔

  4. پیرامیٹرز مختلف مصنوعات کے لئے اصلاح کی ضرورت ہے، دوسری صورت میں کارکردگی خراب ہو سکتی ہے.

  5. تجارتی لاگت حکمت عملی کی منافع بخش پر اثر انداز ہوتی ہے، مناسب تجارتی تعدد کی ضرورت ہوتی ہے.

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

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

  1. غلط سگنل کو کم کرنے کے لئے اسٹوکاسٹک آر ایس آئی پیرامیٹرز کو بہتر بنائیں۔ مختلف K اور D اقدار کی جانچ کر سکتے ہیں۔

  2. فلٹرنگ اثر کو بہتر بنانے کے لئے پیرامیٹرز کی تبدیلی کی قیمت کی شرح کو بہتر بنائیں۔ مختلف لمبائی اور حد کی قیمتوں کی جانچ کرسکتے ہیں۔

  3. رجحان کے اشارے کو شامل کریں تاکہ الٹ پھیر سے روکنے سے بچیں۔ جیسے چلتی اوسط۔

  4. پھنسنے کے خطرے کو کم کرنے کے لئے سٹاپ نقصان فیصد کو بہتر بنائیں. مختلف سٹاپ نقصان چوڑائی کی جانچ کر سکتے ہیں.

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

  6. موافقت کو بہتر بنانے کے لئے مختلف مصنوعات پر پیرامیٹرز کی جانچ کریں۔ متعدد مارکیٹوں اور ٹائم فریموں پر تصدیق کریں۔

خلاصہ

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


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Sto2", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
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
    
///////////// Stochastic calc /////////////
smoothK = input(1, minval=1)
smoothD = input(7, minval=1)
lengthRSI = input(5, minval=1)
lengthStoch = input(7, minval=1)
src = input(close, title="RSI Source")

up = sma(max(change(src), 0), lengthRSI) 
down = sma(-min(change(src), 0), lengthRSI)
rsi1 = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

///////////// Rate Of Change ///////////// 
source = close, roclength = input(14, minval=1), pcntChange = input(2, 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 = k > d and isMoving()
short = k < d 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])
sl_inp = input(2.0, title='Stop Loss %') / 100
tp_inp = input(9.0, title='Take Profit %') / 100 
 
take_level_l = strategy.position_avg_price * (1 + tp_inp)
take_level_s = strategy.position_avg_price * (1 - tp_inp) 

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) // LONG SL
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) // SHORT SL

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

// Strategy
if testPeriod()
    strategy.entry("Long Entry",  strategy.long, when=long)
    strategy.entry("Short Entry", strategy.short, when=short)
    strategy.exit("Long Ex", "Long Entry", stop=long_sl, limit=take_level_l, when=since_longEntry > 0)
    strategy.exit("Short Ex", "Short Entry", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0)
    
///////////// Plotting /////////////
bgcolor(isMoving() ? long ? color.green : short ? color.red : na : color.white, transp=80)
p1 = plot(k, color=color.gray, linewidth=0)
p2 = plot(d, color=color.gray, linewidth=0)
h0 = hline(100)
h1 = hline(50)
h3 = hline(0)
fill(p1, p2, color = k > d ? color.lime : color.red, transp=70)

مزید