তিনটি সূচক চলমান গড় স্টপ প্রফিট এবং স্টপ লস কৌশল


সৃষ্টির তারিখ: 2024-02-04 10:38:42 অবশেষে সংশোধন করুন: 2024-02-04 10:38:42
অনুলিপি: 0 ক্লিকের সংখ্যা: 680
1
ফোকাস
1617
অনুসারী

তিনটি সূচক চলমান গড় স্টপ প্রফিট এবং স্টপ লস কৌশল

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি তিনটি সূচকীয় চলমান গড় ব্যবহার করেঃ দ্রুত লাইন, মধ্য লাইন, এবং ধীর লাইন। মধ্য লাইনটি ধীর লাইনটি অতিক্রম করার সময় আরও বেশি করে; যখন দ্রুত লাইনটি মধ্য লাইনটি অতিক্রম করে তখন প্যাসিং। এটি একটি সাধারণ প্রবণতা ট্র্যাকিং কৌশল, যা তিনটি সমান্তরাল লাইনগুলির বহুমুখী রূপান্তর দ্বারা প্রবণতার দিক নির্ধারণ করে।

একই সময়ে, এই কৌশলটি স্টপ-স্টপ-ক্ষতির জন্য গড় বাস্তব তরঙ্গের পরিমাপ ব্যবহার করে। বিশেষ করে, একাধিক স্টপ-স্টপগুলি হল প্রবেশের মূল্য + গড় বাস্তব তরঙ্গ*স্টপ কোয়ালিটি; খালি স্টপ পজিশন প্রবেশের মূল্য - গড় বাস্তব তরঙ্গের ব্যাপ্তি*স্টপ-অফ ফ্যাক্টর. স্টপ-অফের নীতিটি স্টপ-অফের অনুরূপ। এটি একতরফা ঝুঁকি কার্যকরভাবে সীমাবদ্ধ করতে পারে।

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

  1. সিদ্ধান্ত গ্রহণের জন্য নির্দেশকগুলি স্বজ্ঞাত এবং সহজে বোঝা যায়।
  2. এটি একটি শক্তিশালী পদ্ধতি এবং এটি সহজেই পরিমাপ করা যায়।
  3. ট্রেন্ড ট্র্যাকিং এবং রিস্ক কন্ট্রোলের মধ্যে পার্থক্য।

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

  1. “এটি একটি দুর্দান্ত সময়, কারণ আমরা আমাদের লক্ষ্যে পৌঁছাতে সক্ষম হইনি।
  2. এই প্রবণতা সহ্য করা কঠিন।
  3. প্যারামিটার সেটিং অপ্টিমাইজ করা দরকার, অন্যথায় এটি কার্যকর হবে না।

ঝুঁকি মোকাবিলার ব্যবস্থাগুলির মধ্যে রয়েছেঃ গড় লাইন চক্রটি যথাযথভাবে সংক্ষিপ্ত করা, স্টপ-অফ-স্টপ লস ফ্যাক্টরটি অপ্টিমাইজ করা, অন্যান্য সিদ্ধান্ত গ্রহণের পরিমাপকারী সহায়ক বিচার যুক্ত করা।

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

  1. একাধিক গড় রেখা সূচক সমন্বয়, সর্বোত্তম প্যারামিটার খুঁজুন।
  2. অন্যান্য প্রযুক্তিগত সূচক যেমন MACD, RSI ইত্যাদি যুক্ত করুন।
  3. মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করুন।
  4. স্টপ-অফ-লস স্থিতিশীলভাবে রিয়েল এম্পিটেনসিটির উপর ভিত্তি করে সংশোধন করা হয়েছে।
  5. এটি একটি আবেগপূর্ণ সূচক এবং এটির সাথে একত্রে, আপনি খুব বেশি লোকের সাথে লেনদেন করবেন না।

সারসংক্ষেপ

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

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

//@version=4
//© Densz
strategy("3EMA with TP & SL (ATR)", overlay=true )

// INPUTS
startTime           =       input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2017 00:00 +0000"))
endTime             =       input(title="End Time", type = input.time, defval = timestamp("01 Jan 2022 00:00 +0000"))

slowEMALength       =       input(title="Slow EMA Length", type = input.integer, defval = 55)
middleEMALength     =       input(title="Middle EMA Length", type = input.integer, defval = 21)
fastEMALength       =       input(title="Fast EMA Length", type = input.integer, defval = 9)

trendMALength       =       input(title="Trend indicator MA Length", type = input.integer, defval = 200)

atrLength           =       input(title="ATR Length", type = input.integer, defval = 14)
tpATRMult           =       input(title="Take profit ATR multiplier", type = input.integer, defval = 3)
slATRMult           =       input(title="Stop loss ATR multiplier", type = input.integer, defval = 2)

rsiLength           =       input(title="RSI Length", type = input.integer, defval = 14)

// Indicators
slowEMA             =       ema(close, slowEMALength)
middEMA             =       ema(close, middleEMALength)
fastEMA             =       ema(close, fastEMALength)
atr                 =       atr(atrLength)

rsiValue            =       rsi(close, rsiLength)
isRsiOB             =       rsiValue >= 80
isRsiOS             =       rsiValue <= 20

sma200              =       sma(close, trendMALength)

inDateRange         =       true

// Plotting
plot(slowEMA, title="Slow EMA", color=color.red, linewidth=2, transp=50)
plot(middEMA, title="Middle EMA", color=color.orange, linewidth=2, transp=50)
plot(fastEMA, title="Fast EMA", color=color.green, linewidth=2, transp=50)

plot(sma200, title="SMA Trend indicator", color=color.purple, linewidth=3, transp=10)
plotshape(isRsiOB, title="Overbought", location=location.abovebar, color=color.red, transp=0, style=shape.triangledown, text="OB")
plotshape(isRsiOS, title="Oversold", location=location.belowbar, color=color.green, transp=0, style=shape.triangledown, text="OS")

float takeprofit    =       na
float stoploss      =       na

var line tpline     =       na
var line slline     =       na

if strategy.position_size != 0
    takeprofit := takeprofit[1]
    stoploss := stoploss[1]
    line.set_x2(tpline, bar_index)
    line.set_x2(slline, bar_index)
    line.set_extend(tpline, extend.none)
    line.set_extend(slline, extend.none)
    
// STRATEGY
goLong  = crossover(middEMA, slowEMA) and inDateRange
closeLong = crossunder(fastEMA, middEMA) and inDateRange


if goLong
    takeprofit := close + atr * tpATRMult
    stoploss := close - atr * slATRMult
    // tpline := line.new(bar_index, takeprofit, bar_index, takeprofit, color=color.green, width=2, extend=extend.right, style=line.style_dotted)
    // slline := line.new(bar_index, stoploss, bar_index, stoploss, color=color.red, width=2, extend=extend.right, style=line.style_dotted)
    // label.new(bar_index, takeprofit, "TP", style=label.style_labeldown)
    // label.new(bar_index, stoploss, "SL", style=label.style_labelup)
    strategy.entry("Long", strategy.long, when = goLong)
    strategy.exit("TP/SL", "Long", stop=stoploss, limit=takeprofit)
if closeLong
    takeprofit := na
    stoploss := na
    strategy.close(id = "Long", when = closeLong)

if (not inDateRange)
    strategy.close_all()