সুপারট্রেন্ড বেসিক কৌশল হল একটি নির্ভরযোগ্য এবং লাভজনক অ্যালগরিদমিক ট্রেডিং কৌশল যা তিনটি শক্তিশালী সূচকের উপর ভিত্তি করে তৈরি করা হয়ঃ সুপারট্রেন্ড সূচক (ATR), অপেক্ষাকৃত শক্তিশালী সূচক (RSI) এবং সূচকীয় চলমান গড় (EMA) । এই কৌশলটি বাজারের প্রবণতার দিকনির্দেশ এবং শক্তি সনাক্ত করতে, বাজারে প্রবেশের সর্বোত্তম পয়েন্টে প্রবেশ করতে এবং স্টপ লস বা স্টপস্টপ পয়েন্টে পৌঁছানোর পরে বাজার থেকে বেরিয়ে আসতে সহায়তা করে।
এই কৌশলটি সুপারট্রেন্ডিং সূচক ব্যবহার করে দামগুলি বাড়ছে বা হ্রাস পাচ্ছে কিনা তা নির্ধারণ করে। সুপারট্রেন্ডিং সূচকটি গড় বাস্তব তরঙ্গের উপর ভিত্তি করে এবং একটি ফ্যাক্টর, যখন দামগুলি সুপারট্রেন্ডের উপরে থাকে এবং যখন দামগুলি সুপারট্রেন্ডের নীচে থাকে তখন তা হ্রাস পায়।
তুলনামূলকভাবে দুর্বল সূচকটি অতিরিক্ত উত্তাপ এবং অতিরিক্ত ক্রয় বা অতিরিক্ত বিক্রয় কিনা তা সনাক্ত করার জন্য ব্যবহৃত হয়। RSI যখন 50 এর উপরে থাকে তখন শক্তিশালী বাজার, বিপরীতে দুর্বল। RSI ফিল্টার করা যায় ভুয়া ব্রেকিংয়ের জন্য।
সূচকীয় চলমান গড় দীর্ঘমেয়াদী প্রবণতার দিকনির্দেশের জন্য ব্যবহৃত হয়। দাম যখন ইএমএর উপরে থাকে তখন এটি একটি উত্থান প্রবণতা এবং যখন এটি নীচে থাকে তখন এটি একটি পতনের প্রবণতা। এটি ট্রেডিংয়ের দিকনির্দেশ নিশ্চিত করতে ব্যবহার করা যেতে পারে।
এই কৌশলটির ট্রেডিং সিগন্যাল নিম্নরূপঃ
মাল্টি-হেড প্রবেশঃ সুপার ট্রেন্ডের চেয়ে বেশি দাম এবং আরএসআই 50 এর চেয়ে বেশি এবং ইএমএর চেয়ে বেশি দামের সাথে আরও বেশি করুন মাল্টি-হেড আউটঃ সুপার ট্রেন্ডের নীচে বা স্টপ-ওভার বা স্টপ-ওভার বন্ধ
খালি মাথায় প্রবেশঃ মূল্য সুপারট্রেন্ডের নিচে এবং RSI 50 এর নিচে এবং মূল্য EMA এর নিচে যখন খালি থাকে
শূন্যপদ প্রস্থানঃ দাম সুপার ট্রেন্ডের উপরে বা বন্ধ বা বন্ধ হয়ে যায়
স্টপ লস এবং স্টপ স্টপগুলি প্রবেশ মূল্যের শতাংশ হিসাবে সেট করা যেতে পারে
এই কৌশলটির সুবিধাগুলো হলঃ
তিনটি সূচকের সমন্বয় ব্যবহার করে ট্রেন্ডের দিকনির্দেশনা নির্ভরযোগ্যভাবে নির্ধারণ করা
সুপারট্রেন্ডিং সূচকগুলি স্পষ্টভাবে উত্থান এবং পতনের প্রবণতা নির্ধারণ করে
আরএসআই সূচকটি ওভারব্রেকিং এড়াতে ফাল্গ ব্রেকিং ফিল্টার করে
EMA ব্যবহার করা যেতে পারে বড় ট্রেন্ডের দিকনির্দেশের জন্য
কৌশলগত সংকেত সহজ, স্পষ্ট এবং পরিচালনা সহজ
কাস্টমাইজড ATR চক্র, RSI প্যারামিটার এবং EMA চক্র অপ্টিমাইজ করা
ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস স্টপ সেট করা যায়
বিভিন্ন বাজারের অবস্থার সাথে সামঞ্জস্য রেখে অতিরিক্ত বা অতিরিক্ত কাজ করা যায়
যে কোন সময় চক্র ব্যবহার করা যেতে পারে
এই কৌশলটির প্রধান ঝুঁকিগুলো হলঃ
সুপারট্রেন্ড সূচকগুলি যখন একটি বড় প্রবণতা বিপরীত হয়, তখন এটি বিলম্বিত হয়, যার ফলে ক্ষতি হতে পারে
স্টপ লস ওভারফ্লো সেট করা বড় ট্রেন্ড ধরতে পারে না
ইএমএ-র কাছে কোন রিভার্স পয়েন্ট নেই
এই ঘটনার পিছনে কোন কারণ নেই।
কিছু অস্থিরতা এবং সময় ট্রেডিং ঝুঁকি আছে
সমাধানঃ
অন্যান্য সূচকের সাথে মিলিতভাবে, প্রবণতা বিপরীতমুখী
অপ্টিমাইজেশন স্টপ লস স্টপ প্যারামিটার
অন্যান্য সূচকের সাথে মিলিতভাবে, প্রবণতা বিপরীতমুখী
বিপরীতমুখী সূচক
পজিশন ম্যানেজমেন্টের সঠিক সমন্বয়
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
সংবেদনশীলতা এবং স্থায়িত্বের মধ্যে ভারসাম্য বজায় রাখতে ATR চক্রের প্যারামিটারগুলি অপ্টিমাইজ করুন
আরএসআই প্যারামিটারগুলিকে অপ্টিমাইজ করুন, সঠিকতা বাড়ান
EMA চক্রের অপ্টিমাইজেশান, বিভিন্ন বাজারের সাথে সামঞ্জস্যপূর্ণ
অন্য নির্দেশক যোগ করুন যেমন MACD, KD ইত্যাদি
পরিসংখ্যান থেকে বিচ্যুতি বাড়ছে
ঢেউ তত্ত্বের সাথে একত্রে বিচার বিপরীত
মেশিন লার্নিং এবং অন্যান্য অ্যালগরিদম ব্যবহার করে গতিশীল অপ্টিমাইজেশান প্যারামিটার
উন্নত স্টপ অ্যালগরিদম যুক্ত করা হয়েছে, যেমন ট্র্যাকিং স্টপ, মোবাইল স্টপ ইত্যাদি
পজিশন ম্যানেজমেন্টের অপ্টিমাইজেশান, বিভিন্ন বাজারের অস্থিরতার সাথে সামঞ্জস্যপূর্ণ
আরো জটিল ইন-আউট অবস্থার সমন্বয় পরীক্ষা করা
সুপারট্রেন্ড বেসিক কৌশলটি সুপারট্রেন্ড, আরএসআই এবং ইএমএ তিনটি বড় সূচককে একত্রিত করে একটি সহজ ব্যবহারিক প্রবণতা ট্র্যাকিং কৌশল গঠন করে। এটি প্রবণতার দিকটি স্পষ্টভাবে সনাক্ত করতে পারে, মিথ্যা সংকেতগুলি ফিল্টার করতে পারে, বড় প্রবণতা নিশ্চিত করতে পারে। এটির সাথে স্পষ্ট প্রবেশ এবং প্রস্থান নিয়ম এবং স্টপ লস স্টপ সেট রয়েছে। এই কৌশলটি পরিচালনা করা সহজ, নির্ভরযোগ্য লাভজনক, যে কোনও সময়কালের জন্য উপযুক্ত। সূচক সংখ্যা অপ্টিমাইজ করা, প্রবণতা বিচারক প্যারামিটার যুক্ত করা, স্টপ লস অ্যালগরিদম উন্নত করা ইত্যাদির মাধ্যমে এই কৌশলটি আরও শক্তিশালী ব্যবসায়ের সিস্টেমে অনুকূলিত করা যেতে পারে।
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JS_TechTrading
//@version=5
// strategy("Supertrend", overlay=true,default_qty_type =strategy.percent_of_equity,default_qty_value = 1,process_orders_on_close = false)
// group string////
var string group_text000="Choose Strategy"
var string group_text0="Supertrend Settings"
var string group_text0000="Ema Settings"
var string group_text00="Rsi Settings"
var string group_text1="Backtest Period"
var string group_text2="Trade Direction"
// var string group_text3="Quantity Settings"
var string group_text4="Sl/Tp Settings"
////////////////////
option_ch=input.string('Pullback',title = "Type Of Strategy",options =['Pullback','Simple'])
//atr period input supertrend
atrPeriod = input(10, "ATR Length",group = group_text0)
factor = input.float(3.0, "Factor", step = 0.01,group=group_text0)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
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, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)
long=direction < 0 ? supertrend : na
short=direction < 0? na : supertrend
longpos=false
shortpos=false
longpos :=long?true :short?false:longpos[1]
shortpos:=short?true:long?false:shortpos[1]
fin_pullbuy= (ta.crossunder(low[1],long) and long and high>high[1])
fin_pullsell=(ta.crossover(high[1],short) and short and low<low[1])
//Ema 1
on_ma=input.bool(true,"Ema Condition On/Off",group=group_text0000)
ma_len= input.int(200, minval=1, title="Ema Length",group = group_text0000)
ma_src = input.source(close, title="Ema Source",group = group_text0000)
ma_out = ta.ema(ma_src, ma_len)
ma_buy=on_ma?close>ma_out?true:false:true
ma_sell=on_ma?close<ma_out?true:false:true
// rsi indicator and condition
// Get user input
en_rsi = input.bool(true,"Rsi Condition On/Off",group = group_text00)
rsiSource = input(title='RSI Source', defval=close,group = group_text00)
rsiLength = input(title='RSI Length', defval=14,group = group_text00)
rsiOverbought = input(title='RSI BUY Level', defval=50,group = group_text00)
rsiOversold = input(title='RSI SELL Level', defval=50,group = group_text00)
// Get RSI value
rsiValue = ta.rsi(rsiSource, rsiLength)
rsi_buy=en_rsi?rsiValue>=rsiOverbought ?true:false:true
rsi_sell=en_rsi?rsiValue<=rsiOversold?true:false:true
// final condition
buy_cond=option_ch=='Simple'?long and not(longpos[1]) and rsi_buy and ma_buy:option_ch=='Pullback'?fin_pullbuy and rsi_buy and ma_buy:na
sell_cond=option_ch=='Simple'?short and not(shortpos[1]) and rsi_sell and ma_sell:option_ch=='Pullback'?fin_pullsell and rsi_sell and ma_sell:na
//backtest engine
start = input(timestamp('2005-01-01'), title='Start calculations from',group=group_text1)
end=input(timestamp('2045-03-01'), title='End calculations',group=group_text1)
time_cond =true
// Make input option to configure trade direction
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both',group = group_text2)
// Translate input into trading conditions
longOK = (tradeDirection == "Long") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short") or (tradeDirection == "Both")
// strategy start
if buy_cond and longOK and time_cond and strategy.position_size==0
strategy.entry('long',direction = strategy.long)
if sell_cond and shortOK and time_cond and strategy.position_size==0
strategy.entry('short',direction =strategy.short)
// fixed percentage based stop loss and take profit
// User Options to Change Inputs (%)
stopPer = input.float(1.0,step=0.10, title='Stop Loss %',group =group_text4) / 100
takePer = input.float(1.0,step =0.10, title='Take Profit %',group =group_text4) / 100
// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0
strategy.exit(id='Close Long',stop=longStop, limit=longTake)
if strategy.position_size < 0
strategy.exit(id='Close Short',stop=shortStop, limit=shortTake)
//PLOT FIXED SLTP LINE
plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Long Fixed SL')
plot(strategy.position_size < 0 ? shortStop :na, style=plot.style_linebr, color=color.new(color.red, 0), linewidth=1, title='Short Fixed SL')
plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Long Take Profit')
plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.new(color.green, 0), linewidth=1, title='Short Take Profit')
//