বলিঙ্গার ব্যান্ড এবং MACD এর উপর ভিত্তি করে পরিমাণগত ট্রেডিং কৌশল


সৃষ্টির তারিখ: 2023-12-20 15:55:18 অবশেষে সংশোধন করুন: 2023-12-20 15:55:18
অনুলিপি: 0 ক্লিকের সংখ্যা: 943
1
ফোকাস
1621
অনুসারী

বলিঙ্গার ব্যান্ড এবং MACD এর উপর ভিত্তি করে পরিমাণগত ট্রেডিং কৌশল

ওভারভিউ

এই কৌশলটি বুলিন-ব্যান্ড এবং MACD সূচককে একত্রিত করে, যা বুলিন-ব্যান্ডের ব্যবহার করে বাজার ওভারসেলের সুযোগ নির্ধারণ করে এবং MACD সূচকটি প্রবণতা বিপরীতের জন্য ট্রেডিং কৌশলটি নির্ধারণ করে। কৌশলটির নাম হল বুলিন-ম্যাকড বিপরীত কৌশল।

কৌশল নীতি

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

বিশেষ করে, বুলিনের নিম্নগতির স্পর্শ এবং পার্থক্যের MACD ব্রেকিং সিগন্যাল লাইনের দিকে একই সময়ে ট্রিগার করা হলে একটি ক্রয় সংকেত উত্পন্ন করে; যখন বন্ধের মূল্য বৃদ্ধি স্টপ লস অতিক্রম করে তখন একটি স্টপ সংকেত উত্পন্ন করে।

কৌশলগত শক্তি বিশ্লেষণ

এই কৌশলটি ব্রিন-ব্যান্ড ওভারসোল্ড জোন এবং MACD ট্রেন্ড রিভার্সনের সংকেতকে সংহত করে এবং কম ক্রয়-মূল্য অর্জন করে। একই সাথে, কৌশলটি স্টপ-অফ পদ্ধতি যুক্ত করে, যা লাভকে লক করতে এবং ক্ষতি এড়াতে সক্ষম হয়।

বিশেষ করে, এর সুবিধাগুলো হলঃ

  1. বুলিন ব্যান্ড ওভারসোল্ড জোন এবং MACD সূচকগুলির সাথে মিলিত, একটি ভাল ক্রয় পয়েন্ট অর্জন করা
  2. ট্রেন্ডের বিপরীত দিক নির্ধারণের জন্য MACD ব্যবহার করুন, যাতে ভুয়া ব্রেকডাউন হওয়ার সম্ভাবনা কম থাকে
  3. স্টপ লস এন্টিস্টিক পদ্ধতি ব্যবহার করে ঝুঁকিকে কার্যকরভাবে নিয়ন্ত্রণ করুন

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

এই কৌশলটির কিছু ঝুঁকিও রয়েছে, যার মধ্যে রয়েছেঃ

  1. বুলিনব্যান্ডের সম্ভাব্যতা ভেঙ্গে যাওয়ার ফলে ওভারসেলিং জোনের বিচার ব্যর্থ হতে পারে
  2. MACD-এর ফাঁক-বিভাজনও হতে পারে মিথ্যা-বিভাজন, যার ফলে ভুল হওয়ার সম্ভাবনা থাকে
  3. অযৌক্তিকভাবে স্টপডাউন অবস্থান সেট করা হয়েছে, যা খুব হালকা বা কঠোর হতে পারে, যার ফলে দুর্বল প্রতিরক্ষা বা খুব তীব্র স্টপডাউন হয়

উপরের ঝুঁকির জন্য, নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করা যেতে পারেঃ

  1. অন্যান্য সূচকগুলির সাথে মিলিতভাবে, ব্রিন-ব্রেকিং সিগন্যালের কার্যকারিতা যাচাই করা হয়েছে
  2. ফিল্টারগুলি যেমন ক্রমবর্ধমান শক্তি সূচকগুলি, MACD ভুয়া বিপর্যয় এড়াতে
  3. বিভিন্ন প্যারামিটার স্টপ লস অপ্টিমাইজেশন এবং পরীক্ষা

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

