स्टोकेस्टिक इंडिकेटर और सीसीआई इंडिकेटर पर आधारित ट्रेंड फॉलोइंग रणनीति


निर्माण तिथि: 2023-11-22 16:23:31 अंत में संशोधित करें: 2023-11-22 16:23:31
कॉपी: 1 क्लिक्स: 844
1
ध्यान केंद्रित करना
1617
समर्थक

स्टोकेस्टिक इंडिकेटर और सीसीआई इंडिकेटर पर आधारित ट्रेंड फॉलोइंग रणनीति

अवलोकन

इस रणनीति में स्टोकेस्टिक और सीसीआई संकेतक का संयोजन किया गया है ताकि रुझान की दिशा को पहचाना जा सके। इस रणनीति में रुझानों को ट्रैक करने के लिए स्टोकेस्टिक और सीसीआई संकेतक का उपयोग किया गया है।

रणनीति सिद्धांत

  1. स्टोकेस्टिक सूचकांक का निर्णय
    स्टोचैस्टिक संकेतक के ऊपर अपने नवीनतम बार के पार होने पर एक खरीद संकेत के लिए और नीचे अपने नवीनतम बार के पार होने पर एक बेच संकेत के लिए
  2. CCI सूचकांक प्रवृत्ति की दिशा निर्धारित करता है
    सीसीआई 0 से अधिक के लिए मल्टी हेड मार्केट, 0 से कम के लिए खाली हेड मार्केट
  3. Rate of Change सूचकांक फ़िल्टर में उतार-चढ़ाव की प्रवृत्ति
    Rate of Change पैरामीटर सेट करें, यह निर्धारित करने के लिए कि क्या कीमत एक सक्रिय प्रवृत्ति में है
  4. प्रवेश और बाहर निकलने के नियम
    खरीदें सिग्नलः स्टोचैस्टिक पर नवीनतम बार और सीसीआई 0 से अधिक है और कीमत सक्रिय है
    बेचने का संकेतः स्टोचैस्टिक के नीचे हाल ही में एक बार और 0 से कम सीसीआई और सक्रिय प्रवृत्ति
    स्टॉप लॉस एग्जिटः 3% स्टॉप लॉन्ग लाइन, 3% स्टॉप शॉर्ट लाइन

श्रेष्ठता विश्लेषण

  1. स्टोचैस्टिक और सीसीआई सूचकांक के संयोजन में प्रवृत्ति की दिशा का निर्धारण करने के लिए उच्च सटीकता
  2. Rate of Change संकेतक, अस्थिरता को रोकने के लिए प्रभावी है और अमान्य व्यापार से बचा जाता है
  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")