
গতিশীল সমতল ব্রেকিং কৌশলটি একটি স্টক ট্রেডিং কৌশল যা সমতল ক্রস সিগন্যালকে গতিশীল সূচকগুলির সাথে একত্রিত করে। এই কৌশলটি একাধিক প্রযুক্তিগত সূচক যেমন সূচকীয় মুভিং এভারেজ (ইএমএ), সাধারণ মুভিং এভারেজ (এসএমএ), মুভিং এভারেজ সিগন্যাল (এমএসিডি) এবং সংশোধিত তুলনামূলকভাবে দুর্বল সূচক (স্টক আরএসআই) ব্যবহার করে, দীর্ঘমেয়াদী প্রবণতাকে উত্থান হিসাবে নিশ্চিত করার জন্য একটি ক্রয় সংকেত তৈরি করে। স্বল্পমেয়াদী গতিশীল পরিমাপ সূচকটি বিপরীত সংকেত দেখায়, কৌশলটি স্টপ লস করে।
এই কৌশলটির প্রধান উপাদানগুলো হলঃ
EMA/SMA সমান্তরাল ক্রস: 9 চক্রের ইএমএ দ্রুত লাইন এবং 21 চক্রের এসএমএ ধীর লাইন সেট করুন, যখন দ্রুত লাইনটি ধীর লাইনটি অতিক্রম করে তখন কেনার সংকেত দেয়।
MACD সূচক: MACD সূচকটিতে MACD লাইন, সিগন্যাল লাইন এবং MACD কলাম রয়েছে। কলামটি ইতিবাচক হলে এবং EMA/SMA দ্বারা উত্পন্ন ক্রয় সংকেতের সাথে সিঙ্ক্রোনাইজ করা হলে অতিরিক্ত নিশ্চিতকরণ হিসাবে।
স্টকআরএসআই সূচক: StockRSI RSI সূচকের একটি উন্নত সংস্করণ। সূচক লাইনটি OVERBOUGHT লাইন ((80) এর উপরে বা OVERSOLD লাইন ((20) এর নীচে থাকলে ক্রয় সংকেত তৈরি করে।
ব্রিন বন্ড: ব্রিনের মধ্যম ট্র্যাকটি 20 দিনের এসএমএ, ব্যান্ডউইথটি নিম্নলিখিত দুটি মানের মধ্যে পার্থক্য রয়েছে। দামগুলি ব্রিনের অঞ্চলে থাকলে ট্রেডিং সিগন্যাল তৈরি করা প্রয়োজন।
স্টপ লস এবং স্টপ পজিশন: গত ১৪ দিনের ATR এর উপর ভিত্তি করে স্টপ লস এবং স্টপ-অফ মূল্য নির্ধারণ করা হয়েছে।
এই কৌশলটি বলে যে উপরের সূচকগুলির মধ্যে কমপক্ষে 2 টি সূচক একসাথে কেনার সংকেত দিতে হবে এবং শেয়ারের দামগুলি বুলিন অঞ্চলের মধ্যে রয়েছে এবং দীর্ঘমেয়াদী প্রবণতা উচ্চতর হওয়ার জন্য একটি চূড়ান্ত কেনার সংকেত তৈরি করতে হবে। যখন MACD সূচকটি নীচে ফিরে আসে, স্টকআরএসআই ওভারবোর অঞ্চলে প্রবেশের পরে একটি বিক্রয় সংকেত তৈরি করে।
সমান্তরাল ক্রস, গতিশীলতা এবং ওঠানামার সুবিধাগুলির সমন্বয়ে এই কৌশলটি নিম্নলিখিত প্রধান সুবিধাগুলির সাথে রয়েছেঃ
ভালো রিভিউ: একাধিক সূচক এবং উভয়ই পরিপক্ক সূচক, বড় বাজি এবং একক সূচকের চেয়ে কৌশলগত ফলাফল ভাল।
প্যারামিটার অপ্টিমাইজ করা হয়েছে: প্রধান প্যারামিটারগুলো যেমন EMA চক্র, ব্রীণ-ব্যান্ড-চ্যানেল অপ্টিমাইজ করা হয়েছে, যা সিস্টেমের স্থিতিশীলতা বাড়িয়ে তুলবে।
স্বয়ংক্রিয় ক্ষতি / স্টপ: ব্রিনব্যান্ড এবং ATR রিয়েল-টাইমে স্টপ লস নিয়ন্ত্রণ করতে পারে, যা ঝুঁকি নিয়ন্ত্রণে সহায়ক।
বাস্তবায়ন কঠিন নয়: কোডটি সহজ, সূচকগুলি সহজেই পাওয়া যায় এবং বাস্তবে কাজ করা খুব কঠিন নয়।
যদিও এই কৌশলটি ভাল কাজ করছে, এর প্রধান ঝুঁকিগুলি হলঃ
সূচকটি ভুল সংকেত দিচ্ছে: যখন বাজার অস্বাভাবিকভাবে অস্থির হয় বা সূচক ব্যর্থ হয়, তখন ভুল সংকেত দেখা দিতে পারে। এই সময়ে দীর্ঘমেয়াদী প্রবণতা বিচার করা উচিত।
ভুল প্যারামিটার: ভুল প্যারামিটার সেট করা হলে ট্রেডিং খুব ঘন ঘন হতে পারে বা প্রতিক্রিয়াশীলতা কম হতে পারে। বিভিন্ন জাত এবং বাজারের অবস্থার সাথে সামঞ্জস্য রেখে এটি পরিবর্তন করা উচিত।
খুব ছোট বা খুব বড় ক্ষতি: খুব ছোট স্টপ লস সহজেই ধরা যায়, খুব বড় হলে খুব বেশি ক্ষতি হয়। স্টপ লস এবং স্টপ ক্যাশকে ভারসাম্য দেওয়া উচিত।
উপরোক্ত ঝুঁকি মোকাবেলায় নিম্নলিখিত পদক্ষেপ গ্রহণ করা যেতে পারেঃ
হস্তক্ষেপ ও সংশোধন: অস্বাভাবিক পরিস্থিতিতে, আপনি ম্যানুয়ালি সংকেত নিশ্চিত করতে পারেন, প্যারামিটার পরিবর্তন করতে পারেন বা নীতি স্থগিত করতে পারেন।
অপ্টিমাইজেশন প্যারামিটার সেটিং: জেনেটিক্যাল অ্যালগরিদমের মত আরো বৈজ্ঞানিক এবং উদ্দেশ্যমূলক পদ্ধতি ব্যবহার করে প্যারামিটারগুলিকে অপ্টিমাইজ করা।
স্টপ লস ওভার ওভাল্টেজ: স্বয়ংক্রিয়ভাবে স্টপ লসকে ওভাররাইডের সাথে সামঞ্জস্য করতে পারে, যেমন ১-৩ গুণ ATR।
এই কৌশলটি আরও উন্নত করা যেতে পারে নিম্নলিখিত উপায়েঃ
ক্ষতিপূরণ ব্যবস্থার স্থিতিশীলতা বৃদ্ধি: ট্র্যাকিং স্টপ বা ইন্ডেক্সাল মুভিং এভারেজ স্টপ যোগ করা যেতে পারে।
ট্রেডিং ভলিউম ফিল্টার: লেনদেনের পরিমাপ যোগ করুন, যাতে ব্যর্থতা এড়ানো যায়।
গতিশীল সমন্বয় প্যারামিটার: বাজার পরিস্থিতি অনুযায়ী স্বয়ংক্রিয়ভাবে গড় লাইন চক্র, চ্যানেল প্রস্থ ইত্যাদি অপ্টিমাইজ করা যায়।
মেশিন লার্নিং অ্যালগরিদম: আরএনএন, এলএসটিএম ইত্যাদি অ্যালগরিদম ব্যবহার করে প্যারামিটার বাস্তবায়নের গতিশীল অপ্টিমাইজেশন।
গতিশীলতা সমান্তরাল কৌশল সমন্বিত প্রযুক্তিগত সূচক ব্যবহারের সুবিধাগুলি অতিক্রম করে, দীর্ঘ এবং সংক্ষিপ্ত রান সহযোগিতার ক্ষেত্রে, ভাল উপার্জন অর্জন করা হয়েছে। এই কৌশলটি বন্ধ ক্ষতি নিয়ন্ত্রণে রয়েছে এবং বাস্তবায়নের অসুবিধা খুব বেশি নয়। পরবর্তী পদক্ষেপটি ক্ষতির ব্যবস্থাটি আরও উন্নত করবে এবং আরও বুদ্ধিমান পদ্ধতি ব্যবহার করে প্যারামিটার অপ্টিমাইজেশন এবং সংকেত ফিল্টারিংয়ের জন্য আরও স্থিতিশীল অতিরিক্ত উপার্জন অর্জনের চেষ্টা করবে।
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Improved Custom Strategy", shorttitle="ICS", overlay=true)
// Volatility
volatility = ta.atr(14)
// EMA/MA Crossover
fast_length = 9
slow_length = 21
fast_ma = ta.ema(close, fast_length)
slow_ma = ta.sma(close, slow_length)
crossover_signal = ta.crossover(fast_ma, slow_ma)
// MACD
[macdLine, signalLine, macdHistogram] = ta.macd(close, 12, 26, 9)
macd_signal = crossover_signal and (macdHistogram > 0)
// Bollinger Bands
source = close
basis = ta.sma(source, 20)
upper = basis + 2 * ta.stdev(source, 20)
lower = basis - 2 * ta.stdev(source, 20)
// Fractal-based Support and Resistance levels
isFractalHigh = high[2] < high[1] and high[1] > high[0]
isFractalLow = low[2] > low[1] and low[1] < low[0]
resistance = ta.valuewhen(isFractalHigh, high[1], 0)
support = ta.valuewhen(isFractalLow, low[1], 0)
// StockRSI
length = 14
K = 100 * (close - ta.lowest(close, length)) / (ta.highest(close, length) - ta.lowest(close, length))
D = ta.sma(K, 3)
overbought = 80
oversold = 20
stockrsi_signal = ((K < D) and (K < oversold)) or ((K > D) and (K > overbought))
// Buy and sell conditions
mandatory_buy_conditions = (crossover_signal ? 1 : 0) + (macd_signal ? 1 : 0) + (stockrsi_signal ? 1 : 0)
// Long-term Trend Check
long_term_ma = ta.sma(close, 200)
long_term_bullish = close > long_term_ma
long_term_bearish = close < long_term_ma
// Plot the long-term MA for visual clarity
plot(long_term_ma, color=color.gray, title="200-Day MA", linewidth=1)
// Simplified Buy and Sell conditions
buy_condition = long_term_bullish and (mandatory_buy_conditions >= 2) and (close > lower) and (close < upper)
sell_condition = (macdHistogram < 0) and (K > D) and (K > overbought)
// Potential SL and TP based on volatility
potential_SL = close - volatility
potential_TP = close + 2 * volatility
plot(potential_SL, title="SL Level", color=color.red, linewidth=1, style=plot.style_linebr)
plot(potential_TP, title="TP Level", color=color.green, linewidth=1, style=plot.style_linebr)
// ... (rest of your code above)
// State variable to track if we're in a position, a counter for trades, and a delayed counter for plotting
var bool inPosition = false
var tradeCounter = 0
var tradeCounterDelayed = 0 // Declaration of the variable
// Buy logic: Check if tradeCounter is 0 and the buy condition is met
if tradeCounter == 0 and buy_condition
strategy.entry("BUY", strategy.long, stop=potential_SL, limit=potential_TP)
inPosition := true
tradeCounter := tradeCounter + 1
// Sell logic: Check if tradeCounter is 1, the sell condition is met, and we are in a position
if tradeCounter == 1 and inPosition and sell_condition
strategy.close("BUY")
inPosition := false
tradeCounter := tradeCounter - 1
// Update the delayed trade counter:
tradeCounterDelayed := tradeCounter
// Plotting
bgcolor(buy_condition ? color.new(color.green, 90) : sell_condition ? color.new(color.red, 90) : na)
plotshape(series=buy_condition and tradeCounterDelayed == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sell_condition and tradeCounterDelayed == 1, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)
// ... (rest of your code if any)