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

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

img

সারসংক্ষেপ

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

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

এই কৌশলটি প্রবেশের সংকেত হিসাবে 5 পিরিয়ড এবং 20 পিরিয়ড ডাব্লুএমএ লাইন ক্রসওভার ব্যবহার করে। যখন 5 পিরিয়ড লাইন 20 পিরিয়ড লাইনের উপরে ভেঙে যায় তখন এটি দীর্ঘ হয় এবং যখন 5 পিরিয়ড লাইন 20 পিরিয়ড লাইনের নীচে ভেঙে যায় তখন এটি সংক্ষিপ্ত হয়। এটি প্রবণতার দিক নির্ধারণের জন্য 50 পিরিয়ড ডাব্লুএমএ লাইনও ব্যবহার করে। যখন দামের ব্রেকআউট দিকটি প্রধান প্রবণতার সাথে সামঞ্জস্যপূর্ণ হয় তখনই ট্রেডিং সংকেতগুলি ট্রিগার হয়।

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

অবশেষে, কৌশলটি কেবল মার্কিন যুক্তরাষ্ট্রের ট্রেডিং সময় (9:00-14:30 সিএসটি) এর সময় ট্রেডিং শুরু করে যাতে বাজারের খোলা এবং বন্ধের আশেপাশে উচ্চ অস্থিরতা এড়ানো যায় যেখানে মিথ্যা সংকেতগুলি সহজেই গঠিত হয়।

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

এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:

  1. ডাবল চলমান গড় ক্রসওভার কার্যকরভাবে সময়মত প্রবেশের জন্য প্রবণতা টার্নিং পয়েন্টগুলি ক্যাপচার করে।

  2. ট্রেন্ড ফিল্টার প্রধান ট্রেন্ডের বিরুদ্ধে ট্রেডিং এড়ায় এবং মিথ্যা সংকেত হ্রাস করে।

  3. ডায়নামিক এটিআর-ভিত্তিক স্টপ লস কন্ট্রোল প্রতি ট্রেড লস।

  4. ট্রেডিংয়ের সময়সীমা সীমাবদ্ধ করা উন্মুক্ত এবং বন্ধের সময়সীমার অস্থিরতা এড়ায়।

  5. সহজ এবং পরিষ্কার নিয়ম, সহজেই বুঝতে এবং শুরু করার জন্য বাস্তবায়ন।

  6. অপ্টিমাইজেশনের জন্য এমএ পিরিয়ড, এটিআর মাল্টিপ্লায়ার, ট্রেডিং ঘন্টা ইত্যাদির মতো কাস্টমাইজযোগ্য পরামিতি।

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

এই কৌশলটি নিম্নলিখিত ঝুঁকিগুলিও বহন করেঃ

  1. ব্যাপ্তি সীমাবদ্ধ বাজারের সময় আরও স্টপ লস ট্রিগার করে।

  2. ডাবল এমএ ক্রসওভারে বিলম্ব আছে এবং স্বল্পমেয়াদী ব্রেকআউট মিস করতে পারে।

  3. ভুল ATR পরামিতি সেটিং বড় বা ছোট স্টপ ক্ষতি হতে পারে।

  4. মৌলিক বিশ্লেষণ ছাড়া শুধুমাত্র প্রযুক্তিগত সূচকগুলির উপর নির্ভর করুন।

  5. কার্যকারিতা সঠিক প্রতীক এবং সময়সীমার উপর নির্ভর করে।

  6. মেকানিক্যাল সিস্টেমের মধ্যে arbitrage হওয়ার ঝুঁকি রয়েছে।

  7. বিভিন্ন ট্রেডিং সেশনের জন্য পরামিতিগুলি সামঞ্জস্য করা প্রয়োজন।

প্যারামিটার টিউনিং, সূচক সংমিশ্রণ, নির্বাচনী ম্যানুয়াল হস্তক্ষেপ ইত্যাদির মাধ্যমে এগুলি উন্নত করা যেতে পারে।

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

