MACD মুভিং এভারেজ ক্রস ট্রেন্ড ট্রেলিং স্টপ লস কৌশল


সৃষ্টির তারিখ: 2023-11-06 11:56:14 অবশেষে সংশোধন করুন: 2023-11-06 11:56:14
অনুলিপি: 0 ক্লিকের সংখ্যা: 626
1
ফোকাস
1621
অনুসারী

MACD মুভিং এভারেজ ক্রস ট্রেন্ড ট্রেলিং স্টপ লস কৌশল

ওভারভিউ

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

মূলনীতি

প্রবেশের সংকেত

যখন একটি দ্রুত EMA একটি ধীর EMA অতিক্রম করে, এটি একটি ক্রয় সংকেত হিসাবে বিবেচিত হয়। একই সময়ে, একটি দ্রুত SMA একটি ধীর SMA অতিক্রম করে, এটি একটি দীর্ঘ সময়ের তুলনায় একটি স্বল্পমেয়াদী মূল্য বৃদ্ধি গতির ইঙ্গিত দেয়। সুতরাং, MACD লাইনে একটি সংকেত লাইন অতিক্রম এবং একটি EMA এবং SMA ক্রস সংকেত একটি প্রবণতা দিকে, একটি শক্তিশালী প্রবেশের সময় নির্ধারণ করা যেতে পারে।

ক্ষতি বন্ধ করার উপায়

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

খেলাধুলা

প্রথমত, সামান্য বৃদ্ধি পেলে পজিশনের কিছু অংশ মুনাফা মুছে ফেলা হয়। তারপরে দামের উল্লেখযোগ্য বৃদ্ধি পেলে পজিশনের কিছু অংশ মুনাফা হয়। অবশেষে, স্টপ লস ট্রিগার না হওয়া পর্যন্ত পজিশনের কিছু অংশ ট্র্যাক রাখা হয়। এইভাবে কিছু অংশ মুনাফা লক করা যায় এবং কিছু সময়ের জন্য মুনাফা রাখা যায়।

সুবিধা

  • ট্রেন্ডের দিকনির্দেশনা নির্ধারণের জন্য MACD ব্যবহার করা হয়, এবং EMA এবং SMA এর ক্রস সংকেত দ্বারা সাহায্য করা হয়, যাতে প্রবেশের সময়টি আরও সঠিকভাবে নির্ধারণ করা যায়
  • এটিআর দ্বারা গণনা করা স্টপ লস স্টপ এবং ট্রেন্ড ট্র্যাকিং উভয়ই করতে পারে
  • আপনি যদি আপনার টাকা ফেরত পেতে চান, আপনি যদি আপনার মুনাফা লক করতে চান, এবং আপনি যদি কিছু সময়ের জন্য আপনার টাকা ধরে রাখতে চান, তাহলে আপনি আপনার টাকা ফেরত পেতে পারেন।

ঝুঁকি ও প্রতিকার

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

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

  • MACD প্যারামিটারগুলিকে অপ্টিমাইজ করা হয়েছে যাতে এটি প্রবণতা সম্পর্কে আরও সঠিকভাবে বিচার করতে পারে

  • ATR চক্রের প্যারামিটারগুলিকে অপ্টিমাইজ করুন যাতে স্টপ লস আরও উপযুক্ত হয়

  • অপ্টিমাইজড আউটপুট অনুপাত এবং পজিশন নিয়ন্ত্রণ, ঝুঁকি হ্রাস

  • মোশন স্টপ বাড়ানো বা স্টপ লস অপ্টিমাইজেশান বিবেচনা করা

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*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")