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


সৃষ্টির তারিখ: 2023-12-12 16:07:18 অবশেষে সংশোধন করুন: 2023-12-12 16:07:18
অনুলিপি: 1 ক্লিকের সংখ্যা: 648
1
ফোকাস
1621
অনুসারী

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

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটির মূল সূচকটি হ’ল সমান্তরাল সিস্টেম। কৌশলটি 15 মিনিট, 30 মিনিট, 60 মিনিট ইত্যাদি বিভিন্ন সময়কালের মধ্যে মূল্য প্রবণতা গণনা করার জন্য JMA, TEMA এবং DEMA এর মতো একাধিক সমান্তরাল সূচক ব্যবহার করে। উদাহরণস্বরূপ, 15 টি সময়কালের মধ্যে JMA দ্বারা গণনা করা সমান্তরাল চলাচলকে এই সময়ের মধ্যে মূল্য প্রবণতা হিসাবে বিচার করা হয়। কৌশলটি তারপরে বিভিন্ন সময়ের মধ্যে মূল্য চলাচলের তুলনা করে, দীর্ঘ লাইন এবং সংক্ষিপ্ত লাইনের মধ্যে কোনও বিচ্ছিন্নতা রয়েছে কিনা তা বিচার করে। যদি উল্লেখযোগ্য বিচ্ছিন্নতা সংকেত থাকে তবে একটি লেনদেনের সংকেত উত্পন্ন হয়। তদতিরিক্ত, কৌশলটি RSI, তরঙ্গের সূচক এবং অন্যান্য সহায়ক বিচারকে সংযুক্ত করে যাতে লেনদেনের সংকেতের নির্ভরযোগ্যতা নিশ্চিত হয়।

বিশেষত, কৌশলটির প্রবণতা, প্রবণতা 2 এবং প্রবণতা 3 ভেরিয়েবলগুলি যথাক্রমে 15 মিনিটের, 30 মিনিটের এবং 60 মিনিটের মূল্যের প্রবণতা প্রতিনিধিত্ব করে। যদি 15 মিনিটের দামটি বিপরীত হয় এবং 30 মিনিট এবং 60 মিনিট এখনও বিপরীত হয় না, তবে সংক্ষিপ্ত এবং দীর্ঘ লাইনগুলির মধ্যে বিচ্যুতি হিসাবে বিচার করা হয়, একটি ট্রেডিং সংকেত উত্পন্ন হয়। যদি সমস্ত চক্রের প্রবণতা একত্রিত হয় তবে কোনও ট্রেডিং সংকেত উত্পন্ন হয় না।

এই কৌশলটির মূল ধারণা হল, একাধিক চক্রের মধ্যে সম্পর্ককে তুলনা করে কিছু ভুয়া সংকেতকে ফিল্টার করে আরো নির্ভরযোগ্য ট্রেডিং সিগন্যাল তৈরি করা।

সামর্থ্য বিশ্লেষণ

এই কৌশলটির প্রধান সুবিধাগুলো হলঃ

  1. মাল্টি-টাইম অক্ষ বিশ্লেষণ ব্যবহার করে, সিগন্যালের নির্ভরযোগ্যতা বৃদ্ধি করে এবং ভুয়া সিগন্যালগুলি ফিল্টার করে;
  2. একক সূচকের সমস্যা এড়াতে একাধিক সূচকের সমন্বয়ে সমন্বিত বিচার করা;
  3. ম্যানুয়াল হস্তক্ষেপ ছাড়াই স্বয়ংক্রিয়ভাবে মাল্টি হেড স্যুইচিং, অপারেশন অসুবিধা হ্রাস।

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

এই কৌশলটির কিছু ঝুঁকিও রয়েছেঃ

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

এই ঝুঁকির মোকাবিলায় আমরা নিম্নলিখিত পদক্ষেপগুলি গ্রহণ করতে পারিঃ

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

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

