ইম্পোমেন্ট অস্সিলেটর ট্রেন্ড ট্র্যাকিং কৌশল

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

img

সারসংক্ষেপ

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

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

সংকেত উত্পাদন এবং প্রবণতা বিচার

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

পর্যায়-নির্দিষ্ট সংকেত উৎপন্ন

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

সামগ্রিক সিদ্ধান্ত প্রবাহ

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

সুবিধা

বাজার চক্রের সমন্বয় সহ জয় হার বৃদ্ধি

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

একাধিক ফিল্টারের মাধ্যমে মিথ্যা সংকেত হ্রাস

গতি, প্রবণতা শক্তি এবং অস্থিরতা পরিমাপকারী মাল্টি-ইন্ডিক্টর ফিল্টারিং কোনও পৃথক সূচক থেকে বিভ্রান্তিকর সংকেত দূর করে এবং এইভাবে সামগ্রিক স্থিতিশীলতা এবং নির্ভরযোগ্যতা উল্লেখযোগ্যভাবে উন্নত করে।

প্রচুর পরামিতির কারণে অত্যন্ত কাস্টমাইজযোগ্য

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

ঝুঁকি এবং হ্রাস

অন্তর্নিহিত বাজার ঝুঁকি

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

প্যারামিটার ওভারফিটিং

পরামিতিগুলি সামঞ্জস্য করার স্বাধীনতাও যদি সতর্কতার সাথে না করা হয় তবে অতিরিক্ত ফিটিংয়ের সমস্যা হতে পারে। এটি পৃথক বিভাগগুলিতে মূলধন করার পরিবর্তে কোনও পরামিতি পরিবর্তনগুলি বিভিন্ন historicalতিহাসিক সময়কালে ধারাবাহিকভাবে সম্পাদন করতে পারে তা যাচাই করার জন্য কঠোর ব্যাকটেস্টের প্রয়োজন হয়।

অপ্টিমাইজেশান সুযোগ

পজিশন সাইজিং অ্যালগরিদম অন্তর্ভুক্ত করা

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

মেশিন লার্নিং দিয়ে সংকেতগুলি আরও ফিল্টার করুন

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

সিদ্ধান্ত

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


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JS_TechTrading

//@version=5
strategy('The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', shorttitle='The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)', overlay=true,initial_capital = 1000)
//// author -  JS-TechTrading

// MOM Rsi indicator 
group_mom_rsi = "Rsi Of Momentum "
len = input.int(10, minval=1, title="Length Mom-Rsi", group =group_mom_rsi ,tooltip = 'This ind calculate Rsi value of Momentum we use this ind to determine power of trend')
src2 = close
mom = src2 - src2[len]
rsi_mom = ta.rsi(mom, len)
mom_rsi_val = input.int(60, minval=1, title="Mom-Rsi Limit Val", group =group_mom_rsi, tooltip = "When our Mom-Rsi value more then this we open LONG or Short, with help of this indicator we we determine the status of the trend")

// Super Trend Ind
group_supertrend = "SuperTrend indicator"
atrPeriod = input(10, "ATR Length SuperTrend", group = group_supertrend)
factor = input.float(3.0, "Factor SuperTrend", step = 0.01, group = group_supertrend)

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Ema Indicator
group_most = "Ema indicator"
src = input(close, 'Source Ema Ind',group = group_most)
AP2 = input.int(defval=12, title='Length Ema Ind', minval=1,group = group_most)
Trail1 = ta.ema(src, AP2) //Ema func
AF2 = input.float(defval=1, title='Percent Ema Ind', minval=0.1,group = group_most) / 100
SL2 = Trail1 * AF2  // Stoploss Ema
Trail2 = 0.0
iff_1 = Trail1 > nz(Trail2[1], 0) ? Trail1 - SL2 : Trail1 + SL2
iff_2 = Trail1 < nz(Trail2[1], 0) and Trail1[1] < nz(Trail2[1], 0) ? math.min(nz(Trail2[1], 0), Trail1 + SL2) : iff_1
Trail2 := Trail1 > nz(Trail2[1], 0) and Trail1[1] > nz(Trail2[1], 0) ? math.max(nz(Trail2[1], 0), Trail1 - SL2) : iff_2

//EMA50/150/200
group_50_150_200="EMA50/150/200"
show_emas=input.bool(defval = true, title = "SHOW EMAS", group = group_50_150_200)
ema50= ta.ema(src, 50)
ema150 = ta.ema(src, 150)
ema200 = ta.ema(src, 200)
ema50_color=input.color(defval = color.purple, title = "EMA50 COLOR",group = group_50_150_200)
ema50_linewidth=input.int(defval = 2, title = "EMA50 LINEWIDTH", group = group_50_150_200)
ema150_color=input.color(defval = color.blue, title = "EMA150 COLOR", group = group_50_150_200)
ema150_linewidth=input.int(defval = 2, title = "EMA150 LINEWIDTH", group = group_50_150_200)
ema200_color=input.color(defval = color.black, title = "EMA200 COLOR", group = group_50_150_200)
ema200_linewidth=input.int(defval = 2, title = "EMA200 LINEWIDTH", group = group_50_150_200)
plot(show_emas ? ema50 : na, color = ema50_color, linewidth = ema50_linewidth)
plot(show_emas ? ema150 : na, color=ema150_color, linewidth = ema150_linewidth)
plot(show_emas ? ema200 : na, color = ema200_color, linewidth = ema200_linewidth)