কৌশলটি নিম্নলিখিত দিকগুলিতে উন্নত করা যেতে পারেঃ

  1. বিভিন্ন এমএ সিস্টেম যেমন ইএমএ, ডিএমএ ইত্যাদি পরীক্ষা করুন।

  2. ম্যাকডি, আরএসআই ইত্যাদি অন্যান্য প্রযুক্তিগত ফিল্টার যুক্ত করুন।

  3. আরও ভাল স্টপ লস/লাভের জন্য ATR পরামিতিগুলি অপ্টিমাইজ করুন।

  4. উচ্চ মানের প্রবেশ সংকেত খুঁজে পেতে ভলিউম সূচক অন্তর্ভুক্ত করুন।

  5. প্রতীক নির্দিষ্টকরণের উপর ভিত্তি করে পরামিতিগুলি সামঞ্জস্য করুন।

  6. বাজারের বিরুদ্ধে ট্রেডিং এড়ানোর জন্য মৌলিক কারণগুলিকে একত্রিত করুন।

  7. বাজারের মডেলিংয়ের জন্য নিউরাল নেটওয়ার্কের মতো মেশিন লার্নিং চালু করুন।

  8. আরও সুযোগের জন্য একাধিক সময়সীমার সমন্বয় অনুসন্ধান করুন।

  9. স্থিতিশীলতা বাড়াতে কৌশলগত সমন্বয় গড়ে তোলা।

সিদ্ধান্ত

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


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © james4392010

//@version=4

strategy(title="DayTradingFutures Cross-Strategy", overlay=true)




// === GENERAL INPUTS ===
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true)
//highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn



wmaFastSource   = input(defval = close, title = "Fast WMA Source")
wmaFastLength   = input(defval = 5, title = "Fast WMA Period")
wmaSlowSource   = input(defval = close, title = "Slow WMA Source")
wmaSlowLength   = input(defval = 20, title = "Slow WMA Period")
wmaDirectionSource  = input(defval = close, title = "Trend 50 Period Source")
wmaDirectionLength  = input(defval = 50, title = "Trend 50 Period")
timeinrange(res, sess) => time(res, sess) != 0



// === SERIES SETUP ===
/// a couple of ma's..
wmaFast = wma(close, 5)
wmaSlow = wma(close, 20)
wmaDirection = wma(close, 50)





// === PLOTTING ===
fast = plot(series=wmaFast, color=color.white, linewidth=2)
slow = plot(series=wmaSlow, color=color.yellow, linewidth=2)
direction = plot(series=wmaDirection, color=color.red, linewidth=2)


// === INPUT BACKTEST RANGE ===

//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 = 2022, title = "From Year", minval = 2022)
 
// 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 = 2022, title = "To Year", minval = 2022)
//startDate = timestamp(fromYear, fromMonth, fromDay)
//finishDate = timestamp(toYear, toMonth, toDay)
//inDateRange= (time >= fromDay, fromMonth, fromYear and time <= toDay, toMonth, toYear) 



// === FUNCTION EXAMPLE ===
//inDateRange = (time >= fromDay, fromMonth, fromYear) and (time <= toDay, toMonth, toYear)


// === LOGIC ===

enterLong = crossover(wmaFast, wmaSlow) and close > wmaDirection and timeinrange(timeframe.period, "0900-1430")
enterShort = crossunder(wmaFast, wmaSlow) and close < wmaDirection and timeinrange(timeframe.period, "0900-1430")

//trend := nz(trend[1], trend)
//trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
//upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)

buySignal = enterLong 
//plotshape(enterLong ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(enterLong and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
//dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)

sellSignal = enterShort
//plotshape(enterShort ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(enterShort and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
//mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
//longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
//shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
//fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
//fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="Buy", message="Buy!")
alertcondition(sellSignal, title="Sell", message="Sell!")
//changeCond = trend != trend[1]
//alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")



// Entry for strategy //

//tp=input(25,title="TakeProfit")
//sl=input(40,title="StopLoss")

strategy.entry("Long",1, when=buySignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)

strategy.entry("Short",1, when=sellSignal)
//strategy.exit("Exit",profit=tp,loss=sl)
//strategy.exit("TakeProfit",profit=tp)
//strategy.exit("StopLoss",loss=sl)
//strategy.exit("Exit", wmaFastwmaSlow)

//Buy and Sell Signals

//strategy.close_all(when =not timeinrange(timeframe.period, "1000-1430"))   


// === FILL ====

fill (fast, slow, color = wmaSlow > wmaDirection ? color.green : color.red)
//fill(when=enterLong, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterLong, sl, color = color.new(color.red, 90), title = "Loss area")
//fill(when=enterShort, tp, color = color.new(color.green, 90), title = "Profit area")
//fill(when=enterShort, sl, color = color.new(color.red, 90), title = "Loss area")






আরো