ডাবল এমএসিডি পরিমাণগত ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-01-30 16:43:29
ট্যাগঃ

img

সারসংক্ষেপ

ডুয়াল এমএসিডি পরিমাণগত ট্রেডিং কৌশল হল একটি পরিমাণগত ট্রেডিং কৌশল যা ডুয়াল টাইমফ্রেম এমএসিডি সূচক ব্যবহার করে বাস্তবায়িত হয়। এটি দীর্ঘ হয় যখন সাপ্তাহিক এমএসিডি সূচক একটি সোনার ক্রস গঠন করে এবং যখন দৈনিক এমএসিডি সূচক একটি মৃত্যু ক্রস গঠন করে তখন অবস্থানটি বন্ধ করে দেয়। যখন অবস্থানটি খালি থাকে, যদি দৈনিক এমএসিডি সূচক অন্য সোনার ক্রস গঠন করে তবে একটি নতুন দীর্ঘ অবস্থান খোলা যেতে পারে।

কৌশলগত যুক্তি

ডুয়াল এমএসিডি পরিমাণগত ট্রেডিং কৌশলটি প্রবেশ এবং প্রস্থান সংকেত নির্ধারণের জন্য সাপ্তাহিক এমএসিডি এবং দৈনিক এমএসিডি সূচকগুলির সংমিশ্রণ ব্যবহার করে।

প্রথমত, যখন সাপ্তাহিক এমএসিডি সূচকের এমএসিডি লাইন সিগন্যাল লাইনের উপরে অতিক্রম করে, তখন একটি ক্রয় সংকেত উৎপন্ন হয় এবং একটি দীর্ঘ অবস্থান খোলা হয়। তারপর যখন দৈনিক এমএসিডি সূচকের এমএসিডি লাইন সিগন্যাল লাইনের নীচে অতিক্রম করে, তখন একটি বিক্রয় সংকেত উৎপন্ন হয় এবং অবস্থানটি বন্ধ হয়।

যখন পজিশনটি খালি থাকে, যদি দৈনিক MACD সূচকের MACD লাইন আবার সিগন্যাল লাইনের উপরে অতিক্রম করে, তখন একটি নতুন লং পজিশন পুনরায় খোলা হয়। অর্থাৎ, দৈনিক MACD এর গোল্ডেন ক্রস পুনরায় প্রবেশের শর্ত হিসাবে কাজ করে।

মনে রাখবেন যে শুধুমাত্র দৈনিক ম্যাকডি-র ডেথ ক্রস পজিশনটি বন্ধ করবে, কিন্তু পুনরায় খোলা শুধুমাত্র তখনই অনুমোদিত যখন সাপ্তাহিক ম্যাকডি-র ম্যাকডি লাইন ট্রেডিং উইন্ডোর মধ্যে সিগন্যাল লাইনের উপরে থাকে।

সুবিধা

ডুয়াল এমএসিডি পরিমাণগত ট্রেডিং কৌশলটি ডুয়াল টাইমফ্রেম বিশ্লেষণকে একত্রিত করে, যা কার্যকরভাবে মিথ্যা সংকেতগুলি ফিল্টার করতে পারে এবং সংকেতের গুণমান উন্নত করতে পারে। বিশেষত, বেশ কয়েকটি প্রধান সুবিধা রয়েছেঃ

  1. সাপ্তাহিক সময়সীমা মূল প্রবণতা দিক নির্ধারণ করে, যা বিপরীত ট্রেডিং এড়াতে সাহায্য করে।

  2. দৈনিক সময়সীমা প্রবেশ এবং প্রস্থান সময় নির্ধারণ করে, যা স্বল্পমেয়াদী ব্যবসায়ের সুযোগগুলি সময়মতো ক্যাপচার করতে পারে।

  3. ট্রেডিং উইন্ডো প্রক্রিয়াটি স্বল্পমেয়াদী সমন্বয়গুলির কারণে অত্যধিক ঘন ঘন খোলা এবং বন্ধ হওয়া এড়াতে পারে।

  4. এমএসিডি সূচকের পরামিতিগুলি সামঞ্জস্যযোগ্য এবং বিভিন্ন জাত এবং বাজারের অবস্থার সাথে সামঞ্জস্য রেখে অপ্টিমাইজ করা যেতে পারে।

  5. ঝুঁকি কার্যকরভাবে নিয়ন্ত্রণ করার জন্য মুনাফা গ্রহণ, স্টপ লস, ট্রেলিং স্টপ লস ফাংশন সংহত করে।

ঝুঁকি

