ডাবল মুভিং এভারেজ ক্রসওভার কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১১-২২ ১৬ঃ১০ঃ২১
ট্যাগঃ

img

সারসংক্ষেপ

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

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

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

বিশেষত, এই কৌশলটি একটি 5 দিনের (দ্রুত) এবং 34 দিনের (ধীর) ডাবল চলমান গড় সংজ্ঞায়িত করে। এটি প্রতিদিন এই দুটি এমএ গণনা করে এবং দ্রুত এমএ ধীর এমএ এর উপরে বা নীচে অতিক্রম করে কিনা তা পরীক্ষা করে। যদি একটি সোনার ক্রস ঘটে তবে এটি দীর্ঘ হয়। যদি একটি মৃত্যু ক্রস ঘটে তবে এটি অবস্থানগুলি থেকে বেরিয়ে আসে।

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

এটি একটি সহজ এবং সহজেই বোঝার কৌশল, যা কোয়ান্ট ট্রেডিংয়ের নতুনদের জন্য উপযুক্ত। জটিল কৌশলগুলির তুলনায় এটি বাস্তবায়ন করা অনেক সহজ।

ডাবল এমএ কৌশলটি কার্যকরভাবে বাজারের গোলমাল ফিল্টার করতে পারে এবং মূল প্রবণতাটি ক্যাপচার করতে পারে। এমএ দিনের পরামিতিগুলি সামঞ্জস্য করে, এটি বিভিন্ন সময়সীমার মধ্যে দামের ওঠানামাতে মানিয়ে নিতে পারে।

এটিতে একটি অন্তর্নির্মিত স্টপ লস প্রক্রিয়াও রয়েছে। যখন দামগুলি বিপরীত দিকটি শুরু করে এবং এমএ এর মৃত্যুর ক্রস ঘটে, এটি ঝুঁকি নিয়ন্ত্রণের জন্য সময়মতো অবস্থানগুলি থেকে বেরিয়ে আসবে।

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

ডুয়াল এমএ কৌশল ব্যর্থ স্টপ লস বা বক্ররেখা ফিটিং ব্যর্থতা মত ঝুঁকি আছে। প্রধান সমস্যা হলঃ

  1. এমএ-র বিলম্বিত প্রভাব রয়েছে এবং প্রবণতা ইতিমধ্যে বিপরীত হওয়ার পরে কেবল সংকেত তৈরি করতে পারে। লাভজনক ট্রেডগুলি ক্ষতিতে পরিণত হতে পারে।

  2. বিভিন্ন বাজারে অনেকগুলি ভুল সংকেত থাকতে পারে, যা অপ্রয়োজনীয় ট্রেডিং, ব্যয় বৃদ্ধি এবং স্লিপিংয়ের কারণ হতে পারে।

  3. এটি মৌলিক বিশ্লেষণকে একত্রিত না করে কেবলমাত্র প্রযুক্তিগত সূচকগুলির উপর নির্ভর করে। বাজারের গতিবিধিগুলি চালিত ইভেন্টগুলির সময় এটি দুর্বলভাবে সম্পাদন করতে পারে।

  4. এটি পজিশনের আকার এবং ঝুঁকি ব্যবস্থাপনা বিবেচনা করে না। একটি ব্ল্যাক সোয়ান ইভেন্ট কৌশলটি বিস্ফোরিত হতে পারে।

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

