আপেক্ষিক শক্তি MACD কৌশল


সৃষ্টির তারিখ: 2023-12-21 12:01:01 অবশেষে সংশোধন করুন: 2023-12-21 12:01:01
অনুলিপি: 0 ক্লিকের সংখ্যা: 633
1
ফোকাস
1623
অনুসারী

আপেক্ষিক শক্তি MACD কৌশল

ওভারভিউ

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

কৌশল নীতি

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

RS = বর্তমান মূল্য / RS দৈর্ঘ্যের মধ্যে সর্বোচ্চ মূল্য

সুতরাং, আমরা বর্তমান মূল্যের সাথে এই ব্যবহারকারীর দ্বারা নির্ধারিত সময়ের মধ্যে সর্বোচ্চ মূল্যের তুলনা করতে পারি।

MACD হল সবচেয়ে বিখ্যাত সূচকগুলির মধ্যে একটি, যা দুটি সূচকীয় চলমান গড়ের মধ্যে দূরত্ব পরিমাপ করেঃ একটি দ্রুত লাইন এবং একটি ধীর লাইন। যত বেশি দূরত্ব, তত বেশি গতিশীলতা, এবং বিপরীতভাবে। আমরা এই দূরত্বের রেখার মানটি আঁকব এবং এটিকে ম্যাকড লাইন বলব। MACD প্রথম দুটিের চেয়ে কম তৃতীয় চলমান গড় ব্যবহার করে। এই শেষ চলমান গড়টি ম্যাকড লাইনটি অতিক্রম করার সময় সংকেত দেবে।

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

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

এই কৌশলটি MACD এবং RS-এর সমন্বয়ে তৈরি করা হয়েছে, যা স্বতন্ত্রভাবে শক্তিশালী দুটি সূচক। MACD স্বল্পমেয়াদী প্রবণতা এবং গতিশীলতার পরিবর্তনগুলি ধরতে পারে, আর RS-এর মধ্যবর্তী ও দীর্ঘমেয়াদী প্রবণতার দৃঢ়তা প্রতিফলিত করে। এগুলিকে সংযুক্ত করে, স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী উভয় বিষয় বিবেচনা করে, ক্রয় সংকেতকে আরও নির্ভরযোগ্য করে তোলে।

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

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

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

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

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

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

প্রথমত, বিভিন্ন বাজারে (যেমন স্টক, ফরেক্স, ক্রিপ্টোকারেন্সি ইত্যাদি) কোন প্রজাতির কৌশলটি সবচেয়ে ভাল কাজ করে তা পরীক্ষা করা যায় এবং তারপরে সেরা জাতের উপর ফোকাস করা যায়।

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

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-12-14 00:00:00
end: 2023-12-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gsanson66


//This strategy calculates the Relative Strength and plot the MACD of this Relative Strenght
//We take only buy signals send by MACD
//@version=5
strategy("MACD OF RELATIVE STRENGHT STRATEGY", shorttitle="MACD RS STRATEGY", precision=4, overlay=false, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=950, commission_type=strategy.commission.percent, commission_value=0.18, slippage=3)


//------------------------------TOOL TIPS--------------------------------//

t1 = "Relative Strength length i.e. number of candles back to find the highest high and compare the current price with this high."
t2 = "Relative Strength fast EMA length used to plot the MACD."
t3 = "Relative Strength slow EMA length used to plot the MACD."
t4 = "Macdline SMA length used to plot the MACD."
t5 = "The maximum loss a trade can incur (in percentage of the trade value)"
t6 = "Each gain or losse (relative to the previous reference) in an amount equal to this fixed ratio will change quantity of orders."
t7 = "The amount of money to be added to or subtracted from orders once the fixed ratio has been reached."


//----------------------------------------FUNCTIONS---------------------------------------//

//@function Displays text passed to `txt` when called.
debugLabel(txt, color, loc) =>
    label.new(bar_index, loc, text=txt, color=color, style=label.style_label_lower_right, textcolor=color.black, size=size.small)

