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


সৃষ্টির তারিখ: 2023-12-06 17:10:00 অবশেষে সংশোধন করুন: 2023-12-06 17:10:00
অনুলিপি: 0 ক্লিকের সংখ্যা: 605
1
ফোকাস
1619
অনুসারী

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

কৌশল ওভারভিউ

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

কৌশল নাম

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

কৌশল নীতি

এই কৌশলটি একই সময়ে 7 দিনের লাইন, 13 দিনের লাইন এবং 21 দিনের লাইন সহ 3 টি ভিন্ন সময়ের চলমান গড় ব্যবহার করে। এর ট্রেডিং লজিক নিম্নলিখিত বিষয়গুলির উপর ভিত্তি করেঃ

  1. যখন স্বল্পমেয়াদী ৭ তারিখের লাইন মধ্যবর্তী ১৩ তারিখের লাইন অতিক্রম করে এবং দীর্ঘমেয়াদী ২১ তারিখের লাইন একটি উত্থান প্রবণতা থাকে তখন একটি মাল্টিসিগন্যাল তৈরি হয়;
  2. যখন স্বল্পমেয়াদী 7 তারিখের নীচে মধ্যবর্তী 13 তারিখের লাইনটি অতিক্রম করে এবং দীর্ঘমেয়াদী 21 তারিখের লাইনটি নিম্নমুখী প্রবণতায় থাকে, তখন একটি স্বল্পমেয়াদী সংকেত তৈরি হয়।

বিভিন্ন সময়কালের চলমান গড়ের সমন্বয়ে, আপনি বাজারের প্রবণতা সম্পর্কে আরও সঠিকভাবে বিচার করতে পারেন এবং ভুল লেনদেন এড়াতে পারেন।

কৌশলগত সুবিধা

  1. মাল্টিপ্লেক্স মুভিং এভারেজ ব্যবহার করে, বাজারের গতিবিধি আরও সঠিকভাবে বিচার করা যায় এবং বাজারে মিথ্যা ব্রেকথ্রু বা স্বল্পমেয়াদী ওঠানামা দ্বারা বিভ্রান্ত হওয়া এড়ানো যায়।
  2. ট্রেডিংয়ের খরচ কমানোর জন্য অপ্রয়োজনীয় ট্রেডিংয়ের সংখ্যা কমাতে ট্রেডিংয়ের প্রবণতা সুস্পষ্ট হলেই সিগন্যাল তৈরি করা হয়।
  3. প্যারামিটার সেটিংটি নমনীয়, যা বিভিন্ন জাত এবং বাজারের পরিবেশের সাথে সামঞ্জস্য রেখে ব্যক্তিগত পছন্দ অনুসারে চলমান গড়ের সময়কালকে সামঞ্জস্য করতে পারে।

কৌশলগত ঝুঁকি

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

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

  1. প্রবণতার তীব্রতা নির্ধারণের জন্য অস্থিরতার সূচকগুলি বিবেচনা করুন এবং অস্থির বাজারে লেনদেন এড়িয়ে চলুন।
  2. মেশিন লার্নিং এর মতো পরিমাণগত প্রযুক্তি ব্যবহার করে চলমান গড়ের প্যারামিটারগুলিকে স্বয়ংক্রিয়ভাবে অপ্টিমাইজ করার চেষ্টা করুন।
  3. ক্ষতির পরিমাণ বাড়ার সাথে সাথে ক্ষতি বন্ধ করার কৌশল বাড়ানো।
  4. চলমান গড়ের ক্রসিংয়ের সময় স্লাইড পয়েন্ট কমাতে লিমিট পয়েন্ট ব্যবহার করার কথা ভাবুন।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-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/
// © Crypto-Oli

//@version=4
strategy("CryptOli 3 MAs long/short Backtest", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=true)

