মাল্টিপল স্টপ লস কৌশল অনুসরণ করে দিনের মধ্যে প্রবণতা

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-২৭ ১৫ঃ৩০ঃ০৭
ট্যাগঃ

img

সারসংক্ষেপ

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

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

এই কৌশলটির মূলটি মাল্টিপল এটিআর স্টপ লস প্রক্রিয়াতে রয়েছে। এটি 3 টি গ্রুপের এটিআর স্টপ সেট করে - 5 টি এটিআর, 10 টি এটিআর এবং 15 টি এটিআর। যখন দাম এই 3 টি স্টপকে নীচে ভেঙে দেয়, এটি একটি প্রবণতা বিপরীত নির্দেশ করে, অবস্থান প্রস্থান করে। এই জাতীয় ট্রিপল স্টপ সেটিং কার্যকরভাবে স্বল্পমেয়াদী গোলমাল থেকে মিথ্যা সংকেতগুলি ফিল্টার করে।

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

এন্ট্রি সিগন্যালটি যখন মূল্য 3 টি এটিআর স্টপ অতিক্রম করে তখন ট্রিগার হয়। যখন মূল্য কোনও এটিআর স্টপ বা রেঙ্কো ইট রঙ পরিবর্তন করে তখন বেরিয়ে আসে।

সুবিধা

  • ট্রিপল স্টপগুলি কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করে
  • উন্নত রেনকো ইটগুলি প্রাথমিকভাবে থামতে সক্ষম করে
  • প্রবণতা এবং ইট চার্ট একত্রিত করা প্রবণতা ধরা নিশ্চিত করে
  • মাল্টি-টাইমফ্রেম বিশ্লেষণ প্রবণতা সনাক্তকরণকে আরো নির্ভরযোগ্য করে তোলে
  • সামঞ্জস্যযোগ্য পরামিতি বিভিন্ন বাজারের ব্যবস্থার জন্য উপযুক্ত

ঝুঁকি এবং উন্নতি

প্রধান ঝুঁকি হ'ল স্টপ লস অনুপ্রবেশ যা বর্ধিত ক্ষতির কারণ হয়। এর মাধ্যমে অপ্টিমাইজ করা যায়ঃ

  • এটিআর স্টপ মাল্টিপলগুলি সামঞ্জস্য করুন - শক্তিশালী প্রবণতাগুলিতে শিথিল করুন এবং দুর্বল প্রবণতাগুলিতে শক্ত করুন
  • সংবেদনশীলতা এবং স্থিতিশীলতা ভারসাম্য বজায় রাখার জন্য Renko ইট ATR সময়কাল সূক্ষ্ম-ট্যুন করুন
  • নির্ভরযোগ্যতার জন্য অন্যান্য স্টপ সূচক যোগ করুন যেমন ডোনচিয়ান চ্যানেল
  • সংহতকরণের সময় হুইপস এড়ানোর জন্য ফিল্টার প্রয়োগ করুন

সিদ্ধান্ত

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


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Lancelot vstop intraday strategy", overlay=true, currency=currency.NONE, initial_capital = 100, commission_type=strategy.commission.percent, 
     commission_value=0.075, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

///Volatility Stop///
lengtha = input(title="Vstop length", type=input.integer, defval=26, minval=1)
mult1a = 5

atr_a = atr(lengtha)
max1a = 0.0
min1a = 0.0
is_uptrend_preva = false
stopa = 0.0
vstop_preva = 0.0
vstop1a = 0.0
is_uptrenda = false
is_trend_changeda = false
max_a = 0.0
min_a = 0.0
vstopa = 0.0
max1a := max(nz(max_a[1]), ohlc4)
min1a := min(nz(min_a[1]), ohlc4)
is_uptrend_preva := nz(is_uptrenda[1], true)
stopa := is_uptrend_preva ? max1a - mult1a * atr_a : min1a + mult1a * atr_a
vstop_preva := nz(vstopa[1])
vstop1a := is_uptrend_preva ? max(vstop_preva, stopa) : min(vstop_preva, stopa)
is_uptrenda := ohlc4 - vstop1a >= 0
is_trend_changeda := is_uptrenda != is_uptrend_preva
max_a := is_trend_changeda ? ohlc4 : max1a
min_a := is_trend_changeda ? ohlc4 : min1a
vstopa := is_trend_changeda ? is_uptrenda ? max_a - mult1a * atr_a : min_a + mult1a * atr_a : 
   vstop1a

///Volatility Stop///
lengthb = input(title="Vstop length", type=input.integer, defval=26, minval=1)
mult1b = 10

atr_b = atr(lengthb)
max1b = 0.0
min1b = 0.0
is_uptrend_prevb = false
stopb = 0.0
vstop_prevb = 0.0
vstop1b = 0.0
is_uptrendb = false
is_trend_changedb = false
max_b = 0.0
min_b = 0.0
vstopb = 0.0
max1b := max(nz(max_b[1]), ohlc4)
min1b := min(nz(min_b[1]), ohlc4)
is_uptrend_prevb := nz(is_uptrendb[1], true)
stopb := is_uptrend_prevb ? max1b - mult1b * atr_b : min1b + mult1b * atr_b
vstop_prevb := nz(vstopb[1])
vstop1b := is_uptrend_prevb ? max(vstop_prevb, stopb) : min(vstop_prevb, stopb)
is_uptrendb := ohlc4 - vstop1b >= 0
is_trend_changedb := is_uptrendb != is_uptrend_prevb
max_b := is_trend_changedb ? ohlc4 : max1b
min_b := is_trend_changedb ? ohlc4 : min1b
vstopb := is_trend_changedb ? is_uptrendb ? max_b - mult1b * atr_b : min_b + mult1b * atr_b : 
   vstop1b
   
