
এই কৌশলটি শ্যাফ ট্রেন্ড চক্রের উপর ভিত্তি করে, স্টোক আরএসআই এর ওভারব্রিড ওভারসেল নীতির সাথে মিলিত, গতিশীল সূচকগুলির মাধ্যমে প্রবণতা বিচার এবং অনুসরণ করা। যখন দাম ওভারব্রিড অঞ্চল থেকে ওভারব্রিড অঞ্চলে প্রবেশ করে, তখন বেশি করে; যখন দাম ওভারব্রিড অঞ্চল থেকে ওভারব্রিড অঞ্চলে প্রবেশ করে, তখন খালি করে। এই কৌশলটি দামের প্রবণতার পরিবর্তনের পয়েন্টগুলি ক্যাপচার করে, গতিশীলভাবে অবস্থানগুলি সামঞ্জস্য করে এবং দামের গতি অনুসরণ করে।
শ্যাফ ট্রেন্ড চক্র কৌশলটি গতিশীলতার সূচকগুলির মাধ্যমে ওভারবয় ওভারসেল অঞ্চলগুলি নির্ধারণ করে এবং এর ভিত্তিতে দামের স্বল্পমেয়াদী প্রবণতার পরিবর্তনগুলি নির্ধারণ করে। এই কৌশলটি সহজ এবং স্বচ্ছ, বিভিন্ন বাজারের পরামিতি অনুসারে সামঞ্জস্য করা যায়, তবে প্যাচিংয়ের ঝুঁকিও রয়েছে। এটি সহায়ক সূচকগুলি দ্বারা বিচার এবং ক্ষতি বন্ধ করে অপ্টিমাইজ করা যেতে পারে, যা শক্তিশালী প্রবণতার ক্ষেত্রে আরও ভাল কাজ করে।
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("Schaff Trend Cycle", shorttitle="STC Backtest", overlay=true)
fastLength = input(title="MACD Fast Length", defval=23)
slowLength = input(title="MACD Slow Length", defval=50)
cycleLength = input(title="Cycle Length", defval=10)
d1Length = input(title="1st %D Length", defval=3)
d2Length = input(title="2nd %D Length", defval=3)
src = input(title="Source", defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)
macd = ema(src, fastLength) - ema(src, slowLength)
k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))
d = ema(k, d1Length)
kd = nz(fixnan(stoch(d, d, d, cycleLength)))
stc = ema(kd, d2Length)
stc := stc > 100 ? 100 : stc < 0 ? 0 : stc
//stcColor = not highlightBreakouts ? (stc > stc[1] ? green : red) : #ff3013
//stcPlot = plot(stc, title="STC", color=stcColor, transp=0)
upper = input(75, defval=75)
lower = input(25, defval=25)
transparent = color(white, 100)
upperLevel = plot(upper, title="Upper", color=gray)
// hline(50, title="Middle", linestyle=dotted)
lowerLevel = plot(lower, title="Lower", color=gray)
fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)
upperFillColor = stc > upper and highlightBreakouts ? green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? red : transparent
//fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
//fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)
long = crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na
long_filt = long and not short
short_filt = short and not long
prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]
long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1
strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)
plotshape(crossover(stc, lower) ? lower : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=0)
plotshape(crossunder(stc, upper) ? upper : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=0)
alertcondition(long_final, "Long", message="Long")
alertcondition(short_final,"Short", message="Short")
plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)