এডাপ্টিভ জিরো লেগ ইএমএ কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-০৯-০৮ 16:24:02
ট্যাগঃ

আপনি যে স্ক্রিপ্টটি সরবরাহ করেছেন তা অ্যাডাপ্টিভ জিরো লেগ ইএমএ (AZLEMA) কৌশলটির উপর ভিত্তি করে। এই স্ক্রিপ্টটি আপনার ট্রেডিং ডেটাতে ধারাবাহিক চক্রের দুটি অভিন্ন পয়েন্টের মধ্যে সময়কাল নির্ধারণের জন্য জন এহলারসের সংকেত প্রক্রিয়াকরণ গবেষণা এবং কোসিন ইনস্ট্যান্ট ফ্রিকোয়েন্সি পরিমাপ (আইএফএম) নামে পরিচিত একটি পদ্ধতি ব্যবহার করে।

এখানে ট্রেডিং স্ক্রিপ্টের কাজ সম্পর্কে একটি সংক্ষিপ্ত বিবরণ দেওয়া হলঃ

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

  2. তারপর এটি ডিফারেনশিয়াল সমীকরণ এবং Ehlers পদ্ধতি (যখন Adaptive? সেটিং সত্য সেট করা হয় তখন ব্যবহৃত হয়) ব্যবহার করে অভিযোজনশীল মোডের জন্য গণনা সেট করে।

  3. এটি নির্বাচিত সময়ের জন্য নির্বাচিত তথ্য উত্সের গড় মান (EMA) গণনা করে।

  4. এটি একটি লুপ অপারেশন সম্পাদন করে যা নিখুঁত ত্রুটিকে হ্রাস করে এমন লাভ এবং ত্রুটি সম্পর্ক (ইসি) মানগুলি সন্ধান করে।

  5. এই মানগুলি ব্যবহার করে, এটি চূড়ান্ত ইসি মান গণনা করে এবং চার্টে ইসি এবং ইএমএর মান গ্রাফ করে।

  6. এটি একটি নির্দিষ্ট নির্ধারিত প্রান্তিকের উপরে ইসি এবং ইএমএর ক্রসওভার এবং ক্রসওন্ডারের উপর ভিত্তি করে সম্ভাব্য ক্রয় এবং বিক্রয় শর্ত তৈরি করে।

  7. এটি পূর্বে নির্ধারিত ক্রয় এবং বিক্রয় শর্তগুলির উপর ভিত্তি করে দীর্ঘ এবং সংক্ষিপ্ত অবস্থানগুলিতে প্রবেশ এবং প্রস্থান করার জন্য নিয়ম সেট করে। প্রতিটি অবস্থানের জন্য, এটি লটের আকার গণনা করে এবং সংশ্লিষ্ট শর্ত (ক্রয় / বিক্রয়) সত্য হলে একটি অবস্থানে প্রবেশ করে। এটি প্রতিটি অবস্থানের জন্য একটি স্টপ লস এবং একটি ট্রেলিং লাভ গ্রহণ করে।

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


/*backtest
start: 2023-08-08 00:00:00
end: 2023-09-07 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Adaptive Zero Lag EMA", shorttitle="AZLEMA", overlay = true, initial_capital=1000, currency="USD", commission_type=strategy.commission.cash_per_contract, commission_value=0.000005, slippage = 5, pyramiding=1, calc_on_every_tick=true)

src = input(title="Source",  defval=close)
Period = input(title="Period", defval = 20)
adaptive = input(title="Adaptive?", defval=true)
GainLimit = input(title="Gain Limit",  defval = 15)
Threshold = input(title="Threshold",  defval=0.03, step=0.01)
fixedSL = input(title="SL Points", defval=50)
fixedTP = input(title="TP Points", defval=10)
risk = input(title='Risk', defval=0.01, step=0.01)

PI = 3.14159265359
s2 = 0.0
s3 = 0.0
delta = 0.0
inst = 0.0
len = 0.0
v1 = 0.0
v2 = 0.0
v4 = 0.0

//IF adaptive is true, use the Cosine IFM strategy for determining the dominant
//cycle period
if(adaptive)
    v1 := src - src[7]
    s2 := 0.2*(v1[1] + v1)*(v1[1] + v1) + 0.8*nz(s2[1])
    s3 := 0.2*(v1[1] - v1)*(v1[1] - v1) + 0.8*nz(s3[1])
    if (s2 != 0)
        v2 := sqrt(s3/s2)
    if (s3 != 0)
        delta := 2*atan(v2)
    for i = 0 to 100
        v4 := v4 + delta[i]
        if (v4 > 2*PI and inst == 0.0)
            inst := i - 1
    if (inst == 0.0)
        inst := inst[1]
    len := 0.25*inst + 0.75*nz(len[1])
    Period := round(len)

LeastError = 1000000.0
EC = 0.0
Gain = 0.0
EMA = 0.0
Error = 0.0
BestGain = 0.0

alpha =2/(Period + 1)
EMA := alpha*src + (1-alpha)*nz(EMA[1])

for i = -GainLimit to GainLimit
    Gain := i/10
    EC := alpha*(EMA + Gain*(src - nz(EC[1]))) + (1 - alpha)*nz(EC[1])
    Error := src - EC
    if(abs(Error)<LeastError)
        LeastError := abs(Error)
        BestGain := Gain

EC := alpha*(EMA + BestGain*(src - nz(EC[1]))) + (1-alpha)*nz(EC[1])

plot(EC, title="EC", color=orange, linewidth=2)
plot(EMA, title="EMA", color=red, linewidth=2)

buy = crossover(EC,EMA) and 100*LeastError/src > Threshold
sell = crossunder(EC,EMA) and 100*LeastError/src > Threshold

if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

আরো