রিসোর্স লোড হচ্ছে... লোডিং...

সূচকগুলির কৌশল সংমিশ্রণ অগ্রগতি প্রবণতা ট্র্যাকিং

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

img

সারসংক্ষেপ

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

  1. বাজারের প্রধান প্রবণতা বিচার করার জন্য ওয়েভ ট্রেন্ড সূচক ব্যবহার করে
  2. আরএসআই এবং এমএফআই সূচকগুলির মাধ্যমে কিছু মিথ্যা সংকেত ফিল্টার করা
  3. ইএমএ সূচক দিয়ে নির্দিষ্ট অপারেশনাল দিকনির্দেশনা নির্ধারণ
  4. প্রবণতা অনুসরণ নিশ্চিত করার জন্য যুগান্তকারী ট্র্যাকিং পদ্ধতির সাথে বাজারে প্রবেশ করা

কৌশল নীতি

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

লং সিগন্যালঃ

  1. দাম 200 দিনের ইএমএ এর উপরে, যা একটি ষাঁড়ের বাজার নির্দেশ করে
  2. মূল্য প্রায় ৫০ দিনের EMA-এর দিকে ফিরে যায়
  3. তরঙ্গ প্রবণতা ঊর্ধ্বমুখী প্রবণতা বিপরীত এবং একটি কিনতে সংকেত প্রদর্শিত হয়
  4. আরএসআই এবং এমএফআই উভয়ই অতিরিক্ত ক্রয় দেখায়
  5. ক্রমাগত ৩টি K-লাইন পরপর ৫০ দিনের EMA অতিক্রম করে যা উপরের দিকে অগ্রগতি নির্দেশ করে।

সংক্ষিপ্ত সংকেতঃ দীর্ঘ সংকেতের বিপরীত

মুনাফা গ্রহণ এবং স্টপ লসঃ দুটি বিকল্প দেওয়া হয়েছেঃ সর্বনিম্ন মূল্য/সর্বোচ্চ মূল্য স্টপ লস, ATR স্টপ লস

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

এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:

  1. প্রধান প্রবণতা নির্ধারণ এবং মিথ্যা ব্রেকআউট এড়ানোর জন্য একাধিক সূচক একত্রিত করে
  2. অপারেশনাল দিকনির্দেশনা নির্ধারণের জন্য ইএমএ গ্রহণ করে, প্রবণতা অনুসরণ করা সহজ
  3. ট্রেলিং স্টপ লস পদ্ধতি স্থায়ী লাভ অর্জন করে
  4. উভয়ই দীর্ঘ এবং সংক্ষিপ্ত যেতে সক্ষম, উভয় দিকের বাজার অনুসরণ

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

এই কৌশলের কিছু ঝুঁকিও রয়েছে:

  1. সূচক থেকে ভুল সংকেত পাওয়ার সম্ভাবনা
  2. স্টপ লস পয়েন্ট সেট করা খুব ছোট, স্টপ লসের ঝুঁকি বাড়ায়
  3. উচ্চ ট্রেডিং ফ্রিকোয়েন্সি ট্রেডিং ফি থেকে লুকানো ক্ষতির দিকে নিয়ে যায়

উপরের ঝুঁকি কমানোর জন্য, নিম্নলিখিত দিকগুলিতে অপ্টিমাইজেশন করা যেতে পারেঃ

  1. ভুল সংকেত ফিল্টার করতে সূচক পরামিতি সামঞ্জস্য করুন
  2. স্টপ লস পয়েন্টকে যথাযথভাবে শিথিল করুন
  3. ট্রেডিং ফ্রিকোয়েন্সি হ্রাস করার জন্য সূচক পরামিতিগুলি অপ্টিমাইজ করুন

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

কোড স্তর থেকে, এই কৌশলটির প্রধান অপ্টিমাইজযোগ্য দিকগুলির মধ্যে রয়েছেঃ

  1. সেরা প্যারামিটার সমন্বয় খুঁজে পেতে ওয়েভ ট্রেন্ড, আরএসআই এবং এমএফআই এর পরামিতিগুলি সামঞ্জস্য করা
  2. বিভিন্ন ইএমএ চক্রের পরামিতিগুলির কার্যকারিতা পরীক্ষা করা
  3. সর্বোত্তম কনফিগারেশন অর্জনের জন্য মুনাফা গ্রহণ এবং স্টপ লসের ঝুঁকি-প্রতিফল অনুপাতের ফ্যাক্টরগুলি সামঞ্জস্য করা

