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

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

img

সারসংক্ষেপ

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

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

  1. ৫ দিনের EMA এবং ৩৪ দিনের DEMA গণনা করুন
  2. যখন স্বল্পমেয়াদী ৫ দিনের EMA দীর্ঘমেয়াদী ৩৪ দিনের DEMA এর উপরে অতিক্রম করে তখন একটি ক্রয় সংকেত তৈরি করুন
  3. যখন স্বল্পমেয়াদী ৫ দিনের EMA দীর্ঘমেয়াদী ৩৪ দিনের DEMA এর নিচে ক্রস করে তখন একটি বিক্রয় সংকেত তৈরি করুন
  4. শুধুমাত্র নির্দিষ্ট ট্রেডিং সেশনের সময় ট্রেড করার বিকল্প
  5. ট্রেলিং স্টপ লস ব্যবহারের বিকল্প

এই কৌশলটি স্থিতিশীল পারফরম্যান্সের জন্য প্রবণতা অনুসরণকারী এবং চলমান গড় ক্রসওভার ফ্যাক্টর উভয়কেই একত্রিত করে। একটি প্রবণতা অনুসরণকারী সূচক হিসাবে চলমান গড়গুলি কার্যকরভাবে বাজারের প্রবণতা সনাক্ত করতে পারে; EMA এবং DEMA সংমিশ্রণ কার্যকরভাবে ট্রেডিং সংকেত উত্পন্ন করার জন্য মূল্যের ডেটা মসৃণ করতে পারে; স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী চলমান গড়গুলির মধ্যে ক্রসওভারগুলি বড় প্রবণতা পরিবর্তনের সময় প্রাথমিক ট্রেডিং সংকেত সরবরাহ করতে পারে।

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

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

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

  1. বিভিন্ন বাজারে আরও মিথ্যা সংকেত আসতে পারে
  2. অনুপযুক্ত চলমান গড় দৈর্ঘ্য সংকেত বিলম্ব হতে পারে
  3. ভুল ট্রেডিং সময় এবং স্টপ লস সেটিং কৌশল লাভজনকতা প্রভাবিত করতে পারে

চলমান গড় দৈর্ঘ্য সামঞ্জস্য করে, ট্রেডিংয়ের সময়গুলি অনুকূল করে এবং যুক্তিসঙ্গত স্টপ লস সেট করে এই ঝুঁকিগুলি হ্রাস করা যেতে পারে।

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

  1. বিভিন্ন ট্রেডিং পণ্য এবং সময়সীমার জন্য চলমান গড় দৈর্ঘ্যের পরামিতিগুলি সামঞ্জস্য করুন
  2. সর্বাধিক সক্রিয় সময়কালে ট্রেডিংয়ের জন্য ট্রেডিং সেশনের পরামিতিগুলি অপ্টিমাইজ করুন
  3. ফিক্সড স্টপ লস বনাম ট্রেলিং স্টপ লস তুলনা করুন
  4. কৌশল উপর বিভিন্ন মূল্য উৎস বিকল্প প্রভাব পরীক্ষা

সিদ্ধান্ত

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


/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",false]]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', shorttitle='S', overlay=true)
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
USE_TRAILINGSTOP = input(title='Use Trailing Stop?', type=bool, defval=true)
trade_session = input(title='Trade Session:',  defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
trade_size = input(title='Trade Size:', type=float, defval=1)
tp = input(title='Take profit in pips:', type=float, defval=55.0) * (syminfo.mintick*10)
sl = input(title='Stop loss in pips:', type=float, defval=22.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:', defval=5)
ma_length01 = input(title='DEMA length:',  defval=34)
price = input(title='Price source:', defval=open)

//  ||--- NO LAG EMA, Credit LazyBear:  ---||
f_LB_zlema(_src, _length)=>
    _ema1=ema(_src, _length)
    _ema2=ema(_ema1, _length)
    _d=_ema1-_ema2
    _zlema=_ema1+_d
//  ||-------------------------------------||

ma00 = f_LB_zlema(price, ma_length00)
ma01 = f_LB_zlema(price, ma_length01)
plot(title='M0', series=ma00, color=black)
plot(title='M1', series=ma01, color=black)

isnewbuy = change(strategy.position_size)>0 and change(strategy.opentrades)>0
isnewsel = change(strategy.position_size)<0 and change(strategy.opentrades)>0

buy_entry_price = isnewbuy ? price : buy_entry_price[1]
sel_entry_price = isnewsel ? price : sel_entry_price[1]
plot(title='BE', series=buy_entry_price, style=circles, color=strategy.position_size <= 0 ? na : aqua)
plot(title='SE', series=sel_entry_price, style=circles, color=strategy.position_size >= 0 ? na : aqua)
buy_appex = na(buy_appex[1]) ? price : isnewbuy ? high : high >= buy_appex[1] ? high : buy_appex[1]
sel_appex = na(sel_appex[1]) ? price : isnewsel ? low : low <= sel_appex[1] ? low : sel_appex[1]
plot(title='BA', series=buy_appex, style=circles, color=strategy.position_size <= 0 ? na : teal)
plot(title='SA', series=sel_appex, style=circles, color=strategy.position_size >= 0 ? na : teal)
buy_ts = buy_appex - sl
sel_ts = sel_appex + sl
plot(title='Bts', series=buy_ts, style=circles, color=strategy.position_size <= 0 ? na : red)
plot(title='Sts', series=sel_ts, style=circles, color=strategy.position_size >= 0 ? na : red)

buy_cond1 = crossover(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
buy_cond0 = crossover(price, ma00) and ma00 > ma01 and (USE_TRADESESSION ? istradingsession : true)
buy_entry = buy_cond1 or buy_cond0
buy_close = (not USE_TRAILINGSTOP ? low <= buy_entry_price - sl: low <= buy_ts) or high>=buy_entry_price+tp//high>=last_traded_price + tp or low<=last_traded_price - sl //high >= hh or 
sel_cond1 = crossunder(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
sel_cond0 = crossunder(price, ma00) and ma00 < ma01 and (USE_TRADESESSION ? istradingsession : true)
sel_entry = sel_cond1 or sel_cond0
sel_close = (not USE_TRAILINGSTOP ? high >= sel_entry_price + sl : high >= sel_ts) or low<=sel_entry_price-tp//low<=last_traded_price - tp or high>=last_traded_price + sl //low <= ll or 

strategy.entry('buy', long=strategy.long, qty=trade_size, comment='buy', when=buy_entry)
strategy.close('buy', when=buy_close)
strategy.entry('sell', long=strategy.short, qty=trade_size, comment='sell', when=sel_entry)
strategy.close('sell', when=sel_close)

আরো