// this is an educational Script - basicly its very simple - you can see how minimal changes impact results, thats why i posted it
// Credits to Quantnomad to publish tons of free educational script
// this Script is based on https://www.tradingview.com/script/0NgUadGr-Ultimate-MA-Cross-Indicator/ Quantnomads Ultimate MA Indicator 
// HA - Option for calcucaltion based on HA-Candles (very famous recently)
// Source Input - Option (Candletype for calculation, close, ohlc4 ect.) --- there are huge differences --- try it by your own

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2015, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=1, title="To Month", minval=1, maxval=12)
toYear = input(defval=2030, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate

////////////////////////////////////////////////////////////////////////////////

h = input(false, title = "Signals from Heikin Ashi Candles")

ma_type      = input(title = "MA Type",         type = input.string,  defval = "SMMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
src = input(ohlc4)

short_ma_len = input(title = "Short MA Length", type = input.integer, defval = 7,     minval = 1)
short_ma_src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, src, lookahead = false) : close
middle_ma_len  = input(title = "Middle MA Length",  type = input.integer, defval = 13,    minval = 2)
middle_ma_src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, src, lookahead = false) : close
long_ma_len  = input(title = "Long MA Length",  type = input.integer, defval = 21,    minval = 2)
long_ma_src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, src, lookahead = false) : close


tick_round(x) => 
    round(x / syminfo.mintick) * syminfo.mintick

// Set initial values to 0
short_ma = 0.0
middle_ma = 0.0
long_ma  = 0.0

// Simple Moving Average (SMA)
if ma_type == 'SMA' 
    short_ma := sma(short_ma_src, short_ma_len)
    middle_ma := sma(middle_ma_src, middle_ma_len)
    long_ma  := sma(long_ma_src,  long_ma_len)

// Exponential Moving Average (EMA)
if ma_type == 'EMA'
    short_ma := ema(short_ma_src, short_ma_len)
    middle_ma := ema(middle_ma_src, middle_ma_len)
    long_ma  := ema(long_ma_src,  long_ma_len)

// Weighted Moving Average (WMA)
if ma_type == 'WMA'
    short_ma := wma(short_ma_src, short_ma_len)
    middle_ma := wma(middle_ma_src, middle_ma_len)
    long_ma  := wma(long_ma_src,  long_ma_len)

// Hull Moving Average (HMA)
if ma_type == 'HMA'
    short_ma := wma(2*wma(short_ma_src, short_ma_len/2)-wma(short_ma_src, short_ma_len), round(sqrt(short_ma_len)))
    middle_ma := wma(2*wma(middle_ma_src, middle_ma_len/2)-wma(middle_ma_src, middle_ma_len), round(sqrt(middle_ma_len)))
    long_ma  := wma(2*wma(long_ma_src,  long_ma_len /2)-wma(long_ma_src,  long_ma_len),  round(sqrt(long_ma_len)))

// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
    short_ma := vwma(short_ma_src, short_ma_len)
    middle_ma := vwma(middle_ma_src, middle_ma_len)
    long_ma  := vwma(long_ma_src,  long_ma_len)


// Smoothed Moving Average (SMMA)    
if ma_type == 'SMMA'
    short_ma := na(short_ma[1]) ? sma(short_ma_src, short_ma_len) : (short_ma[1] * (short_ma_len - 1) + short_ma_src) / short_ma_len
    middle_ma := na(middle_ma[1]) ? sma(middle_ma_src, middle_ma_len) : (middle_ma[1] * (middle_ma_len - 1) + middle_ma_src) / middle_ma_len
    long_ma  := na(long_ma[1])  ? sma(long_ma_src,  long_ma_len)  : (long_ma[1]  * (long_ma_len  - 1) + long_ma_src)  / long_ma_len

// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
    e1_short = ema(short_ma_src, short_ma_len)
    e1_middle = ema(middle_ma_src, middle_ma_len)
    e1_long  = ema(long_ma_src,  long_ma_len)
    
    short_ma := 2 * e1_short - ema(e1_short, short_ma_len)
    middle_ma := 2 * e1_middle - ema(e1_middle, middle_ma_len)
    long_ma  := 2 * e1_long  - ema(e1_long,  long_ma_len)

// Plot MAs
plot(short_ma, color = color.green,   linewidth = 1)
plot(middle_ma, color = color.yellow,   linewidth = 1)
plot(long_ma,  color = color.red, linewidth = 1)

if close>long_ma and short_ma>middle_ma and time_cond
    strategy.entry("Long", strategy.long)


if close<long_ma and short_ma<middle_ma and time_cond
    strategy.entry("Short", strategy.short)