সুপার ট্রেন্ড দৈনিক বিপরীত কৌশল


সৃষ্টির তারিখ: 2024-02-22 16:22:28 অবশেষে সংশোধন করুন: 2024-02-22 16:22:28
অনুলিপি: 0 ক্লিকের সংখ্যা: 724
1
ফোকাস
1617
অনুসারী

সুপার ট্রেন্ড দৈনিক বিপরীত কৌশল

ওভারভিউ

সুপার ট্রেন্ড ডেইলি রিভার্সাল স্ট্র্যাটেজি (Super Trend Daily Reversal Strategy) হল একটি পরিমাণগত ট্রেডিং কৌশল যা সুপার ট্রেন্ডের সূচক ব্যবহার করে বাজারের প্রবণতা নির্ধারণ করে, দামের ব্রেকডাউন এবং গড় বাস্তব ওঠানামা পরিসীমা গণনা বন্ধ করে দেয় এবং সুপার ট্রেন্ডের সংকেতগুলিকে ফিল্টার করার জন্য দামের পরিবর্তনের হার ব্যবহার করে। এই কৌশলটি দৈনিক এবং উচ্চতর সময়কালীন চক্রের জন্য প্রযোজ্য, যা ডিজিটাল মুদ্রা এবং শেয়ারের মতো বাজারে ব্যবহার করা যেতে পারে।

কৌশল নীতি

এই কৌশলটির কেন্দ্রীয় সূচক হল সুপার ট্রেন্ড সূচক (Super Trend Indicator) । সুপার ট্রেন্ড সূচকটি গড় বাস্তব ওঠানামা (ATR) এর উপর ভিত্তি করে তৈরি করা হয়েছে, যা বাজারের প্রবণতার দিকটি আরও স্পষ্টভাবে নির্ধারণ করতে পারে। যখন দামগুলি সুপার ট্রেন্ডের ট্র্যাকটি ভেঙে দেয় তখন এটি বিপরীতমুখী সংকেত এবং যখন এটি ট্র্যাকটি ভেঙে দেয় তখন এটি একটি আশাবাদী সংকেত।

এই কৌশলটি সুপারট্রেন্ডের সূচকগুলিকে ফিল্টার করার জন্য মূল্যের পরিবর্তনের হার সূচক (ROC) ব্যবহার করে। এটি কার্যকর নয় এমন সংকেতগুলি এড়াতে। যখন দামের অস্থিরতা বেশি থাকে তখনই সুপারট্রেন্ডের সংকেতে অংশ নেওয়া উচিত, অন্যথায় অংশ নেওয়া উচিত নয়।

স্টপ লস-এর ক্ষেত্রে, এই কৌশলটি দুটি ধরণের স্টপ অফার করেঃ ফিক্সড স্টপ লস অনুপাত এবং এটিআর-ভিত্তিক স্বয়ংক্রিয় স্ক্রোলড স্টপ লস। ফিক্সড স্টপ লস সহজ এবং সরাসরি, এটিআর স্টপ লস-এর পরিধি বাজারের অস্থিরতার সাথে সামঞ্জস্য করতে পারে।

প্রবেশের শর্ত হল সুপারট্রেন্ডের সূচকটি বিপরীত হয় এবং দামের পরিবর্তনের হার সূচকটি ফিল্টারের মধ্য দিয়ে যায়। প্রস্থান শর্ত হল সুপারট্রেন্ডটি আবার বিপরীত হয় বা স্টপ লিনিয়ারটি ভেঙে যায়। এই কৌশলটি ট্রেন্ড ট্র্যাকিং নীতি অনুসরণ করে, প্রতিটি দিকের জন্য কেবলমাত্র একটি অবস্থান অনুমোদিত।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির সবচেয়ে বড় সুবিধা হল সুপার ট্রেন্ডিং সূচক ব্যবহার করে ট্রেন্ডের দিকনির্দেশের উচ্চতর স্পষ্টতা এবং স্থায়িত্ব এবং সাধারণ মুভিং এভারেজের তুলনায় কম গোলমাল। এছাড়াও, কৌশলটি মূল্য পরিবর্তনের হার সূচককে কার্যকরভাবে ফিল্টার করে যা কিছু মিথ্যা সংকেতকে কার্যকরভাবে ফিল্টার করে।

এটিআর স্বনির্ধারিত ক্ষতির ব্যবস্থাও এই কৌশলকে আরও বিস্তৃত বাজার পরিবেশে অভিযোজিত করতে দেয়। অস্থিরতা বাড়ার সাথে সাথে ক্ষতির অবসানটি স্বয়ংক্রিয়ভাবে প্রশস্ত হয়ে যায়, সর্বাধিক মুনাফা লক করে দেয়।

পরীক্ষার ফলাফল অনুসারে, এই কৌশলটি একটি বুল মার্কেটে ভাল কাজ করে। দীর্ঘ লাইন প্রবণতা, যা একটি বড় পরিমাণে এবং দীর্ঘ ক্রমাগত মুনাফা চক্রের মধ্যে একটি উচ্চ হার।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির প্রধান ঝুঁকি হ’ল ট্রেন্ড রিভার্স ভুল বিচার করা, যার ফলে রিভার্সাল সিগন্যাল মিস করা বা অপ্রয়োজনীয় রিভার্সাল সিগন্যাল উত্পন্ন হতে পারে। এটি সাধারণত ঘটে যখন দামগুলি মূল সমর্থন বা প্রতিরোধের অঞ্চলের কাছাকাছি পুনরাবৃত্তি করে।