এই কৌশলটি আরও উন্নত করার সুযোগ রয়েছেঃ

  1. মেশিন লার্নিং অ্যালগরিদমগুলি মডেল প্রশিক্ষণের মাধ্যমে স্বয়ংক্রিয়ভাবে বহু-পরিমাণের প্যারামিটারগুলিকে অপ্টিমাইজ করতে পারে;
  2. স্বনির্ধারিত স্লাইড পয়েন্ট সেটিংস যুক্ত করা যায়, যা স্লাইড পয়েন্টের আকারকে বাজারের অস্থিরতার সাথে সামঞ্জস্য করে, যা ফিক্সড ডিস্কের কার্যকারিতা উন্নত করে;
  3. প্রবণতা দ্রুত বিপরীত দ্বারা সৃষ্ট ক্ষতি এড়াতে পরিমাণ নিশ্চিতকরণ ব্যবস্থা চালু করা যেতে পারে।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Drexel Strategy", overlay=true )
Length1=7
Length2=9
Multiplier=input(1.5,"Multiplier")
jma(src,length) =>
    beta = 0.45*(length-1)/(0.45*(length-1)+2)
    alpha = beta
    tmp0 = (1-alpha)*src + alpha*nz(tmp0[1])
    tmp1 = (src - tmp0[0])*(1-beta) + beta*nz(tmp1[1])
    tmp2 = tmp0[0] + tmp1[0]
    tmp3 = (tmp2[0] - nz(tmp4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(tmp3[1])
    tmp4 = nz(tmp4[1]) + tmp3[0]
    JMA = tmp4
    JMA
rsx(src,length) =>
    f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
    f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0 
    f8 =  100.0*(src) 
    f18 = 3.0 / (length + 2.0) 
    f20 = 1.0 - f18 
    f10 = nz(f8[1])
    v8 = f8 - f10 
    f28 = f20 * nz(f28[1]) + f18 * v8 
    f30 = f18 * f28 + f20 * nz(f30[1])
    vC = f28 * 1.5 - f30 * 0.5 
    f38 = f20 * nz(f38[1]) + f18 * vC 
    f40 = f18 * f38 + f20 * nz(f40[1])
    v10 = f38 * 1.5 - f40 * 0.5 
    f48 = f20 * nz(f48[1]) + f18 * v10 
    f50 = f18 * f48 + f20 * nz(f50[1])
    v14 = f48 * 1.5 - f50 * 0.5 
    f58 = f20 * nz(f58[1]) + f18 * abs(v8) 
    f60 = f18 * f58 + f20 * nz(f60[1])
    v18 = f58 * 1.5 - f60 * 0.5
    f68 = f20 * nz(f68[1]) + f18 * v18 
    f70 = f18 * f68 + f20 * nz(f70[1])
    v1C = f68 * 1.5 - f70 * 0.5 
    f78 = f20 * nz(f78[1]) + f18 * v1C 
    f80 = f18 * f78 + f20 * nz(f80[1])
    v20 = f78 * 1.5 - f80 * 0.5
    f0 = ((f88 >= f90_) and (f8 != f10)) ? 1.0  : 0.0
    f90 = ((f88 == f90_) and (f0 == 0.0))  ? 0.0  : f90_
    v4_ = ((f88 < f90) and (v20 > 0.0000000001)) ? (v14 / v20 + 1.0) * 50.0 : 50.0
    rsx = ((v4_ > 100.0) ? 100.0 : (v4_ < 0.0) ? 0.0 : v4_)-50
    rsx
xPrice=open
emaA = ema(xPrice, Length2)  
Xprice = rsx(open,14)
XPrice = high, xprice = low
xe1 = jma(xPrice, Length1)
xe11 = jma(Xprice[1],Length1)
xe111 = jma(XPrice[1],Length1)
xe1111=jma(xprice[1],Length1)
xe2 = jma(xe1, Length1)
xe21 = jma(xe111, Length1)
xe3 = jma(xe2, Length1)
xe31 = jma(xe1111,Length2)
xe3a = jma(xe2,Length1)
xe4 = jma(xe3, Length1)
xe5 = jma(xe4, Length1)
xe6 = jma(xe5, Length1)
b = 0.7
c1 = -b*b*b
c2 = 3*b*b+3*b*b*b
c3 = -6*b*b-3*b-3*b*b*b
c3a = nz(c3a[1])
c4 = 1+3*b+b*b*b+3*b*b
TEMA = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
DEMA = 2 * emaA - ema(emaA, Length2)
Length(mod)=>(mod*c3a)+Length2
Trend1=TEMA/DEMA
a=rsx(open,Length(2))
b1=rsx(open,Length(3))
c=rsx(open,Length(5))
d=rsx(open,Length(8))
e=rsx(open,Length(13))
f=rsx(open,Length(21))
g=rsx(open,Length(34))
h=rsx(open,Length(55))
i=rsx(open,Length(89))
j=rsx(open,Length(144))
trend1 = (((a-b1)+(c-d)+(e-f)+(g-h)+(i-j))/10)
trend = trend1>0?avg(a,b,c4,c2):trend1==0?XPrice:avg(rsx(open,24),jma(open,24),rsx(jma(open,24),24))
trend2 = trend1>0?avg(d,e,c2,c1):trend1==0?XPrice:avg(rsx(open,48),jma(open,48),rsx(jma(open,48),48))
trend3 = trend1>0?avg(d,e,c2,c1):trend1==0?xprice:avg(rsx(open,96),jma(open,96),rsx(jma(open,96),96))
bc=request.security(syminfo.tickerid,'15',trend)
bc1=request.security(syminfo.tickerid,'15',trend2)
bc2=request.security(syminfo.tickerid,'15',trend3)
bd=request.security(syminfo.tickerid,'30',trend)
bd1=request.security(syminfo.tickerid,'30',trend2)
bd2=request.security(syminfo.tickerid,'30',trend3)
be=request.security(syminfo.tickerid,'60',trend)
be1=request.security(syminfo.tickerid,'60',trend2)
be2=request.security(syminfo.tickerid,'60',trend3)
bf=request.security(syminfo.tickerid,'120',trend)
bf1=request.security(syminfo.tickerid,'120',trend2)
bf2=request.security(syminfo.tickerid,'120',trend3)
bg=request.security(syminfo.tickerid,'240',trend)
bg1=request.security(syminfo.tickerid,'240',trend2)
bg2=request.security(syminfo.tickerid,'240',trend3)
bh=request.security(syminfo.tickerid,'D',trend)
bh1=request.security(syminfo.tickerid,'D',trend2)
bh2=request.security(syminfo.tickerid,'D',trend3)
Trend=((bc-bc1)+(bd-bd1)+(be-be1)+(bf-bf1)+(bg-bg1)+(bh))
Trend11=((bc-bc1)+(bd-bd1)+(be-be1)+(bf-bf1)+(bg-bg1)+(bh1))
Trend33 = max(min(min(min(bc2,bd2),min(be2,bf2)),bg2),bh2)
AverageTrend=sma(Trend1,1000)
StdDev=Multiplier*stdev(Trend1,1000)
TopBand=AverageTrend+StdDev
BotBand=AverageTrend-StdDev
ap=open
n1=10
n2=21
esa1 = jma(ap, n1)
d1 = jma(abs(ap - esa1), n1)
x1 = trend3==Trend33
y1 = trend2==Trend11 
ci = (ap - esa1) / (0.015 * d1)
tci = jma(ci, n2)
wt1=tci
wt2=sma(wt1,4)
fast=jma(open,5)
slow=jma(open,13)
macd=fast-slow
signal=sma(macd,4)
WaveTrend1=wt1-wt2
JMACD1=macd-signal
rsi = (((rsi(open,6))-50)*3)
g1=rsi>Trend1 and WaveTrend1>Trend1 and JMACD1>Trend1
h1=g1?tci*c3a:nz(h[1])
strategy.entry("Long",true,when=x1)
strategy.close("Long",y1)
strategy.entry("Short",false,when=y1)
strategy.close("Short",x1)