
এই কৌশলটি একটি সংমিশ্রণ কৌশল, যা গতিশীল সূচক, প্রবণতা অনুসরণকারী সূচক এবং গড়রেখা সূচককে একত্রিত করে, যা প্রবণতা অনুসরণ এবং ক্রয় / বিক্রয়কে বিরতি দেয়। মূলত স্টোচ্যাস্টিক সূচক এবং সুপারট্রেন্ড সূচকগুলির সংমিশ্রণ দ্বারা ক্রয় / বিক্রয় সময় নির্ধারণ করে, ইএমএ গড়রেখার সাহায্যে বাজারের মূল প্রবণতা নির্ধারণ করে।
এই কৌশলটি মূলত নিম্নলিখিত কয়েকটি সূচক নিয়ে গঠিতঃ
EMA গড় লাইন: EMA 25, 50, 100 এবং 200 চারটি গড় লাইন ব্যবহার করে মূল প্রবণতা নির্ধারণ করুন। EMA25 এ EMA50 এবং EMA100 এ EMA200 অতিক্রম করলে এটি একটি উচ্চ প্রবণতা, অন্যথায় এটি একটি নিম্ন প্রবণতা।
সুপারট্রেন্ড ট্রেন্ড ট্র্যাকিং সূচকঃ ফ্যাক্টর 3 এবং এটিআর 10 প্যারামিটারগুলি নির্ধারণ করে যে বর্তমান দামটি একটি উত্থান বা পতনের প্রবণতা রয়েছে কিনা। যখন সুপারট্রেন্ডটি সবুজ হয় তখন উত্থান হয়, লালটি হ্রাস পায়।
স্টোক্যাস্টিক গতির সূচকঃ %K 8 এবং %D 3, সিদ্ধান্ত নিন যে স্টোক্যাস্টিকটি গোল্ডফোর্ক বা ডেডফোর্ক প্রপঞ্চ সৃষ্টি করেছে কিনা। %K লাইনটি যখন নীচে থেকে %D লাইনটি অতিক্রম করে তখন এটি গোল্ডফোর্ক সংকেত, বিপরীতে ডেডফোর্ক সংকেত।
ক্রয় কৌশল হল: EMA দেখায় উর্ধমুখী প্রবণতা + Supertrend দেখায় উর্ধমুখী প্রবণতা + Stochastic গোল্ডেন ফর্ক সময় বিক্রয় কৌশল হলঃ EMA নিচে নেমে যাচ্ছে + Supertrend নিচে নেমে যাচ্ছে + Stochastic Dead Forks সময়
এই কৌশলটি ট্রেন্ড, গতিশীলতা এবং ব্রেকিংয়ের তিনটি সূচককে একত্রিত করে, যা বাজারের গতি এবং ক্রয়-বিক্রয় পয়েন্টগুলির তুলনামূলক নির্ভরযোগ্যতা নির্ধারণ করে।
এই কৌশলটির প্রধান সুবিধাগুলো হলঃ
বিভিন্ন সূচকের সমন্বয়ে, বিচার-বিবেচনার দক্ষতার সাথে, ভুয়া ব্রেকআউটগুলিকে কার্যকরভাবে ফিল্টার করা যায়।
গতিশীলতা সূচক যোগ করা একটি পাল্টা পয়েন্ট নির্ধারণ করতে পারে।
বিভিন্ন বাজারের পরিবেশের জন্য কাস্টমাইজযোগ্য প্যারামিটার
একটি অপেক্ষাকৃত কার্যকর স্টপ-ড্যাম্প এবং স্টপ-স্টপ সেটিং রয়েছে।
এটি উচ্চ পর্যায়ের সূর্যের আলোর মত রিটার্নিং করতে পারে, যা আরও কার্যকর।
এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ
প্যারামিটার সেটিং ভুল হলে ট্রেডিং ফ্রিকোয়েন্সি বা সিগন্যাল অস্থিরতা হতে পারে। প্যারামিটারগুলিকে সামঞ্জস্য করতে হবে।
এই ক্ষেত্রে, নির্বাচন করার সময় ভুল সিদ্ধান্ত নেওয়ার সম্ভাবনা রয়েছে। আপনি আরও কিছু সূচক যুক্ত করার কথা ভাবতে পারেন।
স্টপ লস স্টোক্যাস্টিক সূচকটির চূড়ান্ত মান হিসাবে সেট করা হয়েছে, এটি খুব কাছাকাছি হতে পারে, যথাযথ প্রশস্তকরণ বিবেচনা করা যেতে পারে।
রিটার্নিং ডেটা অপর্যাপ্ত, যা প্যারামিটার সামঞ্জস্যের উপর প্রভাব ফেলতে পারে, রিটার্নিং সময়কাল বাড়ানো উচিত।
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে অপ্টিমাইজ করা যেতে পারেঃ
১. আরও বেশি প্যারামিটার সমন্বয় পরীক্ষা করে সর্বোত্তম প্যারামিটার খুঁজে বের করা। যেমন সুপারট্রেন্ডের ফ্যাক্টর প্যারামিটারগুলিকে সামঞ্জস্য করা।
২. আরও কিছু সূচক যুক্ত করা হয়েছে, যেমন শক্তি সূচক, ওঠানামা সূচক ইত্যাদি, যাতে ভুল সিদ্ধান্তের সম্ভাবনা কম থাকে।
৩. বিভিন্ন ধরণের স্টপ লস পরীক্ষা করা যায়, যেমন একটি নির্দিষ্ট শতাংশে স্টপ লিন নির্ধারণ করা।
৪. ডায়নামিক স্টপিংয়ের মাধ্যমে আরও বেশি মুনাফা অর্জনের জন্য স্টপিং পদ্ধতির অপ্টিমাইজেশন।
৫. কৌশল প্রয়োগের সুযোগ বাড়ানো, যেমন আরও বেশি ট্রেডিং জাতের জন্য চেষ্টা করা বা উচ্চতর চক্রের জন্য ব্যবহার করা।
এই কৌশলটির সামগ্রিক ধারণা পরিষ্কার, সূচক নির্বাচন যুক্তিসঙ্গত, প্রবণতা ট্র্যাকিং এবং ব্রেকডাউন ট্রেডিং বাস্তবায়ন করে, রিমেকিংয়ের কার্যকারিতা ভাল। তবে এখনও অপ্টিমাইজেশনের জায়গা রয়েছে, প্যারামিটারগুলি সামঞ্জস্য করে, আরও ঝাঁকুনি সূচক যুক্ত করে, স্টপ লস স্টপ পদ্ধতি উন্নত করে ইত্যাদির মাধ্যমে একাধিক দিকের অপ্টিমাইজেশন করা যায়, যা কৌশলটিকে আরও স্থিতিশীল এবং নির্ভরযোগ্য করে তোলে।
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-06 07:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Supertrend + Stoch Strategy", overlay=true)
// ---inputs---
pl = input(1.5, title="P/L", minval=0.1)
lossPercentage = input(1, title="Loss Percentage", minval=1, maxval=100)
atrPeriod = input(10, "ATR Length")
factor = input(3, "Supertrend Factor")
periodK = input(8, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
ema1l = input(25, title="EMA 1 Length", minval=1)
ema2l = input(50, title="EMA 2 Length", minval=1)
ema3l = input(100, title="EMA 3 Length", minval=1)
ema4l = input(200, title="EMA 4 Length", minval=1)
// ---lines---
ema1 = ema(close, ema1l)
ema2 = ema(close, ema2l)
ema3 = ema(close, ema3l)
ema4 = ema(close, ema4l)
trendUpper = ema1 > ema2 and ema3 > ema4
trendLower = ema1 < ema2 and ema3 < ema4
[supertrend, direction] = supertrend(factor, atrPeriod)
supertrendUpper = direction < 0
supertrendLower = direction > 0
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
stochCrossOver = crossover(k, d)
stochCrossUnder = crossunder(k, d)
// ---plot---
plot(ema1, color=color.green)
plot(ema2, color=color.orange)
plot(ema3, color=color.blue)
plot(ema4, color=color.purple)
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0 ? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 95), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 95), fillgaps=false)
// ---stop place compute---
edge = 0. // periodly high/low
edge := stochCrossOver ? high : stochCrossUnder ? low : k > d ? max(edge[1], high) : k < d ? min(edge[1], low) : edge[1]
// plot(edge)
// ---trade condition---
// longCond = trendUpper and supertrendUpper and stochCrossOver
// shortCond = trendLower and supertrendLower and stochCrossUnder
longCond = trendUpper and supertrendUpper and stochCrossOver and strategy.position_size == 0
shortCond = trendLower and supertrendLower and stochCrossUnder and strategy.position_size == 0
// ---stop & take---
stop = 0.
stop := nz(stop[1], stop)
take = 0.
take := nz(take[1], take)
if longCond
stop := edge[1]
take := close + (close - stop) * pl
if shortCond
stop := edge[1]
take := close - (stop - close) * pl
// ---trade---
qty = strategy.equity / abs(stop - close) / 100 * lossPercentage
strategy.entry("Buy", strategy.long, when=longCond, qty=qty)
strategy.exit("Close Buy","Buy", limit=take, stop=stop)
strategy.entry("Sell", strategy.short, when=shortCond, qty=qty)
strategy.exit("Close Sell","Sell", limit=take, stop=stop)
stopLine = plot(strategy.position_size != 0 ? stop : na, color=color.red, style=plot.style_linebr)
takeLine = plot(strategy.position_size != 0 ? take : na, color=color.green, style=plot.style_linebr)
entryLine = plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.blue, style=plot.style_linebr)
fill(entryLine, stopLine, color.new(color.red, 90), fillgaps=false)
fill(entryLine, takeLine, color.new(color.green, 90), fillgaps=false)