এছাড়াও, স্টপ সেটিং খুব হালকা হলে ক্ষতির পরিমাণ বাড়তে পারে। এটিআর স্টপ মার্কেটের অস্থিরতার সাথে সামঞ্জস্যপূর্ণ, তাই বাজারের অপ্রত্যাশিত ঘটনার সময় স্টপটি আরও প্রশস্ত হতে পারে।

উপরোক্ত ঝুঁকির জন্য, এটিআর গণনা চক্রটি যথাযথভাবে সংক্ষিপ্ত করা যেতে পারে বা এটিআর স্টপ লসারের গুণিতকটি সামঞ্জস্য করা যেতে পারে। এছাড়াও অতিরিক্ত সূচকগুলি যুক্ত করা যেতে পারে যা মূল সমর্থনকারী প্রতিরোধের অঞ্চলগুলি নির্ধারণ করে যাতে সেগুলি বিভ্রান্তিকর সংকেত না দেয়।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ

  1. সুপার ট্রেন্ডিং সূচকের প্যারামিটারগুলিকে সামঞ্জস্য করুন, এটিআর চক্র এবং এটিআর গুণকগুলিকে অপ্টিমাইজ করুন, যাতে সুপার ট্রেন্ডিং লাইনগুলি আরও মসৃণ হয়।

  2. মূল্য পরিবর্তনের হার সূচকের প্যারামিটার, অপ্টিমাইজেশান চক্র এবং পরিবর্তনের হার থ্রেশহোল্ড, মিথ্যা সংকেত কমানো।

  3. স্টপ ট্র্যাকিং বা ফিক্সড স্টপের স্টপ এন্টিটি অপ্টিমাইজ করার মতো বিভিন্ন স্টপ মেকানিজম ব্যবহার করে দেখুন।

  4. অতিরিক্ত বিচার সূচক যুক্ত করুন, মূল সমর্থন প্রতিরোধ চিহ্নিত করুন এবং প্রবণতা বিপরীত বিচার ভুল এড়ান।

  5. বিভিন্ন জাতের প্যারামিটার সেটিং এবং প্রভাব পরীক্ষা করে, সর্বোত্তম প্যারামিটার সমন্বয় খুঁজে বের করা।

  6. রিটার্নিং অপ্টিমাইজেশান, সর্বোত্তম প্যারামিটার সেটিং খুঁজে বের করা।

সারসংক্ষেপ

সুপারট্রেন্ডেড ডায়ালাইন রিভার্স কৌশলটি সামগ্রিকভাবে একটি স্থিতিশীল এবং নির্ভরযোগ্য প্রবণতা-অনুসরণ কৌশল। এটি সুপারট্রেন্ডেড সূচক এবং মূল্য পরিবর্তনের হার সূচকগুলির সাথে মিলিত ফিল্টার করে, যা মধ্য-দীর্ঘ-রেখা প্রবণতার দিকটি কার্যকরভাবে সনাক্ত করতে পারে। এটিআর স্ব-অনুকূলিত স্টপ-ডাউন ব্যবস্থাও এটিকে বেশিরভাগ বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে সক্ষম করে। প্যারামিটার সেটিংটি আরও অনুকূলিত করে এবং বিচার সূচকগুলি বাড়িয়ে এই কৌশলটির স্থায়িত্ব এবং লাভজনকতা বাড়ানো যেতে পারে।

কৌশল সোর্স কোড
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Super Trend Daily BF 🚀", overlay=true, precision=2, 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 ///////////////
_1 = input(false,  "════════ Test Period ═══════")
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

///////////// Super Trend /////////////
_2 = input(false,  "══════ Super Trend ══════")
length = input(title="ATR Period", type=input.integer, defval=3)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=1.3)

atr = mult * atr(length)

longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop :=  close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : dir == 1 and close < longStopPrev ? -1 : dir

///////////// Rate Of Change ///////////// 
_3 = input(false,  "══════ Rate of Change ══════")
source = close
roclength = input(30, "ROC Length",  minval=1)
pcntChange = input(6, "ROC % Change", 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 = dir == 1 and dir[1] == -1 and isMoving()
short = dir == -1 and dir[1] == 1 and isMoving()

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])

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

/////////////// Dynamic ATR Stop Losses ///////////////
_4 = input(false,  "════════ Stop Loss ═══════")
SL_type = input("Fixed", options=["Fixed", "ATR Derived"], title="Stop Loss Type")
sl_inp = input(6.0, title='Fixed Stop Loss %') / 100
atrLkb = input(20, minval=1, title='ATR Stop Period')
atrMult = input(1.5, step=0.25, title='ATR Stop Multiplier') 
atr1 = atr(atrLkb)

longStop1 = 0.0
longStop1 :=  short_signal ? na : long_signal ? close - (atr1 * atrMult) : longStop1[1]
shortStop1 = 0.0
shortStop1 := long_signal ? na : short_signal ? close + (atr1 * atrMult) : shortStop1[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)
    strategy.entry("S", strategy.short, when=short)
    strategy.exit("L SL", "L", stop = SL_type == "Fixed" ? long_sl : longStop1, when=since_longEntry > 0)
    strategy.exit("S SL", "S", stop = SL_type == "Fixed" ? short_sl : shortStop1, when=since_shortEntry > 0)

/////////////// Plotting /////////////// 
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)
bgcolor(isMoving() ? dir == 1 ? color.lime : color.red : color.white , transp=80)