ডুয়াল এমএসিডি পরিমাণগত ট্রেডিং কৌশলটির কিছু ঝুঁকি রয়েছে, যার মধ্যে প্রধানত রয়েছেঃ

  1. এমএসিডি সূচকটি মিথ্যা সংকেত এবং ঘন ঘন ক্রসওভার উৎপন্ন করে, অন্যান্য সূচক থেকে নিশ্চিতকরণের প্রয়োজন হয়।

  2. সাপ্তাহিক/মাসিক সময়সীমার মধ্যে চিহ্নিত প্রধান প্রবণতা বিপরীত হতে পারে, ট্রেলিং স্টপ লস প্রয়োজন।

  3. বিভিন্ন জাত এবং বাজারের অবস্থার উপর ভিত্তি করে পরামিতিগুলিকে ক্রমাগত অপ্টিমাইজেশন এবং সামঞ্জস্য করতে হবে।

  4. ব্যাকটেস্টের ফলাফলের উপর অত্যধিক নির্ভর করা যাবে না, লাইভ পারফরম্যান্স ব্যাকটেস্ট থেকে আলাদা হতে পারে।

সংশ্লিষ্ট সমাধানঃ

  1. লজিক অপ্টিমাইজেশান সহ কৌশল সিস্টেম তৈরি করতে অন্যান্য সূচকগুলির সাথে একত্রিত করুন।

  2. সর্বোচ্চ সহ্যযোগ্য ক্ষতি অতিক্রম না করার জন্য যুক্তিসঙ্গত স্টপ লস সেট করুন।

  3. সর্বোত্তম সমন্বয় খুঁজে পেতে পরামিতিগুলিকে ক্রমাগত অপ্টিমাইজ করুন।

  4. ন্যূনতম মূলধন থেকে লাইভ ট্রেডিং শুরু করুন স্থিতিশীলতা যাচাই করতে।

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

ডুয়াল এমএসিডি পরিমাণগত ট্রেডিং কৌশল আরও অপ্টিমাইজেশনের জন্য জায়গা আছেঃ

  1. মাল্টি-ইনডিকেটর সমন্বিত কৌশল তৈরি এবং সংকেত মান উন্নত করার জন্য বোলিংজার ব্যান্ড, কেডিজে এবং অন্যান্য সূচক চালু করা।

  2. অপ্রতুল পরিমাণে মিথ্যা ব্রেকআউট এড়ানোর জন্য ট্রেডিং ভলিউম সূচক অন্তর্ভুক্ত করুন।

  3. মেশিন লার্নিং পদ্ধতি ব্যবহার করে স্বয়ংক্রিয়ভাবে প্যারামিটার অপ্টিমাইজ করা এবং গতিশীল সমন্বয় অর্জন করা।

  4. কৌশলটির আরও ঝুঁকি সামঞ্জস্য, যেমন লাভ ও ক্ষতির অনুপাতের মতো উন্নত স্টপ লস পদ্ধতি যুক্ত করা।

  5. অতিরিক্ত ফিটিং সমস্যা এড়াতে কৌশল ফিটনেস পরীক্ষা এবং অপ্টিমাইজেশন।

সিদ্ধান্ত

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