//Bull = ta.barssince(Trail1 > Trail2 and close > Trail2 and low > Trail2) < ta.barssince(Trail2 > Trail1 and close < Trail2 and high < Trail2)

//TS1 = plot(Trail1, 'ExMov', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(33, 149, 243, 100) : color.rgb(255, 235, 59, 100), linewidth=2)
//TS2 = plot(Trail2, 'ema', style=plot.style_line, color=Trail1 > Trail2 ? color.rgb(76, 175, 79, 30) : color.rgb(255, 82, 82, 30), linewidth=2)
//fill(TS1, TS2, Bull  ? color.green : color.red, transp=90)


// Strategy Sett
group_strategy = "Settings of Strategy"
Start_Time = input(defval=timestamp('01 January 2000 13:30 +0000'), title='Start Time of BackTest', group =group_strategy)
End_Time = input(defval=timestamp('30 April 2030 19:30 +0000'), title='End Time of BackTest', group =group_strategy)
dollar = input.float(title='Dollar Cost Per Position* ', defval=50000, group =group_strategy)
trade_direction = input.string(title='Trade_direction', group =group_strategy, options=['LONG', 'SHORT', 'BOTH'], defval='BOTH')
v1 = input(true, title="Version 1 - Uses SL/TP Dynamically ", group =group_strategy ,tooltip = 'With this settings our stoploss price increase or decrease with price to get better PNL score')

v2 = input(false, title="Version 2 -  Uses SL/TP Statically", group =group_strategy)
v2stoploss_input = input.float(5, title='Static Stop.Loss % Val', minval=0.01, group =group_strategy)/100
v2takeprofit_input = input.float(10, title='Static Take.Prof % Val', minval=0.01, group =group_strategy)/100

v2stoploss_level_long = strategy.position_avg_price * (1 - v2stoploss_input)
v2takeprofit_level_long = strategy.position_avg_price * (1 + v2takeprofit_input)

v2stoploss_level_short = strategy.position_avg_price * (1 + v2stoploss_input)
v2takeprofit_level_short = strategy.position_avg_price * (1 - v2takeprofit_input)

group_line = "Line Settings"
show_sl_tp = input.bool(title='  Show StopLoss - TakeProf Lines',inline = "1", defval=true, group =group_line)
show_trend_line = input.bool(title='  Show Trend Line',inline = '3' ,defval=true, group =group_line)
stoploss_colour = input.color(title='StopLoss Line Colour',inline = '2' ,defval=color.rgb(255, 255, 0), group =group_line)
up_trend_line_colour = input.color(title='Up Trend line Colour',inline = '4' ,defval=color.rgb(0, 255, 0, 30), group =group_line)
down_trend_line_colour = input.color(title='Down Trend line Colour',inline = '4' ,defval=color.rgb(255, 0, 0, 30), group =group_line)

//plot(supertrend ,color = strategy.position_size > 0 and show_sl_tp ? color.rgb(255, 0, 0) :show_sl_tp ? color.rgb(0, 255, 0) : na , style = plot.style_steplinebr,linewidth = 2)
// plot(supertrend ,color = show_sl_tp and v1 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)

// plot(v2stoploss_level_long ,color = strategy.position_size > 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2stoploss_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? stoploss_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_long  ,color = strategy.position_size > 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)
// plot(v2takeprofit_level_short ,color = strategy.position_size < 0 and show_sl_tp and v2 ? up_trend_line_colour : na , style = plot.style_steplinebr,linewidth = 2)


TS2 = plot(Trail2, 'Ema Strategy', style=plot.style_line, color=show_trend_line and Trail1 < Trail2 ? down_trend_line_colour : show_trend_line ? up_trend_line_colour  : na, linewidth=2)

// bgcolor(buy_signal ? color.rgb(0, 230, 119, 80) : na)
// bgcolor(sell_signal ? color.rgb(255, 82, 82, 80) : na)

Time_interval = true
buy_signal = Trail1 > Trail2 and direction < 0 and rsi_mom > mom_rsi_val and Time_interval
sell_signal =Trail1 < Trail2 and direction > 0 and rsi_mom > mom_rsi_val and Time_interval


// Strategy entries 
stop_long = (close < supertrend and v1) or (v2 and strategy.position_size > 0)
stop_short = (close > supertrend and v1) or (v2 and strategy.position_size < 0)
long_cond = ((close > ema150 ) and (ema50 > ema150) and (ema150 > ema200))
short_cond = ((close < ema150) and (ema50 < ema150) and (ema150 < ema200))
if (not stop_long) and (not short_cond) and long_cond and strategy.opentrades == 0 and (trade_direction == 'LONG' or trade_direction == 'BOTH') and buy_signal
    strategy.entry('Long_0', strategy.long, qty=dollar / close)

if (not stop_short) and (not long_cond) and short_cond and strategy.opentrades == 0 and (trade_direction == 'SHORT' or trade_direction == 'BOTH') and sell_signal
    strategy.entry('Short_0', strategy.short, qty=dollar / close)


if close < supertrend and v1
    strategy.exit('Long_Close',from_entry = "Long_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size > 0
    strategy.exit('Long_Close',from_entry = "Long_0", stop=v2stoploss_level_long,limit= v2takeprofit_level_long  , qty_percent=100)
    
if close > supertrend and v1
    strategy.exit('Short_Close',from_entry = "Short_0", stop=supertrend, qty_percent=100)
if  v2 and strategy.position_size < 0
    strategy.exit('Short_Close',from_entry = "Short_0", stop=v2stoploss_level_short,limit= v2takeprofit_level_short ,qty_percent=100)

আরো