এর শক্তি আরও ভালভাবে কাজে লাগাতে এবং ঝুঁকি হ্রাস করতে, নিম্নলিখিত উপায়ে অপ্টিমাইজেশন করা যেতে পারেঃ

  1. আরও কঠোর প্রবেশের নিয়ম নির্ধারণ এবং মিথ্যা সংকেত ফিল্টার করার জন্য এমএসিডি এবং কেডিজে এর মতো অস্থিরতার সূচক যুক্ত করুন।

  2. যথাযথ স্টপ লস প্রক্রিয়া অন্তর্ভুক্ত করুন, যেমন দামগুলি সোনার ক্রসের পরে একটি নির্দিষ্ট শতাংশ হ্রাস পাওয়ার পরে বা দামগুলি নতুন উচ্চতা / নিম্নতা থেকে একটি নির্দিষ্ট পরিসীমা হ্রাস পাওয়ার পরে প্রস্থান করা।

  3. বিভিন্ন সময় ফ্রেম জুড়ে দামের ওঠানামা মানিয়ে নিতে দ্রুত এবং ধীর এমএ দিনের সংমিশ্রণ অপ্টিমাইজ করুন। প্যারামিটার অপ্টিমাইজেশান সেরা প্যারামিটার খুঁজে পেতে পারে।

  4. সাধারণ বাজার ব্যবস্থা নির্ধারণ এবং বিভিন্ন বাজারে অতিরিক্ত লেনদেন এড়ানোর জন্য রেফারেন্স বিস্তৃত বাজার সূচক।

  5. প্রবণতা সংকেতগুলির নির্ভরযোগ্যতা যাচাই করার জন্য ট্রেডিং ভলিউম পরিবর্তনগুলি অন্তর্ভুক্ত করুন। উদাহরণস্বরূপ, সংকেতগুলি ট্রিগার করার সময় শক্তিশালী ভলিউম প্রয়োজন।

সিদ্ধান্ত

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


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
// This strategy is a modification to the "Bill Williams, Awesome Oscillator
// (AO) Backtest" strategy (Copyright by HPotter v1.0 29/12/2016)
//
// This version of the strategy by Midnight Mouse. 10/4/2018
//
// DESCRIPTION
//
// This indicator plots the oscillator as a column where periods fit for buying
// are marked as green, and periods fit for selling as orange/brown. If the
// current value of AO (Awesome Oscillator) is > the previous, the period is
// deemed fit for buying and the indicator is marked green. If the AO values is
// not over the previous, the period is deemed fit for selling and the indicator 
// is marked orange/brown.
//
// You can change long to short in the Input Settings
//
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////

strategy("Awesome Oscillator.MMouse_Lager_BCE")

// === SETTINGS ===

// Strategy start date
FromMonth   = input(defval = 1,    title = "From Month", minval = 1)
FromDay     = input(defval = 1,    title = "From Day",   minval = 1)
FromYear    = input(defval = 2017, title = "From Year",  minval = 2014)

// Strategy settings
nLengthSlow = input(34, minval=1,  title="Length Slow")
nLengthFast = input(5,  minval=1,  title="Length Fast")
allowShorts = input(false,         title="Include Short Trades")
reverse     = input(false,         title="Trade reverse")


// === BODY ===

// Use Heikin-Ashi candles for the buy/sell signal
ha_t        = heikinashi(syminfo.tickerid)
ha_high     = security(ha_t, timeframe.period, high)
ha_low      = security(ha_t, timeframe.period, low)
length      = input( 14 )
price       = open
vrsi        = rsi(price, length)

// Calc (H+L)/2 for each length
xSMA1_hl2   = sma((ha_high + ha_low)/2, nLengthFast)
xSMA2_hl2   = sma((ha_high + ha_low)/2, nLengthSlow)

// Get SMA difference (Fast - Slow)
xSMA1_SMA2  = xSMA1_hl2 - xSMA2_hl2

// Derive the color of the column
cClr = xSMA1_SMA2 > xSMA1_SMA2[1] ? #93c47d : #ad5e1d

// Determine the position to take (Long vs. Short)
pos = iff(xSMA1_SMA2 > xSMA1_SMA2[1],  1, iff(xSMA1_SMA2 < xSMA1_SMA2[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos))

// Only apply strategy from the start date
if (time >= timestamp(FromYear, FromMonth, FromDay, 00, 00))
    if (possig == 1)
        // Market is currently fit for a Long position
        strategy.entry("Long", strategy.long)

    if (possig == -1)
        // Market is currently fit for a Short position
        if(allowShorts)
            // Shorts are allowed. Record a Short position
            strategy.entry("Short", strategy.short)	   	    
        else
            // Shorts are not allowed. Closec the Long position.
            strategy.close("Long")

// Define the candle colors
//barcolor(possig == -1 ? red : 
//         possig ==  1 ? green : 
//         blue )

// Plot the oscillator
plot(xSMA1_SMA2, style=columns, linewidth=1, color=cClr)

আরো