এই কৌশলটি ট্রেন্ডের দিক নির্ধারণের জন্য এমএসিডি ব্যবহার করে, যা নিশ্চিতকরণের জন্য ইএমএ এবং এসএমএ ক্রসওভারের সাথে মিলিত হয়। এন্ট্রি সংকেতটি যখন এমএসিডি হিস্টোগ্রামটি সিগন্যাল লাইনের উপরে অতিক্রম করে এবং প্রবণতা আপ হয়। স্টপ লসটি ভাসমান এটিআর ট্রেইলিং স্টপের নীচে দামের স্তরে সেট করা হয়। কৌশলটি লাভ নেওয়ার জন্য আংশিকভাবে প্রস্থান করে, বৃহত্তর দামের উত্থানে আরও বেশি প্রস্থান করে এবং স্টপ লস না হওয়া পর্যন্ত ট্রেইলিং স্টপের সাথে কিছু অবস্থান ধরে রাখে।
যখন দ্রুততম ইএমএ ধীরতম ইএমএ এর উপরে অতিক্রম করে, এটি সংক্ষিপ্ত মেয়াদী প্রবণতা দীর্ঘমেয়াদী প্রবণতার চেয়ে ভাল, একটি ক্রয়ের সংকেত দেয়। এদিকে, ধীরতম এসএমএ এর উপরে দ্রুত এসএমএ অতিক্রম করাও স্বল্পমেয়াদে শক্তিশালী আপসাইড গতির পরামর্শ দেয়। সুতরাং ইএমএ এবং এসএমএ ক্রসওভারের উপর ভিত্তি করে এমএসিডি লাইন ক্রসিংয়ের সংমিশ্রণ এবং আপট্রেন্ড শক্তিশালী এন্ট্রি সংকেত সনাক্ত করতে সহায়তা করে।
এটিআর স্টপ লস স্তর গণনা করতে ব্যবহৃত হয়। এটিআর কার্যকরভাবে দামের ওঠানামা পরিসীমা পরিমাপ করতে পারে। যখন দাম এই পরিসরের নীচে ভাঙ্গবে, তখন স্টপ লস ট্রিগার করা হয়। এটিআর সময়কাল সামঞ্জস্য করা যেতে পারে - ছোট সময়কাল আরও সুনির্দিষ্ট স্টপ দেয় তবে বন্ধ করা সহজ, যখন বৃহত্তর সময়কাল আরও প্রশস্ত স্টপ দেয় তবে আরও শক্তিশালী। স্টপ স্তরটি দামের উপরেও অনুসরণ করে, প্রবণতা অনুসরণকারী প্রভাব অর্জন করে।
মুনাফা নেওয়ার জন্য ছোট দামের উত্থানের উপর আংশিকভাবে প্রস্থান করে। মুনাফা লক করার জন্য বড় দামের স্পাইকগুলিতে আরও প্রস্থান করে। স্টপ লস আঘাত না হওয়া পর্যন্ত ট্রেলিং স্টপ সহ কিছু অবস্থান রাখে। এটি মুনাফা লক করতে সহায়তা করে, যদিও এখনও কিছু সময়ের জন্য অবস্থান ধরে রাখতে সক্ষম হয়।
এমএসিডি এবং প্রবণতা সূচক থেকে ভুল সংকেত পাওয়ার ঝুঁকি। সূক্ষ্ম সেটআপ প্যারামিটার বা অন্যান্য সূচক যোগ করুন।
ATR স্টপ লস হ্রাসের ঝুঁকি। এটি ATR সময় বা স্টপ লস মাল্টিপ্লায়ার বৃদ্ধি করতে পারে।
পেছনের অবস্থান আটকে যাওয়ার ঝুঁকি। পেছনের অবস্থানের আকার হ্রাস করুন এবং সময় হ্রাস করুন।
প্রবণতা আরও ভালভাবে বিচার করার জন্য MACD পরামিতিগুলি অপ্টিমাইজ করুন
আরও ভাল স্টপ লস স্তরের জন্য ATR সময়কাল অপ্টিমাইজ করুন
ফাঁদে পড়া ঝুঁকি হ্রাস করার জন্য প্রস্থান অনুপাত এবং অবস্থানের আকারকে অনুকূল করুন
স্টপ লস উন্নত করার জন্য মুভিং টেক লাভ বা ভোলাটিলিটি ইনডেক্স যুক্ত করার কথা বিবেচনা করুন
এই কৌশলটি ট্রেন্ড এবং এন্ট্রি টাইমিং সঠিকভাবে নির্ধারণ করতে এমএসিডি, ইএমএ / এসএমএ এবং অন্যান্য সূচকগুলিকে একত্রিত করে। প্রবণতা অনুসরণ করার সময় ফ্লোটিং এটিআর স্টপ লস লাভকে লক করতে সহায়তা করে। মুনাফা গ্রহণ, লাভ নিশ্চিত করতে এবং স্থিতি ধরে রাখার জন্য প্রস্থানগুলি স্টেগার্ড করা হয়। সামগ্রিকভাবে এটি শালীন ফলাফলের সাথে স্থিতিশীল। তবে আরও ভাল রিটার্নের জন্য পরামিতি এবং প্রস্থানগুলি আরও অনুকূলিত করা যেতে পারে।
/*backtest start: 2022-10-30 00:00:00 end: 2023-11-05 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/ // © Deobald //@version=4 strategy("MACD Strategy", overlay=true) // FUNCTIONS Ema(src,p) => ema = 0. sf = 2/(p+1) ema := nz(ema[1] + sf*(src - ema[1]),src) Sma(src,p) => a = cum(src), (a - a[max(p,0)])/max(p,0) Atr(p) => atr = 0. Tr = max(high - low, max(abs(high - close[1]), abs(low - close[1]))) atr := nz(atr[1] + (Tr - atr[1])/p,Tr) /// TREND ribbon_period = input(34, "Period", step=1) leadLine1 = ema(close, ribbon_period) leadLine2 = sma(close, ribbon_period) p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1) p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1) fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c) // MACD fast_length = input(title="Fast Length", type=input.integer, defval=3) slow_length = input(title="Slow Length", type=input.integer, defval=5) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 2) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? Sma(src, fast_length) : Ema(src, fast_length) slow_ma = sma_source ? Sma(src, slow_length) : Ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? Sma(macd, signal_length) : Ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) // plot(macd, title="MACD", color=col_macd, transp=0) // plot(signal, title="Signal", color=col_signal, transp=0) // TAKE PROFIT AND STOP LOSS long_tp1_inp = input(1, title='Long Take Profit 1 %', step=0.1)/100 long_tp1_qty = input(10, title="Long Take Profit 1 Qty", step=1) long_tp2_inp = input(5, title='Long Take Profit 2%', step=0.1)/100 long_tp2_qty = input(50, title="Long Take Profit 2 Qty", step=1) long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp) long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp) // Stop Loss multiplier = input(2.2, "SL Mutiplier", minval=1, step=0.1) ATR_period=input(17,"ATR period", minval=1, step=1) // Strategy entry_long=crossover(macd,signal) and leadLine2 < leadLine1 entry_price_long=valuewhen(entry_long,close,0) SL_floating_long = entry_price_long - multiplier*Atr(ATR_period) exit_long= close < SL_floating_long ///// BACKTEST PERIOD /////// testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => true if testPeriod() strategy.entry("long", strategy.long, comment="Long", when=entry_long) strategy.exit("TP1","long", qty_percent=long_tp1_qty, limit=long_take_level_1)//, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick) strategy.exit("TP2", qty_percent=long_tp2_qty, limit=long_take_level_2) //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick) strategy.close_all("long", when=exit_long, comment="exit long" ) // LONG POSITION plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit") plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit") plot(strategy.position_size > 0 ? SL_floating_long : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")