ম্যাকডি-ভি এবং ফিবোনাচি মাল্টি-টাইমফ্রেম ডায়নামিক টেক লাভ কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-04-26 12:00:21
ট্যাগঃএমএসিডিএমএসিডি-ভিএটিআরইএমএএমএ

img

সারসংক্ষেপ

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

কৌশলগত নীতি

  1. বিভিন্ন সময়সীমার উপর MACD-V সূচক গণনা করুন (উদাহরণস্বরূপ, 5 মিনিট এবং 30 মিনিট) । MACD-V বিভিন্ন বাজারের অবস্থার সাথে খাপ খাইয়ে নেওয়ার জন্য স্ট্যান্ডার্ড MACD এ ATR অস্থিরতা সমন্বয় প্রবর্তন করে।
  2. একটি উচ্চতর সময়সীমার (যেমন, 30 মিনিট) উপর, গত নির্দিষ্ট সময়ের সর্বোচ্চ উচ্চ এবং সর্বনিম্ন নিম্ন গণনা করুন (যেমন, 9 সময়কাল), তারপর এই পরিসীমা উপর ভিত্তি করে ফিবোনাচি retracement মাত্রা গণনা।
  3. বর্তমান বন্ধের মূল্য এবং ফিবোনাচি স্তরের মধ্যে সম্পর্ক, পাশাপাশি MACD-V এর মান এবং দিকনির্দেশের উপর ভিত্তি করে একটি অবস্থান খুলতে হবে কিনা তা নির্ধারণ করুন। উদাহরণস্বরূপ, যখন দাম 38.2% ফিবোনাচি স্তরের কাছাকাছি ফিরে আসে এবং MACD-V -50 এবং 150 এর মধ্যে নেমে যাচ্ছে, একটি শর্ট অবস্থান খুলুন।
  4. একটি পজিশন খোলার পরে, লাভ রক্ষা এবং ঝুঁকি নিয়ন্ত্রণের জন্য একটি ট্রেলিং স্টপ ব্যবহার করুন। ট্রেলিং স্টপ পজিশনটি দামের গতি এবং কৌশল পরামিতিগুলির উপর ভিত্তি করে গতিশীলভাবে সামঞ্জস্য করা হয়।
  5. যদি মূল্য ট্রেলিং স্টপ বা ফিক্সড স্টপ লস লেভেলের কাছে পৌঁছায়, তাহলে পজিশন বন্ধ করুন।

সুবিধা বিশ্লেষণ

  1. এই কৌশলটি একাধিক সময়সীমার বিশ্লেষণ ব্যবহার করে, যা বাজারের প্রবণতা এবং ওঠানামা সম্পর্কে আরও বিস্তৃত ধারণা প্রদান করে।
  2. ম্যাকডি-ভি সূচকটি মূল্যের অস্থিরতা বিবেচনা করে, এটি ট্রেন্ডিং এবং রেঞ্জিং উভয় বাজারে কার্যকর করে।
  3. ফিবোনাচি স্তরগুলি মূল সমর্থন এবং প্রতিরোধের ক্ষেত্রগুলি কার্যকরভাবে ক্যাপচার করতে পারে, ট্রেডিং সিদ্ধান্তের জন্য রেফারেন্স সরবরাহ করে।
  4. ট্রেলিং স্টপগুলি ট্রেন্ডের ধারাবাহিকতা চলাকালীন লাভজনকতা বজায় রাখতে এবং মূল্য বিপরীতমুখী হওয়ার সময় সময়মতো অবস্থান বন্ধ করতে সক্ষম করে, ঝুঁকি নিয়ন্ত্রণ করে।
  5. কৌশলগত যুক্তি স্পষ্ট, পরামিতিগুলি সামঞ্জস্যযোগ্য এবং অভিযোজনযোগ্যতা শক্তিশালী।

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

  1. কৌশলটি বিভিন্ন বাজারে ঘন ঘন ট্রেডিংয়ের অভিজ্ঞতা অর্জন করতে পারে, যার ফলে উচ্চ লেনদেনের ব্যয় হতে পারে।
  2. ট্রেন্ডের মূল্যায়নের জন্য প্রযুক্তিগত সূচকগুলির উপর নির্ভর করা যখন বাজারে মিথ্যা ব্রেকআউট বা দীর্ঘস্থায়ী ওসিলেশন ঘটে তখন ভুল মূল্যায়ন হতে পারে।
  3. স্থির স্টপ লস পজিশনগুলি চরম বাজারের অবস্থার জন্য সময়মত প্রতিক্রিয়া জানাতে পারে না, যার ফলে উল্লেখযোগ্য ক্ষতি হতে পারে।
  4. অনুপযুক্ত প্যারামিটার নির্বাচন খারাপ কৌশল কর্মক্ষমতা হতে পারে।