এই কৌশলটি আরও উন্নত করার সুযোগ রয়েছে, যার মধ্যে রয়েছেঃ

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

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
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/
// © DojiEmoji

//@version=4
strategy("[KL] BOLL + MACD Strategy v2 (published)",overlay=true)

// BOLL bands {
BOLL_length = 20
BOLL_src = close
BOLL_mult = 2.0
BOLL_basis = sma(BOLL_src, BOLL_length)
BOLL_dev = BOLL_mult * stdev(BOLL_src, BOLL_length)
BOLL_upper = BOLL_basis + BOLL_dev
BOLL_lower = BOLL_basis - BOLL_dev
BOLL_offset = 0
plot(BOLL_basis, "Basis", color=#872323, offset = BOLL_offset)
BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = BOLL_offset, transp=50)
BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = BOLL_offset, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }
// MACD signals {
MACD_fastLen = 12
MACD_slowLen = 26
MACD_Len = 9
MACD = ema(close, MACD_fastLen) - ema(close, MACD_slowLen)
aMACD = ema(MACD, MACD_Len)
MACD_delta = MACD - aMACD
// }
backtest_timeframe_start = input(defval = timestamp("01 Nov 2010 13:30 +0000"), title = "Backtest Start Time", type = input.time)
//backtest_timeframe_end = input(defval = timestamp("05 Mar 2021 19:30 +0000"), title = "Backtest End Time", type = input.time)
TARGET_PROFIT_MODE = input(false,title="Exit when Risk:Reward met")
REWARD_RATIO = input(3,title="Risk:[Reward] (i.e. 3) for exit")
// Trailing stop loss {
var entry_price = float(0)
ATR_multi_len = 26
ATR_multi = input(2, "ATR multiplier for stop loss")
ATR_buffer = atr(ATR_multi_len) * ATR_multi
risk_reward_buffer = (atr(ATR_multi_len) * ATR_multi) * REWARD_RATIO
take_profit_long = low > entry_price + risk_reward_buffer
take_profit_short = low < entry_price - risk_reward_buffer
var bar_count = 0 //number of bars since entry 
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
stop_loss_price := max(stop_loss_price, close - trailing_SL_buffer)
// plot TSL line
trail_profit_line_color = color.green
if strategy.position_size == 0
    trail_profit_line_color := color.blue
    stop_loss_price := low
plot(stop_loss_price,color=trail_profit_line_color)
// } 

var touched_lower_bb = false

if true// and time <= backtest_timeframe_end
    if low <= BOLL_lower
        touched_lower_bb := true
    else if strategy.position_size > 0
        touched_lower_bb := false//reset state
    expected_rebound = MACD > MACD[1] and abs(MACD - aMACD) < abs(MACD[1] - aMACD[1])
    buy_condition = touched_lower_bb and MACD > aMACD or expected_rebound

    //ENTRY:
    if strategy.position_size == 0 and buy_condition
        entry_price := close
        trailing_SL_buffer := ATR_buffer
        stop_loss_price := close - ATR_buffer
        strategy.entry("Long",strategy.long, comment="buy")
        bar_count := 0
    else if strategy.position_size > 0
        bar_count := bar_count + 1

    //EXIT: 
    // Case (A) hits trailing stop
    if strategy.position_size > 0 and close <= stop_loss_price
        if close > entry_price
            strategy.close("Long", comment="take profit [trailing]")
            stop_loss_price := 0
        else if close <= entry_price and bar_count
            strategy.close("Long", comment="stop loss")
            stop_loss_price := 0
        bar_count := 0
    // Case (B) take targeted profit relative to risk 
    if strategy.position_size > 0 and TARGET_PROFIT_MODE
        if take_profit_long
            strategy.close("Long", comment="take profits [risk:reward]")
            stop_loss_price := 0
        bar_count := 0