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

اسٹوکاسٹک اور سی سی آئی پر مبنی حکمت عملی کے بعد رجحان

مصنف:چاؤ ژانگ، تاریخ: 2023-11-22 16:23:31
ٹیگز:

img

جائزہ

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

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

  1. اسٹوکاسٹک اشارے نے تیزی/بہار کے نمونہ کا جائزہ لیا
    سٹوکاسٹک کا سنہری کراس خریدنے کا اشارہ ہے، جبکہ موت کا کراس فروخت کا اشارہ ہے
  2. CCI اشارے رجحان کی سمت کا تعین کرتا ہے سی سی آئی 0 سے اوپر بولش مارکیٹ کی نشاندہی کرتا ہے، جبکہ 0 سے نیچے bearish مارکیٹ
  3. شرح تبدیلی اشارے کے فلٹرز رینج سے منسلک رجحان
    قیمت ایک فعال رجحان میں ہے یا نہیں فیصلہ کرنے کے لئے تبدیلی کی شرح کے پیرامیٹرز مقرر کریں
  4. داخلے اور باہر نکلنے کے قوانین طویل اندراج: اسٹوکاسٹک گولڈن کراس & CCI > 0 & فعال رجحان مختصر اندراج: اسٹوکاسٹک ڈیتھ کراس & CCI < 0 & فعال رجحان اسٹاپ نقصان سے باہر نکلنا: طویل اور مختصر دونوں طرف کے لئے 3٪ اسٹاپ نقصان

پیشہ تجزیہ

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

خطرے کا تجزیہ

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

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

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

خلاصہ

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


/*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")

مزید