এই কৌশলটি প্রবেশ এবং প্রস্থান সিদ্ধান্তের জন্য এমএসিডি ক্রসওভার সংকেতগুলি ট্রেড করে। এমএসিডি দ্রুত এবং ধীর ইএমএগুলির সমন্বয়ে গঠিত, এবং শূন্যের উপরে এমএসিডি লাইনের ক্রসওভার বাণিজ্য সংকেত উত্পন্ন করে। এটি একটি সাধারণ প্রবণতা অনুসরণকারী পরিমাণগত কৌশল।
কৌশলগত যুক্তি:
দ্রুত EMA এবং ধীর EMA গণনা করুন, তাদের পার্থক্য MACD লাইন গঠন করে।
সিগন্যাল লাইন বের করার জন্য আরেকটি ইএমএ ব্যবহার করে ম্যাকডি লাইনটি মসৃণ করুন।
সিগন্যালের উপরে MACD ক্রসিং করলে লম্বা এবং এর নিচে ক্রসিং করলে শর্ট।
ঝুঁকি ব্যবস্থাপনার জন্য শতকরা স্টপ লস এবং লাভ নিন।
উপকারিতা:
ম্যাকডি (MACD) একক ইএমএ (single EMA) এর তুলনায় উন্নত হয় যাতে প্রবণতা আরও স্পষ্টভাবে চিহ্নিত করা যায়।
ব্রেকআউট ট্রেডিং সময়মতো গুরুত্বপূর্ণ পয়েন্টগুলোকে চিহ্নিত করে।
স্টপ লস/টেক প্রফিট ব্যবস্থা বাণিজ্য ঝুঁকি নিয়ন্ত্রণে সহায়তা করে।
ঝুঁকি:
এমএসিডি শূন্য রেখার কাছে আরও মিথ্যা ব্রেকআউট।
বিভিন্ন ট্রেডিং যন্ত্রের জন্য প্রয়োজনীয় পরামিতি সমন্বয়।
ট্রেন্ড ট্রেডিং ইভেন্ট ঝুঁকি প্রবণ, যা স্টপ প্রয়োজন।
সংক্ষেপে, এই কৌশলটি এমএসিডি এবং সিগন্যাল লাইন ক্রসওভারের উপর ভিত্তি করে ট্রেড করে। এমএসিডি এর শক্তি কর্মক্ষমতা উপকার করে তবে মিথ্যা ব্রেকআউট ঝুঁকি বজায় থাকে। দীর্ঘমেয়াদে স্থিতিশীল লাভের জন্য এখনও সতর্ক ঝুঁকি নিয়ন্ত্রণের প্রয়োজন।
/*backtest start: 2023-01-01 00:00:00 end: 2023-09-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("uray MACD", overlay=false, pyramiding = 0, calc_on_every_tick=true, precision=2, currency="USD", default_qty_value=10, default_qty_type=strategy.cash,initial_capital=100,commission_type=strategy.commission.percent,commission_value=0.1) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 6, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window inTimeframe() => true isPosLong = strategy.position_size > 0 isPosShort = strategy.position_size < 0 isNoMarginPos= strategy.position_size == 0 fastLength = input(12, minval = 1, title = "MACD fast") slowlength = input(26, minval = 1, title = "MACD slow") MACDLength = input( 9, minval = 1, title = "MACD length") stopLoss = input( 10, minval = 1, title = "Stop Loss (price %)", type=float) takeProfit = input( 50, minval = 1, title = "Take Profit (price %)", type=float) src = close // Source of Calculations (Close of Bar) MACD = ta.ema(src, fastLength) - ta.ema(src, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD stopLossValue = close*(stopLoss/100)/syminfo.mintick takeProfitValue = close*(takeProfit/100)/syminfo.mintick switchLongTrigger = ta.crossover(delta, 0) switchShortTrigger = ta.crossunder(delta, 0) closeLongTrigger = ta.crossunder(delta, 0) closeShortTrigger = ta.crossover(delta, 0) entryLongTrigger = ta.crossover(delta, 0) entryShortTrigger = ta.crossunder(delta, 0) // if inTimeframe() // if isNoMarginPos // if entryLongTrigger // strategy.entry("Long", strategy.long, comment="Entry Long") // strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue) // if entryShortTrigger // strategy.entry("Short", strategy.short, comment="Entry Short") // strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue) // if isPosShort // if switchLongTrigger // strategy.close_all() // strategy.entry("Long", strategy.long, comment="switch Long") // strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue) // if closeLongTrigger // strategy.close_all() // if isPosLong // if switchShortTrigger // strategy.close_all() // strategy.entry("Short", strategy.short, comment="switch Short") // strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue) // if closeShortTrigger // strategy.close_all() if inTimeframe() strategy.entry("Long", strategy.long, comment="Entry Long", when=entryLongTrigger) strategy.close("Long", when=entryShortTrigger) strategy.entry("Short", strategy.short, comment="Entry Short", when=entryShortTrigger) strategy.close("Short", when=entryLongTrigger) strategy.exit("Stop (short SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryShortTrigger) strategy.exit("Stop (long SL/TP)", loss=stopLossValue, profit=takeProfitValue, when=entryLongTrigger)