//@function which looks if the close date of the current bar falls inside the date range
inBacktestPeriod(start, end) => (time >= start) and (time <= end)


//---------------------------------------USER INPUTS--------------------------------------//

//Technical parameters
rs_lenght = input.int(defval=300, minval=1, title="RS Length", group="Technical parameters", tooltip=t1)
fast_length = input(title="MACD Fast Length", defval=14, group="Technical parameters", tooltip=t2)
slow_length = input(title="MACD Slow Length", defval=26, group="Technical parameters", tooltip=t3)
signal_length = input.int(title="MACD Signal Smoothing",  minval=1, maxval=50, defval=10, group="Technical parameters", tooltip=t4)
//Risk Management
slMax = input.float(8, "Max risk per trade (in %)", minval=0, group="Risk Management", tooltip=t5)
//Money Management
fixedRatio = input.int(defval=400, minval=1, title="Fixed Ratio Value ($)", group="Money Management", tooltip=t6)
increasingOrderAmount = input.int(defval=200, minval=1, title="Increasing Order Amount ($)", group="Money Management", tooltip=t7)
//Backtesting period
startDate = input(title="Start Date", defval=timestamp("1 Jan 2020 00:00:00"), group="Backtesting Period")
endDate = input(title="End Date", defval=timestamp("1 July 2024 00:00:00"), group="Backtesting Period")


//----------------------------------VARIABLES INITIALISATION-----------------------------//
strategy.initial_capital = 50000
//Relative Strenght Calculation
rs = close/ta.highest(high, rs_lenght)
//MACD of RS Calculation
[macdLine, signalLine, histLine] = ta.macd(rs, fast_length, slow_length, signal_length)
//Money management
equity = math.abs(strategy.equity - strategy.openprofit)
var float capital_ref = strategy.initial_capital
var float cashOrder = strategy.initial_capital * 0.95
//Backtesting period
bool inRange = na


//------------------------------CHECKING SOME CONDITIONS ON EACH SCRIPT EXECUTION-------------------------------//

//Checking if the date belong to the range
inRange := true

//Checking performances of the strategy
if equity > capital_ref + fixedRatio
    spread = (equity - capital_ref)/fixedRatio
    nb_level = int(spread)
    increasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder + increasingOrder
    capital_ref := capital_ref + nb_level*fixedRatio
if equity < capital_ref - fixedRatio
    spread = (capital_ref - equity)/fixedRatio
    nb_level = int(spread)
    decreasingOrder = nb_level * increasingOrderAmount
    cashOrder := cashOrder - decreasingOrder
    capital_ref := capital_ref - nb_level*fixedRatio

//Checking if we close all trades in case where we exit the backtesting period
if strategy.position_size!=0 and not inRange
    strategy.close_all()
    debugLabel("END OF BACKTESTING PERIOD : we close the trade", color=color.rgb(116, 116, 116), loc=macdLine)


//-----------------------------------EXIT SIGNAL------------------------------//

if strategy.position_size>0 and histLine<0
    strategy.close("Long")


//-------------------------------BUY CONDITION-------------------------------------//

if histLine>0 and not (strategy.position_size>0) and inRange
    qty = cashOrder/close
    stopLoss = close*(1-slMax/100)
    strategy.entry("Long", strategy.long, qty)
    strategy.exit("Exit Long", "Long", stop=stopLoss)


//---------------------------------PLOTTING ELEMENT----------------------------------//

hline(0, "Zero Line", color=color.new(#787B86, 50))
plot(macdLine, title="MACD", color=color.blue)
plot(signalLine, title="Signal", color=color.orange)
plot(histLine, title="Histogram", style=plot.style_columns, color=(histLine>=0 ? (histLine[1] < histLine ? #26A69A : #B2DFDB) : (histLine[1] < histLine ? #FFCDD2 : #FF5252)))
plotchar(rs, "Relative Strenght", "", location.top, color=color.yellow)