یہ حکمت عملی رجحان کی سمت کی نشاندہی کرنے کے لئے اسٹوکاسٹک اشارے اور سی سی آئی اشارے کو جوڑتی ہے ، اور رجحان کی پیروی کرنے کے لئے رینج سے وابستہ رجحانات کو فلٹر کرنے کے لئے شرح تبدیلی اشارے کا استعمال کرتی ہے۔ یہ حکمت عملی بریک آؤٹ انٹری اور اسٹاپ نقصان سے باہر نکلتی ہے۔
یہ حکمت عملی اسٹوکاسٹک ، سی سی آئی اور شرح تبدیلی کے اشارے کو مربوط کرکے رجحان کی سمت کا فیصلہ کرتی ہے ، اور بریک آؤٹ ٹریکنگ کے ساتھ رجحان کے مواقع کو پکڑتی ہے۔ اس کے فوائد اشارے کے امتزاج ، رینج سے منسلک مارکیٹ کی فلٹرنگ ، اور خطرے کے کنٹرول کے لئے سخت اسٹاپ نقصان کے ذریعہ درست فیصلے میں پائے جاتے ہیں۔ اگلا قدم پیرامیٹر کی اصلاح ، متعدد اشارے ، اسٹاپ نقصان کی حکمت عملی کے ذریعے حکمت عملی کو مزید بہتر بنانا ہے تاکہ اسے زیادہ مضبوط اور لچکدار بنایا جاسکے۔
/*backtest start: 2022-11-15 00:00:00 end: 2023-11-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Stochastic CCI BF 🚀", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075) /////////////// 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 ///////////// CCI ///////////// src = close ccilength = input(13, minval=1, title="CCI Length") c=cci(src, ccilength) ///////////// Stochastic ///////////// len = input(19, minval=1, title="RSI Length") lenema = input(12, minval=1, title="RSI-EMA Length") up = rma(max(change(src), 0), len) down = rma(-min(change(src), 0), len) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) out = ema(rsi, lenema) ///////////// Rate Of Change ///////////// source = close roclength = input(30, minval=1) pcntChange = input(7.0, 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 = out > out[1] and isMoving() and c > 0 short = out < out[1] and isMoving() and c < 0 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(3.0, title='Stop Loss %') / 100 since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 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 /////////////// Execution /////////////// if testPeriod() strategy.entry("L", strategy.long, when=long_signal) strategy.entry("S", strategy.short, when=short_signal) strategy.exit("L Ex", "L", stop=long_sl, when=since_longEntry > 0) strategy.exit("S Ex", "S", stop=short_sl, when=since_shortEntry > 0) /////////////// Plotting /////////////// bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30) bgcolor(not isMoving() ? color.white : long ? color.lime : short ? color.red : na, transp=80) plot(out, color = out > out[1] ? color.lime:color.red, linewidth = 2, title="Stoch") plot(c, color = c > 0 ? color.lime:color.red, linewidth = 2, title="CCI")