/*backtest
start: 2023-01-29 00:00:00
end: 2024-01-11 05:20: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/
// © maxits

// Long Position: Weekly Macd line crosses above Signal line   
// [Trading Window Macd Line > Signal Line] (Weekly)
// Close Position: Daily Macd Line crosses above Daily Signal line.  
// Re Entry Condition: Macd line crosses above Signal line only if [Trading Window MacdLine > Sgnal Line] (Weekly)

//@version=4
strategy("Dual MACD Strategy",
         shorttitle="Dual Macd Tester",
         overlay=false,
         initial_capital=1000,
         default_qty_value=20,
         default_qty_type=strategy.percent_of_equity,
         commission_value=0.1,
         pyramiding=0)



// Define user inputs
i_time     = input(defval = timestamp("01 May 2018 13:30 +0000"), title = "Start Time", type = input.time) // Starting  time for Backtesting
f_time     = input(defval = timestamp("9 Sep 2021 13:30 +0000"), title = "Finish Time", type = input.time) // Finishing time for Backtesting

sep1          = input(false, title="------ Profit & Loss ------")

enable_TP     = input(true, title="Enable Just a Profit Level?")
enable_SL     = input(false, title="Enable Just a S.Loss Level?")
enable_TS     = input(true, title=" Enable Only Trailing Stop")
long_TP_Input = input(30.0,   title='Take Profit %',      type=input.float, minval=0)/100
long_SL_Input = input(1.0,   title='Stop Loss %',        type=input.float, minval=0)/100
long_TS_Input = input(5.0,   title='Trailing Stop %',    type=input.float, minval=0)/100
cl_low_Input  = input(low,   title="Trailing Stop Source")
long_TP       = strategy.position_avg_price * (1 + long_TP_Input)
long_SL       = strategy.position_avg_price * (1 - long_SL_Input)
long_TS       = cl_low_Input * (1 - long_TS_Input)

sep2       = input(false, title="------ Macd Properties ------")

d_res      = input(title="Short Term TimeFrame", type=input.resolution, defval="D") // Daily Time Frame
w_res      = input(title="Long Term TimeFrame", type=input.resolution, defval="W")  // Weekly Time Frame
src        = input(close, title="Source")                                           // Indicator Price Source
fast_len   = input(title="Fast Length", type=input.integer, defval=12)              // Fast MA Length
slow_len   = input(title="Slow Length", type=input.integer, defval=26)              // Slow MA Length
sign_len   = input(title="Sign Length", type=input.integer, defval=9)               // Sign MA Length
d_w        = input(title="Daily or Weekly?", type=input.bool, defval=true)          // Plot Daily or Weekly MACD

// Color Plot for Macd

col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350

// BG Color

bg_color = color.rgb(127, 232, 34, 75)

// Daily Macd

[d_macdLine, d_singleLine, d_histLine] = security(syminfo.tickerid, d_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución

plot(d_w ? d_macdLine   : na, color=color.blue)
plot(d_w ? d_singleLine : na, color=color.orange)
plot(d_w ? d_histLine   : na, style=plot.style_columns,
     color=(d_histLine>=0 ? (d_histLine[1] < d_histLine ? col_grow_above : col_fall_above) : 
     (d_histLine[1] < d_histLine ? col_grow_below : col_fall_below)))
    
// Weekly Macd

[w_macdLine, w_singleLine, w_histLine] = security(syminfo.tickerid, w_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución

plot(d_w ? na : w_macdLine,   color=color.blue)
plot(d_w ? na : w_singleLine, color=color.orange)
plot(d_w ? na : w_histLine,   style=plot.style_columns,
     color=(w_histLine>=0 ? (w_histLine[1] < w_histLine ? col_grow_above : col_fall_above) : 
     (w_histLine[1] < w_histLine ? col_grow_below : col_fall_below)))

///////////////////////////////// Entry Conditions
inTrade    = strategy.position_size != 0       // Posición abierta
notInTrade = strategy.position_size == 0       // Posición Cerrada
start_time = true

trading_window = w_macdLine > w_singleLine   // Weekly Macd Signal enables a trading window 
bgcolor(trading_window ? bg_color : na)
buy_cond       = crossover (w_macdLine, w_singleLine)
sell_cond      = crossunder(d_macdLine, d_singleLine)
re_entry_cond  = crossover (d_macdLine, d_singleLine) and trading_window

// Entry Exit Conditions

trailing_stop  = 0.0        // Code for calculating Long Positions Trailing Stop Loss
trailing_stop := if (strategy.position_size != 0)
    stopValue = long_TS
    max(trailing_stop[1], stopValue)
else 
    0

if (buy_cond and notInTrade and start_time)
    strategy.entry(id="First Entry", long=strategy.long, comment="First Long")

if (sell_cond and inTrade)
    strategy.close(id="First Entry", comment="Close First Long")
    
if (re_entry_cond and notInTrade and start_time)
    strategy.entry(id="Further Entry", long=strategy.long, comment="Further Entry")

if (sell_cond and inTrade)
    strategy.close(id="Further Entry", comment="Close First Long")

if enable_TP
    if (enable_TS and not enable_SL)
        strategy.exit("Long TP & TS FiEn", "First Entry",   limit = long_TP, stop = trailing_stop)
        strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = trailing_stop)
    else
        if (enable_SL and not enable_TS)
            strategy.exit("Long TP & TS FiEn", "First Entry",   limit = long_TP, stop = long_SL)
            strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = long_SL)
        else 
            strategy.exit("Long TP & TS FiEn", "First Entry",   limit = long_TP)
            strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP)
else
    if not enable_TP 
        if (enable_TS and not enable_SL)
            strategy.exit("Long TP & TS FiEn", "First Entry",   stop = trailing_stop)
            strategy.exit("Long TP & TS FuEn", "Further Entry", stop = trailing_stop)
        else
            if (enable_SL and not enable_TS)
                strategy.exit("Long TP & TS FiEn", "First Entry",   stop = long_SL)
                strategy.exit("Long TP & TS FuEn", "Further Entry", stop = long_SL)

plot(enable_TP ? long_TP : na, title="TP Level", color=color.green, style=plot.style_linebr, linewidth=2)
plot(enable_SL ? long_SL : na, title="SL Level", color=color.red,   style=plot.style_linebr, linewidth=2)
plot(enable_TS and trailing_stop ? trailing_stop : na, title="TS Level", color=color.red, style=plot.style_linebr, linewidth=2)


আরো