এটিআর ভোলটাইলিটি ফিল্টার সহ ডিএমএ এবং ইএমএ ক্রসওভারের উপর ভিত্তি করে গতি কৌশল

লেখক:চাওঝাং, তারিখঃ 2024-01-08 14:14:57
ট্যাগঃ

img

I. কৌশলগত ওভারভিউ

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

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

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

  2. ইএমএ সূচক গণনা করুন। ইএমএ হ'ল এক্সপোনেনশিয়াল মুভিং এভারেজ যা দামের পরিবর্তনে দ্রুত প্রতিক্রিয়া জানায়।

  3. এটিআর (ATR) ভোল্টেবিলিটি ইনডেক্স গণনা করুন। এটিআর (ATR) বাজার ভোল্টেবিলিটি এবং ঝুঁকি স্তরগুলি পরিমাপ করে। এটিআর (ATR) এর বৃদ্ধি হ'ল ভোল্টেবিলিটি বৃদ্ধি এবং স্বল্পমেয়াদী পলব্যাকগুলির উচ্চতর সম্ভাবনাকে উপস্থাপন করে।

  4. যখন ডিএমএ ইএমএর নিচে অতিক্রম করে এবং এটিআর প্রান্তিকের উপরে উঠে যায়, তখন এটি একটি স্বল্পমেয়াদী নিম্নমুখী প্রবণতার সূচনা এবং বাজার ঝুঁকি বৃদ্ধি করে। কৌশলটি সুরক্ষা সংক্ষিপ্ত করে।

  5. যখন ডেমা ইএমএ এর উপরে ফিরে আসে, তখন এটি মূল্য সমর্থন এবং আপসাইড রিবাউন্সের সংকেত দেয়। কৌশলটি শর্ট পজিশন বন্ধ করে দেয়।

III. সুবিধা

  1. ডুয়াল ইএমএ এবং ইএমএর সংমিশ্রণ কার্যকরভাবে সংকেতের নির্ভুলতা উন্নত করতে পারে।

  2. এটিআর ভোল্টেবিলিটি ফিল্টার কম ঝুঁকিপূর্ণ হুইপসো ট্রেডগুলিকে বাদ দেয়।

  3. সংক্ষিপ্ত হোল্ডিং পিরিয়ড স্বল্পমেয়াদী গতি ট্র্যাকিংয়ের জন্য উপযুক্ত এবং দীর্ঘস্থায়ী হেজিং এড়ায়।

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

IV. ঝুঁকি

  1. ভুল এটিআর পরামিতি ট্রেডিং সুযোগ মিস করতে পারে।

  2. একই সময়ে দীর্ঘ এবং সংক্ষিপ্ত সংকেত পর্যবেক্ষণ করতে হবে, অপারেশন অসুবিধা বৃদ্ধি।

  3. বাজারের স্বল্পমেয়াদী অস্থিরতা দ্বারা প্রভাবিত।

সমাধানঃ ব্যাকটেস্টিং এর মাধ্যমে প্যারামিটার অপ্টিমাইজেশান। একপাশে ফোকাস করার জন্য লজিককে সহজ করুন। যথাযথভাবে স্টপ লস স্তরগুলি শিথিল করুন।

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

  1. সেরা সমন্বয় খুঁজে পেতে DEMA এবং EMA এর জন্য পরামিতি অপ্টিমাইজ করুন।

  2. অপ্টিমাইজ করা ATR lookback সময়কাল সর্বোত্তম অস্থিরতা বেঞ্চমার্ক নির্ধারণ করতে।

  3. সিগন্যালের নির্ভুলতা বাড়াতে BOLL ব্যান্ডের মতো অন্যান্য সূচক যুক্ত করুন।

  4. স্টপ লস এবং লাভের নিয়ম প্রবর্তন করুন যাতে আরও ধারাবাহিক লাভের জন্য লক করা যায়।

VI. উপসংহার

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


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 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/
// © Qorbanjf

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Qorbanjf

//@version=4
strategy("Qorban: DEMA/EMA & VOL Short ONLY", shorttitle="DEMA/EMA & VOL SHORT", overlay=true)