প্যারামিটার সমন্বয় এবং পরীক্ষার মাধ্যমে, কৌশলটি হ্রাস এবং ঝুঁকি হ্রাস করার সময় রিটার্ন সর্বাধিক করতে পারে।

সিদ্ধান্ত

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


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Lowest Low/ Highest High & ATR Stop Loss/ Take Profit
//Optimized for the 30 minutes chart

strategy(title="TradePro's Trading Idea Cipher B+ Divergence EMA Pullback Strategy", shorttitle="WT MFI RSI EMA PB STRAT", overlay = true, pyramiding = 0, max_bars_back=5000, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=5000, currency=currency.USD)

// { Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2016)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true

// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

zeroline = 0

// } Time Range

// { Wavetrend, RSI, MFI

// WaveTrend
cl = input(12, "Channel Length")
al = input(12, "Average Length")
overbought = input(53, title = 'WT Overbought Level 1', type = input.integer)
oversold = input(-53, title = 'WT Oversold Level 1', type = input.integer)
ap = hlc3 
esa = ema(ap, cl)
d = ema(abs(ap - esa), cl)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, al)
 
wt1 = tci
wt2 = sma(wt1,4)

wtOs = wt2 <= oversold
wtOb = wt2 >= overbought
wtX = cross(wt1, wt2)
wtUp = wt2 - wt1 <= 0
wtDown = wt2 - wt1 >= 0
buySignal = wtX and wtOs and wtUp
sellSignal = wtX and wtOb and wtDown

// RSI & MFI

rsiMFIPosY = input(2, title = 'MFI Area Y Pos', type = input.float)
rsiMFIperiod = input(80,title = 'MFI Period', type = input.integer)
rsiMFIMultiplier = input(200, title = 'MFI Area multiplier', type = input.float)
f_rsimfi(_period, _multiplier, _tf) => security(syminfo.tickerid, _tf, sma(((close - open) / (high - low)) * _multiplier, _period) - rsiMFIPosY)
rsiMFI = f_rsimfi(rsiMFIperiod, rsiMFIMultiplier, timeframe.period)

// } Wavetrend, RSI, MFI

// { EMA
emasrc = close
res = input(title="EMA Timeframe", type=input.resolution, defval="30")
len1 = input(title="EMA1 Length", type=input.integer, defval=200)
col1 = color.yellow

len2 = input(title="EMA2 Length", type=input.integer, defval=50)
col2 = color.blue

// Calculate EMA
ema1 = ema(emasrc, len1)
emaSmooth1 = security(syminfo.tickerid, res, ema1, barmerge.gaps_off, barmerge.lookahead_off)

ema2 = ema(emasrc, len2)
emaSmooth2 = security(syminfo.tickerid, res, ema2, barmerge.gaps_off, barmerge.lookahead_off)

// Draw EMA
plot(emaSmooth1, title="EMA1", linewidth=1, color=col1)
plot(emaSmooth2, title="EMA2", linewidth=1, color=col2)

// } EMA

// { Long Entry

enablelong = input(true, title="Enable long?")

//Long Signal
upcondition = close > emaSmooth1
wavetrendlong = wt1 and wt2 < zeroline
mfilong = rsiMFI > 0
emapblong1 = (close > emaSmooth2) and (close[1] < emaSmooth2[1])
emapblong2 = ((close[2] > emaSmooth2[2]) and (close[3] > emaSmooth2[3]) and (close[4] > emaSmooth2[4])) or ((close[5] > emaSmooth2[5]) and (close[6] > emaSmooth2[6]) and (close[7] > emaSmooth2[7])) or ((close[8] > emaSmooth2[8]) and (close[9] > emaSmooth2[9]) and (close[10] > emaSmooth2[10]))

longcondition = upcondition and wavetrendlong and buySignal and mfilong and emapblong1 and emapblong2

//strategy buy long
if (longcondition) and (afterStartDate) and strategy.opentrades < 1 and (enablelong == true)
    strategy.entry("long", strategy.long)

plotshape(longcondition, style=shape.arrowup,
                 location=location.abovebar, color=color.green)

// } Long Entry

// { Short Entry

enableshort = input(true, title="Enable short?")