///Volatility Stop///
lengthc = input(title="Vstop length", type=input.integer, defval=26, minval=1)
mult1c = 15

atr_c = atr(lengthc)
max1c = 0.0
min1c = 0.0
is_uptrend_prevc = false
stopc = 0.0
vstop_prevc = 0.0
vstop1c = 0.0
is_uptrendc = false
is_trend_changedc = false
max_c = 0.0
min_c = 0.0
vstopc = 0.0
max1c := max(nz(max_c[1]), ohlc4)
min1c := min(nz(min_c[1]), ohlc4)
is_uptrend_prevc := nz(is_uptrendc[1], true)
stopc := is_uptrend_prevc ? max1c - mult1c * atr_c : min1c + mult1c * atr_c
vstop_prevc := nz(vstopc[1])
vstop1c := is_uptrend_prevc ? max(vstop_prevc, stopc) : min(vstop_prevc, stopc)
is_uptrendc := ohlc4 - vstop1c >= 0
is_trend_changedc := is_uptrendc != is_uptrend_prevc
max_c := is_trend_changedc ? ohlc4 : max1c
min_c := is_trend_changedc ? ohlc4 : min1c
vstopc := is_trend_changedc ? is_uptrendc ? max_c - mult1c * atr_c : min_c + mult1c * atr_c : 
   vstop1c

plot(vstopa, color=is_uptrenda ? color.green : color.red, style=plot.style_line, linewidth=1)
plot(vstopb, color=is_uptrendb ? color.green : color.red, style=plot.style_line, linewidth=1)
plot(vstopc, color=is_uptrendc ? color.green : color.red, style=plot.style_line, linewidth=1)

vstoplongcondition = close > vstopa and close > vstopb and close > vstopc and vstopa > vstopb and vstopa > vstopc and vstopb > vstopc
vstoplongclosecondition = crossunder(close, vstopa)
vstopshortcondition = close < vstopa and close < vstopb and close < vstopc and vstopa < vstopb and vstopa < vstopc and vstopb < vstopc
vstopshortclosecondition = crossover(close, vstopa)

///Renko///
TF = input(title='TimeFrame', type=input.resolution, defval="240")
ATRlength = input(title="ATR length", type=input.integer, defval=60, minval=2, maxval=100)
SMAlength = input(title="SMA length", type=input.integer, defval=5, minval=2, maxval=100)
SMACurTFlength = input(title="SMA CurTF length", type=input.integer, defval=20, minval=2, maxval=100)

HIGH = security(syminfo.tickerid, TF, high)
LOW = security(syminfo.tickerid, TF, low)
CLOSE = security(syminfo.tickerid, TF, close)
ATR = security(syminfo.tickerid, TF, atr(ATRlength))
SMA = security(syminfo.tickerid, TF, sma(close, SMAlength))
SMACurTF = sma(close, SMACurTFlength)

RENKOUP = float(na)
RENKODN = float(na)
H = float(na)
COLOR = color(na)
BUY = int(na)
SELL = int(na)
UP = bool(na)
DN = bool(na)
CHANGE = bool(na)

RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1]
COLOR := na(COLOR[1]) ? color.white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

if not CHANGE and close >= RENKOUP[1] + H * 3
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 3
    RENKODN := RENKOUP[1] + ATR * 2
    COLOR := color.lime
    SELL := 0
    BUY := BUY + 3
    BUY

if not CHANGE and close >= RENKOUP[1] + H * 2
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 2
    RENKODN := RENKOUP[1] + ATR
    COLOR := color.lime
    SELL := 0
    BUY := BUY + 2
    BUY

if not CHANGE and close >= RENKOUP[1] + H
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR
    RENKODN := RENKOUP[1]
    COLOR := color.lime
    SELL := 0
    BUY := BUY + 1
    BUY

if not CHANGE and close <= RENKODN[1] - H * 3
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 3
    RENKOUP := RENKODN[1] - ATR * 2
    COLOR := color.red
    BUY := 0
    SELL := SELL + 3
    SELL

if not CHANGE and close <= RENKODN[1] - H * 2
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 2
    RENKOUP := RENKODN[1] - ATR
    COLOR := color.red
    BUY := 0
    SELL := SELL + 2
    SELL

if not CHANGE and close <= RENKODN[1] - H
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR
    RENKOUP := RENKODN[1]
    COLOR := color.red
    BUY := 0
    SELL := SELL + 1
    SELL

plotshape(UP, style=shape.arrowup, location=location.abovebar, size=size.normal)
plotshape(DN, style=shape.arrowdown, location=location.belowbar, size=size.normal)

p1 = plot(RENKOUP, style=plot.style_line, linewidth=1, color=COLOR)
p2 = plot(RENKODN, style=plot.style_line, linewidth=1, color=COLOR)
fill(p1, p2, color=COLOR, transp=80)

///Long Entry///
longcondition = vstoplongcondition and UP
if (longcondition)
    strategy.entry("Long", strategy.long)
    
///Long exit///
closeconditionlong = vstoplongclosecondition or DN
if (closeconditionlong)
    strategy.close("Long")
    
// ///Short Entry///
// shortcondition = vstopshortcondition and DN
// if (shortcondition)
//     strategy.entry("Short", strategy.short)
    
// ///Short exit///
// closeconditionshort = vstopshortclosecondition or UP
// if (closeconditionshort)
//     strategy.close("Short")

আরো