
اس حکمت عملی میں اسٹوکاسٹک آر ایس آئی اور قیمتوں میں تبدیلی کی شرح کے اشارے کا استعمال کیا گیا ہے تاکہ رجحان کی سمت کو متعدد خالی فہرستوں میں داخل کیا جاسکے اور کوآرڈینیٹ سلائڈنگ اسٹاپ نقصان کے طریقہ کار کا استعمال کرتے ہوئے خطرے کا انتظام کیا جاسکے۔
سب سے پہلے ، حکمت عملی کا استعمال کرتے ہوئے 5 کی لمبائی کا RSI اشارے اور 7 کی لمبائی کا اسٹوکاسٹک اشارے اسٹوکاسٹک RSI کا حساب لگائیں۔ جب اسٹوکاسٹک RSI کی K قیمت D سے زیادہ ہو تو یہ ایک bullish سگنل ہے ، اور جب K کی قیمت D سے کم ہو تو یہ ایک bearish سگنل ہے۔
دوسرا ، حکمت عملی قیمتوں میں تبدیلی کی شرح کے اشارے EMA ROC کا حساب لگاتی ہے۔ جب EMA ROC آدھی قیمت سے زیادہ یا منفی آدھی قیمت سے کم ہوتا ہے تو ، یہ سمجھا جاتا ہے کہ قیمتیں متحرک ہیں۔
اس کے بعد ، اسٹوکاسٹک آر ایس آئی کے متعدد سگنل اور قیمتوں میں تبدیلی کی شرح کے اشارے کے ساتھ مل کر ، رجحان کی سمت کی نشاندہی کی جاسکتی ہے۔ جب اسٹوکاسٹک آر ایس آئی زیادہ ہے اور قیمتیں متحرک ہیں تو ، زیادہ بنائیں۔ جب اسٹوکاسٹک آر ایس آئی نیچے ہے اور قیمتیں متحرک ہیں۔
آخر میں ، اس حکمت عملی نے خطرے کا انتظام کرنے کے لئے کوآرڈینیٹ سلائیڈنگ اسٹاپ کا استعمال کیا۔ پوزیشن کھولنے کے بعد ، اونچائی یا کم قیمت کو تازہ کرنا جاری رکھیں اور اونچائی یا کم قیمت سے ایک خاص تناسب کے ساتھ اسٹاپ کی حیثیت سے۔
یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:
اسٹوکاسٹک آر ایس آئی اشارے کا استعمال کرتے ہوئے رجحانات اور اوورلوڈ اوورلوڈ کو مؤثر طریقے سے شناخت کیا جاسکتا ہے۔
قیمتوں میں تبدیلی کی شرح کے اشارے مارکیٹوں کو فلٹر کرنے کے لئے استعمال کیا جاتا ہے تاکہ یہ غلط سگنل سے بچنے کے لۓ.
کوآرڈینیٹ سلائیڈنگ اسٹاپ نقصان کا طریقہ منافع کو زیادہ سے زیادہ لاک کرنے کے ساتھ ساتھ خطرے کو بھی کنٹرول کرتا ہے۔
حکمت عملی کے پیرامیٹرز کو بہتر بنانے کے لئے کافی جگہ ہے ، جو مختلف اقسام کے ل adjust ایڈجسٹ کیا جاسکتا ہے۔
حکمت عملی کا تصور سادہ اور واضح ہے اور اسے سمجھنے میں آسان ہے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
Stochastic RSI ممکنہ طور پر غلط سگنل پیدا کرسکتا ہے ، جس کی تصدیق دوسرے عوامل کے ساتھ مل کر کی ضرورت ہے۔
کوآرڈینیٹ سلائڈ اسٹاپ نقصان بہت زیادہ ہوسکتا ہے ، راتوں رات کے وقفوں سے ٹکرا جاتا ہے۔
مختصر مدت میں الٹ جانے سے اسٹاپ نقصان کا سبب بن سکتا ہے۔
حکمت عملی کے پیرامیٹرز کو مختلف اقسام کے لئے بہتر بنانے کی ضرورت ہے ، ورنہ اس کا اثر خراب ہوسکتا ہے۔
ٹرانزیکشن کی لاگت حکمت عملی کی منافع پر اثر انداز ہوتی ہے اور مناسب ٹرانزیکشن فریکوئنسی پر غور کرنے کی ضرورت ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:
Stochastic RSI پیرامیٹرز کو بہتر بنائیں ، جعلی سگنل کی شرح کو کم کریں۔ مختلف K ویلیو اور D ویلیو پیرامیٹرز کی جانچ کی جاسکتی ہے۔
قیمتوں میں تبدیلی کی شرح کے اشارے کے پیرامیٹرز کو بہتر بنائیں ، فلٹرنگ کے اثر کو بہتر بنائیں۔ مختلف ونڈو ادوار اور تبدیلی کی شرح کی حد کی جانچ کی جاسکتی ہے۔
رجحانات کے ساتھ مل کر ، اس سے بچنے کے لئے رجحانات کو روکنے کے لئے۔ مثال کے طور پر ، حرکت پذیری اوسط شامل کریں
نقصان کے تناسب کو بہتر بنانے کے لئے ، جوڑے جانے کے خطرے کو کم کریں۔ مختلف نقصانات کی جانچ پڑتال کی جاسکتی ہے۔
پوزیشنوں کی تعداد کا انتظام شامل کریں ، انفرادی خطرات کو کنٹرول کریں۔ مثال کے طور پر فکسڈ اسٹاپ نقصان کی رقم ، یا اکاؤنٹ کے بیلنس کے مطابق پوزیشنوں کو متحرک طور پر ایڈجسٹ کریں۔
مختلف اقسام کے پیرامیٹرز کی جانچ کرنا ، موافقت کو بہتر بنانا۔ ترجیحا متعدد مارکیٹوں میں متعدد وقت کی مدت کی توثیق۔
اس حکمت عملی کا مجموعی نظریہ واضح اور آسان ہے ، اسٹوکاسٹک آر ایس آئی کا استعمال کرتے ہوئے رجحان کی سمت کی نشاندہی کی جاتی ہے ، اور قیمت میں تبدیلی کی شرح کے اشارے کے ساتھ مل کر فلٹرنگ سگنل ، وسط اور لمبی لائن رجحان کے مواقع کو مؤثر طریقے سے پکڑ سکتا ہے۔ کوآرڈینیٹ سلائڈنگ اسٹاپ نقصان کا طریقہ منافع کو تالا لگا سکتا ہے جبکہ خطرے کو کنٹرول کرتا ہے۔ مزید اصلاح کے ساتھ ، یہ حکمت عملی ایک بہت ہی عملی رجحان سے باخبر رہنے کی حکمت عملی بن سکتی ہے۔
/*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)