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

লেখক:চাওঝাং, তারিখঃ ২০২৪-০২-২২ 16:22:28
ট্যাগঃ

img

সারসংক্ষেপ

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

কৌশলগত যুক্তি

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

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

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

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

সুবিধা বিশ্লেষণ

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

এটিআর অভিযোজিত স্টপ লস প্রক্রিয়াটি কৌশলটিকে আরও বিস্তৃত বাজারের পরিবেশে অভিযোজিত করার অনুমতি দেয়। লাভকে সর্বাধিকীকরণের জন্য স্টপ লস স্বয়ংক্রিয়ভাবে বৃদ্ধি পাবে।

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

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

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

এছাড়াও, একটি স্টপ লস যা খুব প্রশস্ত সেট করা হয় তাও বৃহত্তর ক্ষতির দিকে পরিচালিত করতে পারে। এটিআর স্টপ লস বাজার অস্থিরতার সাথে সামঞ্জস্য করে, তাই বাজারের ইভেন্টগুলির সময় স্টপগুলি আরও প্রশস্ত করা যেতে পারে।

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

অপ্টিমাইজেশান নির্দেশাবলী

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

  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)

আরো