চলমান গড়ের উপর ভিত্তি করে ট্রেন্ড ট্র্যাকিং কৌশল

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

সারসংক্ষেপ

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

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

  1. ১০ দিনের, ২০ দিনের, ৫০ দিনের, ১০০ দিনের এবং ২০০ দিনের সহজ চলমান গড় হিসাব করুন।

  2. ১৪ দিনের আরএসআই মান গণনা করুন।

  3. যখন 10-দিনের এসএমএ 50-দিনের এসএমএর উপরে অতিক্রম করে এবং আরএসআই 30 এর বেশি হয় এবং 20-দিনের এসএমএ 100-দিনের এসএমএ বা 50 দিনের এসএমএ এর চেয়ে বড় বা সমান হয়, তখন কিনুন।

  4. স্টপ লস মূল্যকে এন্ট্রি প্রাইস দ্বারা গুণিত করুন (1 - স্টপ লস শতাংশ) ।

  5. বিক্রি করুন যখনঃ

    • ১০ দিনের এসএমএ ৫০ দিনের এসএমএ-র নিচে ক্রস করে এবং ২০ দিনের এসএমএ-র নিচে বন্ধ হয়ঃ ট্রেন্ড বিপরীত বিক্রয় সংকেত
    • ক্লোজ প্রবেশ মূল্যের 95% এর নিচেঃ স্টপ লস বিক্রয়
    • বন্ধ হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস হ্রাস

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

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

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

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

  • মুভিং গড়গুলি বিলম্বিত এবং মূল্য বিপরীতের জন্য সেরা সময় মিস করতে পারে
  • স্টপ লস সেট খুব শিথিল একক ট্রেডের জন্য বড় ক্ষতি হতে পারে
  • স্টপ লস সেট করা খুব শক্ত হতে পারে খুব ঘন ঘন স্টপ লস ট্রিগার হতে পারে
  • ট্রেলিং স্টপ লস খুব তাড়াতাড়ি বেরিয়ে আসতে পারে বড় লাভের অভাব

অপ্টিমাইজেশান চলমান গড় সময়কাল, স্টপ লস স্তর ইত্যাদি সামঞ্জস্যের মাধ্যমে করা যেতে পারে। সঠিকতা উন্নত করতে অন্যান্য সূচকগুলির সাথে একত্রিত করার বিষয়টিও বিবেচনা করুন।

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

  • বিভিন্ন বাজারের অবস্থার সাথে সামঞ্জস্য করার জন্য চলমান গড় সময়ের সমন্বয়
  • অতিরিক্ত ক্রয় / অতিরিক্ত বিক্রয় শর্তগুলি আরও ভালভাবে সনাক্ত করার জন্য আরএসআই পরামিতিগুলি অনুকূলিত করুন
  • যন্ত্রের বৈশিষ্ট্যগুলির উপর ভিত্তি করে যুক্তিসঙ্গত স্ট্যাটিক স্টপ ক্ষতি এবং ট্রেইল স্টপ স্তর সেট করুন
  • মিথ্যা সংকেত এড়াতে অন্যান্য সূচক যোগ করুন
  • অস্থিরতার উপর ভিত্তি করে স্টপ লসকে গতিশীলভাবে সামঞ্জস্য করুন
  • মেশিন লার্নিং এর মাধ্যমে স্বয়ংক্রিয়ভাবে প্যারামিটার অপ্টিমাইজ করুন

সংক্ষিপ্তসার

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


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MA_Script", overlay=true)

// STEP 1:
// Configure trail stop level with input options (optional)
longTrailPerc=input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.05, defval=0.1)

// Configure backtest start date with inputs
startDate=input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth=input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear=input(title="Start Year", type=input.integer, defval=2020, minval=1800, maxval=2100)

// See if this bar's time happened on/after start date
afterStartDate=(time >=timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

// Calculate Relative Strength Index
rsiValue=rsi(close, 14)

// Calculate moving averages
MA10_Val =sma(close, 10)
//plot(MA10_Val, color=color.yellow, linewidth=1)

MA20_Val =sma(close, 20)
plot(MA20_Val, color=color.green, linewidth=1)

MA50_Val =sma(close, 50)
plot(MA50_Val, color=color.red, linewidth=1)

MA100_Val =sma(close, 100)
plot(MA100_Val, color=color.blue, linewidth=1) 

MA200_Val =sma(close, 200)
plot(MA200_Val, color=color.purple, linewidth=1) 

// Calculate candlestick
C_BodyHi = max(close, open)
C_BodyLo = min(close, open)
C_Body = C_BodyHi - C_BodyLo
C_UpShadow = high - C_BodyHi
C_DnShadow = C_BodyLo - low

// STEP 2:
// Calculate entry trading conditions
buyCondition_1=crossover(MA10_Val, MA50_Val) and (rsiValue > 30) and ((MA20_Val >=  MA100_Val) or (MA50_Val >=  MA100_Val))
avg_price = (close + open)/2

// First Entry
if (afterStartDate)
    strategy.entry(id="Entry_Trade_1", long=true, limit=avg_price, when=buyCondition_1)

plotchar(afterStartDate and crossover(MA10_Val, MA50_Val), textcolor = color.blue, text = 'MA\n')

// Determine trail stop loss prices
longStopPrice=0.0

longStopPrice :=if (strategy.position_size > 0)
    stopValue=C_BodyHi * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0
plot(longStopPrice, color=color.orange, linewidth=1)

bought_1=strategy.position_size[0] > strategy.position_size[1]
entry_Point_1=valuewhen(bought_1, avg_price, 0)

// STEP 3:
// Calculate exit trading conditions
sellCondition_2=crossunder(MA10_Val, MA50_Val) and (close < MA20_Val)
sellCondition_3_temp=valuewhen((C_BodyHi >= entry_Point_1*1.2), 1, 0)
sellCondition_1=(entry_Point_1*0.95 > close) and (sellCondition_3_temp != 1)
sellCondition_3=(sellCondition_3_temp == 1) and (strategy.position_size > 0) and close <= longStopPrice
plotchar((sellCondition_3 == 1) and (strategy.position_size > 0) and close <= longStopPrice, textcolor = color.red, text = 'TS\n', show_last = 11)
plotchar(crossunder(MA10_Val, MA50_Val), textcolor = color.red, text = 'MA\n')

id_val = ""
stop_val = close
condition = false

if sellCondition_1
    id_val := "Exit By Stop Loss At 7%"
    stop_val := entry_Point_1*0.93
    condition := true
else if sellCondition_2
    id_val := "Exit By Take Profit based on MA"
    stop_val := close
    condition := true
else if sellCondition_3
    id_val := "Exit By Trailing Stop"
    stop_val := longStopPrice
    condition := true

// Submit exit orders for trail stop loss price
if (strategy.position_size > 0)
    //strategy.exit(id="Exit By Stop Loss At 7%", from_entry="Entry_Trade_1", stop=entry_Point_1*0.93, when=sellCondition_1)
    //strategy.exit(id="Exit By Take Profit based on MA", from_entry="Entry_Trade_1", stop=close, when=sellCondition_2)
    strategy.exit(id=id_val, from_entry="Entry_Trade_1", stop=stop_val, when=condition)
    
    


আরো