//Short Signal
downcondition = close < emaSmooth1
wavetrendshort = wt1 and wt2 > zeroline
mfishort = rsiMFI < 0
emapbshort1 = (close < emaSmooth2) and (close[1] > emaSmooth2[1])
emapbshort2 = ((close[2] < emaSmooth2[2]) and (close[3] < emaSmooth2[3]) and (close[4] < emaSmooth2[4])) or ((close[5] < emaSmooth2[5]) and (close[6] < emaSmooth2[6]) and (close[7] < emaSmooth2[7])) or ((close[8] < emaSmooth2[8]) and (close[9] < emaSmooth2[9]) and (close[10] < emaSmooth2[10]))

shortcondition = downcondition and wavetrendshort and sellSignal and mfishort and emapbshort1 and emapbshort2

//strategy buy short
if (shortcondition) and (afterStartDate) and strategy.opentrades < 1 and (enableshort == true)
    strategy.entry("short", strategy.short)

plotshape(shortcondition, style=shape.arrowdown,
                 location=location.belowbar, color=color.red)

// } Short Entry

// { Exit Conditions
bought = strategy.position_size[1] < strategy.position_size
sold = strategy.position_size[1] > strategy.position_size
barsbought = barssince(bought)
barssold = barssince(sold)
slbuffer = input(title="SL Buffer", type=input.float, step=0.1, defval=0)

// } Exit Conditions

// { Lowest Low/ Highes High Exit Condition
enablelowhigh = input(false, title="Enable lowest low/ highest high exit?")

//Lowest Low LONG
profitfactorlong = input(title="ProfitfactorLong", type=input.float, step=0.1, defval=2)
loLen = input(title="Lowest Low Lookback", type=input.integer,
  defval=50, minval=2)
stop_level_long = lowest(low, loLen)[1]

if enablelowhigh == true and strategy.position_size>0
    profit_level_long = strategy.position_avg_price + ((strategy.position_avg_price - stop_level_long[barsbought])*profitfactorlong) + slbuffer
    strategy.exit(id="TP/ SL", stop=stop_level_long[barsbought] - slbuffer, limit=profit_level_long)

//Lowest Low SHORT
profitfactorshort = input(title="ProfitfactorShort", type=input.float, step=0.1, defval=2)
highLen = input(title="highest high lookback", type=input.integer,
  defval=50, minval=2)
stop_level_short = highest(high, highLen)[1]

if enablelowhigh == true and strategy.position_size<0
    profit_level_short = strategy.position_avg_price - ((stop_level_short[barssold] - strategy.position_avg_price)*profitfactorshort) - slbuffer
    strategy.exit(id="TP/ SL", stop=stop_level_short[barssold] + slbuffer, limit=profit_level_short)

// } Lowest Low/ Highes High Exit Condition

// { ATR Take Profit/ Stop Loss
enableatr = input(true, title="Enable ATR exit?")
atrprofitfactorlong = input(title="ATR Profitfactor Long", type=input.float, step=0.1, defval=6)
atrstopfactorlong = input(title="ATR Stopfactor Long", type=input.float, step=0.1, defval=5)
atrprofitfactorshort = input(title="ATR Profitfactor Short", type=input.float, step=0.1, defval=3)
atrstopfactorshort = input(title="ATR Stopfactor Short", type=input.float, step=0.1, defval=5)

//ATR
lengthATR = input(title="ATR Length", defval=11, minval=1)
atr = atr(lengthATR)

//LONG EXIT
if (afterStartDate) and ((enableatr == true) and (strategy.opentrades > 0))
    barsbought1 = barssince(bought)
    profit_level = strategy.position_avg_price + (atr*atrprofitfactorlong)
    stop_level = strategy.position_avg_price - (atr*atrstopfactorlong)
    strategy.exit("Take Profit/ Stop Loss", "long", stop=stop_level[barsbought1], limit=profit_level[barsbought1])

//SHORT EXIT
if (afterStartDate) and ((enableatr == true) and (strategy.opentrades > 0))
    barssold1 = barssince(sold)
    profit_level = strategy.position_avg_price - (atr*atrprofitfactorshort)
    stop_level = strategy.position_avg_price + (atr*atrstopfactorshort)
    strategy.exit("Take Profit/ Stop Loss", "short", stop=stop_level[barssold1], limit=profit_level[barssold1])

// } ATR Take Profit/ Stop Loss

আরো