// DEMA
length = input(10, minval=1, title="DEMA LENGTH")
src = input(close, title="Source")
e1 = ema(src, length)
e2 = ema(e1, length)
dema1 = 2 * e1 - e2
plot(dema1, "DEMA", color=color.yellow)

//EMA
len = input(25, minval=1, title="EMA Length")
srb = input(close, title="Source")
offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
ema1 = ema(srb, len)
plot(ema1, title="EMA", color=color.blue, offset=offset)

// get ATR VALUE
atr = atr(14)

//ATRP (Average True Price in precentage)

// Inputs
atrTimeFrame = input("D", title="ATR Timeframe", type=input.resolution)
atrLookback = input(defval=14,title="ATR Lookback Period",type=input.integer)
useMA = input(title = "Show Moving Average?", type = input.bool, defval = true)
maType = input(defval="EMA", options=["EMA", "SMA"], title = "Moving Average Type")
maLength = input(defval = 20, title = "Moving Average Period", minval = 1)
slType = input(title="Stop Loss ATR / %", type=input.float, defval=5.0, step=0.1)
slMulti = input(title="SL Multiplier", type=input.float, defval=1.0, step=0.1)
minimumProfitPercent = input(title="Minimum profit %", type=input.float, defval=20.00)

// ATR Logic
// atrValue = atr(atrLookback)
// atrp = (atrValue/close)*100
// plot(atrp, color=color.white, linewidth=2, transp = 30)

atrValue = security(syminfo.tickerid, atrTimeFrame, atr(atrLookback))
atrp = (atrValue/close)*100

// Moving Average Logic
ma(maType, src, length) =>
    maType == "EMA" ? ema(src, length) : sma(src, length) //Ternary Operator (if maType equals EMA, then do ema calc, else do sma calc)
maFilter = security(syminfo.tickerid, atrTimeFrame, ma(maType, atrp, maLength))


// Determine percentage of open profit
var entry = 0.0
distanceProfit = low - entry
distanceProfitPercent = distanceProfit / entry

//Determin if we have a long entry signal OR a sell position signal
profitSignal = minimumProfitPercent == 0.0 or distanceProfitPercent >= minimumProfitPercent
shortSignal = crossunder(dema1, ema1) and atrp > maFilter and strategy.position_size == 0 and not na(atr)
exitSignal = profitSignal and strategy.position_size !=0 and  crossover(dema1, ema1)


// === INPUT BACKTEST RANGE ===
//FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
//FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//FromYear  = input(defval = 2017, title = "From Year", minval = 2000)
//ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

//Invert trade direction & flipping 
//tradInvert = input(defval = false, title = "invert trade direction")
//MOM_MR = input(defval=1, title = "MOM = 1 / MR = -1", minval=-1, maxval=1)
//plots=input(false, title="Show plots?")

// Get stop loss (in pips AND percentage distance)
shortStop = highest(high, 4) - (atr * slMulti)
shortStopPercent = close - (close * slMulti)

// Save long stop & target prices (used for drawing data to the chart & deetermining profit)
var shortStopSaved = 0.0
var shortTargetSaved = 0.0
enterShort = false
if shortSignal
    shortStopSaved := slType ? shortStop : shortStopPercent
    enterShort:= true
    entry := close


// long conditions 
//enterLong = crossover(dema1, ema1) and atrp < maFilter
//exitSignal => crossunder(dema1, ema1)

//Enter trades when conditions are met
strategy.entry("short", strategy.short, when=enterShort, comment="SHORT")

//place exit orders (only executed after trades are active)
strategy.exit(id="Short exit",
 from_entry="short",
 limit=exitSignal ? close : na,
 stop=shortStopSaved,
 when=strategy.position_size > 0,
 comment="end short")
 

//short strategy
//goShort() => crossunder(dema1, ema1) and atrp > maFilter
//KillShort() => crossover(dema1, ema1) 
//strategy.entry("SHORT", strategy.short, when = goShort())
//strategy.close("COVER", when = KillShort())


আরো