অপ্টিমাইজেশান নির্দেশাবলী

  1. প্রবণতা মূল্যায়নের নির্ভুলতা উন্নত করতে আরও সময়সীমা এবং সূচক যেমন দীর্ঘমেয়াদী এমএ প্রবর্তন করা।
  2. পজিশন ম্যানেজমেন্টকে অপ্টিমাইজ করুন, যেমন এটিআর বা মূল্য পরিসরের উপর ভিত্তি করে পজিশন আকারকে গতিশীলভাবে সামঞ্জস্য করা।
  3. বিভিন্ন বাজারের অবস্থার জন্য বিভিন্ন পরামিতি সমন্বয় সেট করুন অভিযোজনযোগ্যতা উন্নত করতে।
  4. নিম্নমুখী ঝুঁকিকে আরও ভালভাবে নিয়ন্ত্রণ করার জন্য ট্রেইলিং স্টপ ছাড়াও ট্রেইলিং স্টপ লস চালু করুন।
  5. সেরা প্যারামিটার সমন্বয় খুঁজে পেতে প্যারামিটার ব্যাকটেস্ট এবং অপ্টিমাইজ করুন।

সংক্ষিপ্তসার

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


/*backtest
start: 2024-03-26 00:00:00
end: 2024-04-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © catikur

//@version=5
strategy("Advanced MACD-V and Fibonacci Strategy with EMA Trailing TP", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=1000, margin_long=1./10*50, margin_short=1./10*50, slippage=0, commission_type=strategy.commission.percent, commission_value=0.05)

// Parametreler
fast_len = input.int(12, title="Fast Length", minval=1, group="MACD-V Settings")
slow_len = input.int(26, title="Slow Length", minval=1, group="MACD-V Settings")
signal_len = input.int(9, title="Signal Smoothing", minval=1, group="MACD-V Settings")
atr_len = input.int(26, title="ATR Length", minval=1, group="MACD-V Settings")
source = input.source(close, title="Source", group="MACD-V Settings")

//ema_length = input.int(20, title="EMA Length for Trailing TP", group="Trailing TP Settings")
trailing_profit = input.float(1000, title="Trailing Profit", minval=0.01, maxval=1000000, step=0.01, group="Trailing TP Settings")
trailing_offset = input.float(30000, title="Trailing Offset", minval=0.01, maxval=1000000, step=0.01, group="Trailing TP Settings")
trailing_factor = input.float(0.01, title="Trailing Factor", minval=0.01, maxval=1000000, step=0.01, group="Trailing TP Settings")
fix_loss = input.float(20000, title="Fix Loss", minval=0.01, maxval=1000000, step=0.01, group="Trailing TP Settings")

fib_lookback = input.int(9, title="Fibonacci Lookback Periods", minval=1, group="Fibonacci Settings")

macd_tf = input.timeframe("5", title="MACD Timeframe", group="Timeframe Settings")
fib_tf = input.timeframe("30", title="Fibonacci Timeframe", group="Timeframe Settings")
//ema_tf = input.timeframe("30", title="EMA Timeframe for Trailing TP", group="Timeframe Settings")




// MACD-V Hesaplama
atr = ta.atr(atr_len)
ema_slow = ta.ema(source, slow_len)
ema_fast = ta.ema(source, fast_len)

atr_tf = request.security(syminfo.tickerid, macd_tf , atr)
ema_slow_tf = request.security(syminfo.tickerid, macd_tf , ema_slow)
ema_fast_tf = request.security(syminfo.tickerid, macd_tf , ema_fast)

macd = ( ema_fast_tf - ema_slow_tf ) / atr_tf * 100
signal = ta.ema(macd, signal_len)
hist = macd - signal
hist_prev = hist[1]

// log.info("MACD {0} ", macd)
// log.info("Signal {0} ", signal)
// log.info("Histogram {0} ", hist)
// log.info("Previous Histogram {0} ", hist_prev)

// EMA for Trailing TP
//ema_trailing_tf = ta.ema(close, ema_length)

//ema_trailing = request.security(syminfo.tickerid, ema_tf, ema_trailing_tf)

//log.info("EMA Trailing {0} ", ema_trailing)

// Fibonacci Seviyeleri

high_val_tf = ta.highest(high, fib_lookback)
low_val_tf = ta.lowest(low, fib_lookback)

h1 = request.security(syminfo.tickerid, fib_tf, high_val_tf)
l1 = request.security(syminfo.tickerid, fib_tf, low_val_tf)

fark = h1 - l1

//Low ile fark
hl236 = l1 + fark * 0.236
hl382 = l1 + fark * 0.382
hl500 = l1 + fark * 0.5
hl618 = l1 + fark * 0.618
hl786 = l1 + fark * 0.786
//High ile fark
lh236 = h1 - fark * 0.236
lh382 = h1 - fark * 0.382
lh500 = h1 - fark * 0.5
lh618 = h1 - fark * 0.618
lh786 = h1 - fark * 0.786

hbars_tf = -ta.highestbars(high, fib_lookback)
lbars_tf = -ta.lowestbars(low, fib_lookback)

hbars = request.security(syminfo.tickerid, fib_tf , hbars_tf)
lbars = request.security(syminfo.tickerid, fib_tf , lbars_tf)

fib_236 = hbars > lbars ? hl236 : lh236
fib_382 = hbars > lbars ? hl382 : lh382
fib_500 = hbars > lbars ? hl500 : lh500
fib_618 = hbars > lbars ? hl618 : lh618
fib_786 = hbars > lbars ? hl786 : lh786

// log.info("Fibo 382 {0} ", fib_382)
// log.info("Fibo 618 {0} ", fib_618)

// Keep track of the strategy's highest and lowest net profit
var highestNetProfit = 0.0
var lowestNetProfit  = 0.0

var bool sell_retracing = false
var bool sell_reversing = false
var bool buy_rebound = false
var bool buy_rallying = false

// Satış Koşulları
sell_retracing := (signal > -20) and (macd > -50 and macd < 150) and (macd < signal) and (hist < hist_prev) and (close < fib_382)
sell_reversing := (macd > -150 and macd < -50) and (macd < signal) and (hist < hist_prev) and (close < fib_618)

// log.info("Retracing var mi: {0} ", sell_retracing)
// log.info("Reversing var mi: {0} ", sell_reversing)

// Alım Koşulları
buy_rebound := (signal < 20) and (macd > -150 and macd < 50) and (macd > signal) and (hist > hist_prev) and ((fib_618 < close) or ((fib_618 > close ) and (close > fib_382)))
buy_rallying := (macd > 50 and macd < 150) and (macd > signal) and (hist > hist_prev) and (close > fib_618)

// log.info("Rallying var mi: {0} ", buy_rallying)
// log.info("Rebound var mi: {0} ", buy_rebound)

// Emirleri Yerleştirme
if (sell_retracing == true and strategy.opentrades == 0 )
    strategy.entry("sell_retracing", strategy.short)

if (sell_reversing == true and strategy.opentrades == 0 )
    strategy.entry("sell_reversing", strategy.short)

if (buy_rebound == true and strategy.opentrades == 0 )
    strategy.entry("buy_rebound", strategy.long)

if (buy_rallying == true and strategy.opentrades == 0 )
    strategy.entry("buy_rallying", strategy.long)


// log.info("open order: {0} ", strategy.opentrades )


highestNetProfit := math.max(highestNetProfit, strategy.netprofit)
lowestNetProfit  := math.min(lowestNetProfit, strategy.netprofit)




// Plot the net profit, as well as its highest and lowest value
//plot(strategy.netprofit, style=plot.style_area, title="Net profit",
//     color=strategy.netprofit > 0 ? color.green : color.red)

//plot(highestNetProfit, color=color.green, title="Highest net profit")
//plot(lowestNetProfit, color=color.red, title="Lowest net profit")

// Trailing Take Profit
//long_trailing_stop = ema_trailing * trailing_factor
//short_trailing_stop = ema_trailing / trailing_factor

//log.info("long trailing stop {0} ", long_trailing_stop)
//log.info("short trailing stop {0} ", short_trailing_stop)
//log.info("avg price {0} ", strategy.position_avg_price)
//trail_price1 = strategy.position_avg_price * (1 + trailing_factor)
//trail_price2 = strategy.position_avg_price * (1 - trailing_factor)
// log.info("position_size {0} ", strategy.position_size)

// Trailing Take Profit
var float long_trailing_stop = 0.0
var float short_trailing_stop = 0.0

//if (strategy.position_size > 0)
 //   long_trailing_stop := math.max(long_trailing_stop, close * (1 + trailing_factor))  // Yeni bir maksimum değer belirlendiğinde güncelle
//if (strategy.position_size < 0)
 //  short_trailing_stop := math.min(short_trailing_stop, close * (1 - trailing_factor))  // Yeni bir minimum değer belirlendiğinde güncelle

//log.info("long trailing {0} ", long_trailing_stop)
// log.info("trailing factor{0} ", trailing_factor)
//log.info("short trailing {0} ", short_trailing_stop)

if (strategy.position_size != 0 )
    strategy.exit("Exit Long", from_entry="buy_rebound", trail_points = trailing_profit, trail_offset = trailing_offset, loss = fix_loss)
    strategy.exit("Exit Long", from_entry="buy_rallying", trail_points = trailing_profit, trail_offset = trailing_offset, loss = fix_loss)
    strategy.exit("Exit Short", from_entry="sell_retracing", trail_points = trailing_profit, trail_offset = trailing_offset, loss = fix_loss)
    strategy.exit("Exit Short", from_entry="sell_reversing", trail_points = trailing_profit, trail_offset = trailing_offset, loss = fix_loss)

সম্পর্কিত

আরো