MACD-এর উপর ভিত্তি করে ক্রিপ্টোকারেন্সি ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-09-19 11:21:42 অবশেষে সংশোধন করুন: 2023-09-19 11:21:42
অনুলিপি: 0 ক্লিকের সংখ্যা: 759
1
ফোকাস
1617
অনুসারী

ওভারভিউ

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

কৌশল নীতি

  1. 12 দিনের ইএমএ এবং 26 দিনের ইএমএ, স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী চলমান গড় হিসাবে গণনা করা হয়

  2. MACD কলাম হিসাবে স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী EMA এর পার্থক্য গণনা করুন

  3. MACD এর 9 দিনের EMA সংকেত লাইন হিসাবে গণনা করুন

  4. ১৪ দিনের RSI, ওভারবয় ওভারসোল্ডের জন্য

  5. যখন MACD-এ সিগন্যাল লাইন অতিক্রম করে এবং RSI 81 এর চেয়ে বড় হয়, তখন একটি ক্রয় সংকেত প্রদর্শিত হয়

  6. যখন MACD সিগন্যাল লাইন অতিক্রম করে এবং RSI 27 এর চেয়ে কম হয়, তখন বিক্রয় সংকেত প্রদর্শিত হয়

  7. অন্তর্নির্মিত নীতি মডিউল ব্যবহার করে প্রবেশ এবং প্রস্থান করুন

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

  1. MACD সূচক ট্রেন্ডিং এবং ট্রেন্ড পরিবর্তন সনাক্ত করতে পারে, আরএসআই সূচক ওভার-বই ওভার-সোল্ড প্রদর্শন করতে পারে, উভয়ই ট্রেডিং সিগন্যালের নির্ভুলতা বাড়াতে পারে

  2. MACD শূন্য অক্ষের উপরে এবং নীচে পরিবর্তনগুলি স্বল্প ও দীর্ঘমেয়াদী প্রবণতাগুলির পরিবর্তনের দিক এবং শক্তিকে উপস্থাপন করে যা বাজারের দিকনির্দেশের জন্য ভিত্তি সরবরাহ করে

  3. আরএসআই এর উচ্চ অঞ্চলগুলি ওভারহিট এবং ওভারবয়ের সম্ভাবনাকে উপস্থাপন করে, আরএসআই এর নিম্ন অঞ্চলগুলি ওভারসোলের সম্ভাবনাকে উপস্থাপন করে এবং ক্রয়-বিক্রয় পয়েন্টগুলি সন্ধান করার জন্য ভিত্তি সরবরাহ করে

  4. ট্রেডিং সিগন্যালগুলি সহজ, স্পষ্ট এবং নিয়ম অনুসারে ট্রেড করা সহজ

  5. কনফিগারযোগ্য প্যারামিটারগুলিকে অপ্টিমাইজ করা যায়, যা বিভিন্ন বাজারের অবস্থার সাথে খাপ খায়

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

  1. এমএসিডি এবং আরএসআই-এর উপর ভিত্তি করে ডেটা ভুয়া বিরতি এবং অস্বাভাবিক ডেটা প্রভাবিত হতে পারে, যা ভুল সংকেত দিতে পারে

  2. নির্দিষ্ট প্যারামিটার সেটিংগুলি বাজারের পরিবর্তনের সাথে খাপ খাইয়ে নিতে পারে না এবং অপ্টিমাইজেশন প্রয়োজন

  3. বিক্রয় বা ক্রয় সংকেত বিলম্বিত হতে পারে, যার ফলে ফার্ন পয়েন্টে কেনা-বেচা সম্ভব হবে না।

  4. পজিশনের মাত্র ২টি বিকল্প রয়েছে, যা ঝড়ের পরিস্থিতি থেকে লাভবান হতে পারে না

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

  1. বিভিন্ন প্যারামিটার সমন্বয় পরীক্ষা করে সেরা প্যারামিটার খুঁজে বের করুন

  2. ভুয়া ব্রেকিং এড়াতে অতিরিক্ত পরিস্রাবণ ব্যবস্থা

  3. একতরফা ব্যবসায়ের ক্ষতি হ্রাস করার জন্য ক্ষতি হ্রাস করার কৌশল বাড়ানো

  4. পজিশন ম্যানেজমেন্ট বাড়ান, ট্রেন্ডের সময় পজিশন বাড়ান, ঝড়ের সময় পজিশন কমান

  5. অন্যান্য সূচকগুলির সাথে মিলিত হয়ে আরও সঠিক ক্রয়-বিক্রয় খুঁজুন

  6. বিভিন্ন জাত এবং সময়কালের উপর পরীক্ষা

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 04:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Revision:        5
// Author:          @Hugo_Moriceau
//study("Thesis_EMLYON_Withdate-strategies-Daily_Crypto_Moriceau_indicator",overlay=true)

// Pyramide 10 order size 100, every tick

strategy("Daily_Crypto_Moriceau_indicator",overlay=true)

// === GENERAL INPUTS ===

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)

macd = fastMA - slowMA
signal = sma(macd, 9)
rsi = rsi(close,14)



tradeInvert     = input(defval = false, title = "Invert Trade Direction?")

// === LOGIC ===

// is fast ma above slow ma?
aboveBelow = fastMA >= slowMA ? true : false

// are we inverting our trade direction?
tradeDirection = tradeInvert ? aboveBelow ? false : true : aboveBelow ? true : false

// === Plot Setting ===

//plot(fastMA,color=red)
//plot(slowMA,color=blue)
//barcolor(color=iff(fastMA > slowMA, yellow, na))
//barcolor(color=iff(fastMA < slowMA, black, na))
barcolor(color=iff(macd > 0.12*close , fuchsia, na))
barcolor(color=iff(macd < -0.1*close , lime, na))
dataS= macd > 0.125 and rsi>81 and fastMA > slowMA
dataB= macd < -0.1  and rsi<27 and fastMA< slowMA


plotchar(dataB, char='B',color=black,size = size.tiny,location = location.belowbar,transp= 0)  
plotchar(dataS, char='S',color=black,size = size.tiny,location = location.abovebar,transp= 0)


// === BACKTEST RANGE ===
FromMonth = input(defval = 01, title = "From Month", minval = 1)
FromDay   = input(defval = 01, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 2, title = "To Month", minval = 1)
ToDay     = input(defval = 10, title = "To Day", minval = 1)
ToYear    = input(defval = 2019, title = "To Year", minval = 2018)


// === STRATEGY RELATED INPUTS ===+
// the risk management inputs
inpTakeProfit   = input(defval = 20000, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 1500, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 100, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===

// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.

useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na


// === STRATEGY - LONG POSITION EXECUTION ===

enterLong() => not tradeDirection[1] and tradeDirection 
exitLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Long", long = true, when = enterLong()) // use function or simple condition to decide when to get in
strategy.close(id = "Long", when = exitLong()) // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() => tradeDirection[1] and not tradeDirection
exitShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Short", long = false, when = enterShort())
strategy.close(id = "Short", when = exitShort())

// === STRATEGY RISK MANAGEMENT EXECUTION ===

// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)