স্টোকাস্টিক সূচক এবং সিসিআই সূচকের উপর ভিত্তি করে ট্রেন্ড অনুসরণ কৌশল


সৃষ্টির তারিখ: 2023-11-22 16:23:31 অবশেষে সংশোধন করুন: 2023-11-22 16:23:31
অনুলিপি: 1 ক্লিকের সংখ্যা: 844
1
ফোকাস
1617
অনুসারী

স্টোকাস্টিক সূচক এবং সিসিআই সূচকের উপর ভিত্তি করে ট্রেন্ড অনুসরণ কৌশল

ওভারভিউ

এই কৌশলটি স্টোক্যাস্টিক সূচক এবং সিসিআই সূচককে একত্রিত করে ট্রেন্ডের দিকনির্দেশনা সনাক্ত করতে এবং র্যাটের পরিবর্তনের সূচক ব্যবহার করে ঝড়ের প্রবণতা ফিল্টার করে ট্রেন্ডের উপর নজরদারি করার জন্য। এই কৌশলটি ব্রেক-ইন, স্টপ-লস আউট ট্রেডিং পদ্ধতি ব্যবহার করে।

কৌশল নীতি

  1. স্টোক্যাস্টিক সূচকগুলি শূন্যতা নির্ধারণ করে
    স্টোক্যাস্টিক সূচকটি যখন তার সর্বশেষ বারটি অতিক্রম করে তখন এটি একটি ক্রয় সংকেত এবং যখন এটি তার সর্বশেষ বারটি অতিক্রম করে তখন এটি একটি বিক্রয় সংকেত
  2. সিসিআই সূচক ট্রেন্ডের দিক নির্দেশ করে
    CCI ০ এর বেশি হলে মাল্টি হেড বাজার, ০ এর কম হলে খালি হেড বাজার
  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")