অ্যাক্টিভেশন ফাংশন সহ স্কেলড নরমালাইজড ভেক্টর কৌশল, সংস্করণ 4

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

img

সারসংক্ষেপ

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

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

  1. নির্ধারিত সময়সীমার উপর বন্ধের শতাংশ মূল্য পরিবর্তন x গণনা করুন
  2. প্রক্রিয়াজাত ক্রম p পেতে সক্রিয়করণ ফাংশন x পাস
  3. ধনাত্মক এবং নেতিবাচক থ্রেশহোল্ড th সেট করুন, দীর্ঘ যান যখন p th এর উপরে অতিক্রম করে, এবং -th এর নীচে অতিক্রম করার সময় সংক্ষিপ্ত যান
  4. ভুয়া সংকেত এড়াতে পুনরায় আঁকা নিষ্ক্রিয় করুন

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

  1. অ্যাক্টিভেশন ফাংশনগুলি গোলমাল ফিল্টার করতে এবং সংকেত বিচারকে উন্নত করতে সহায়তা করে
  2. নতুন প্রবেশ এবং ঘনিষ্ঠ যুক্তি স্বয়ংক্রিয় ট্রেডিং সক্ষম করে
  3. আরো প্যারামিটার কাস্টমাইজেশন আরো বাজারে মানিয়ে
  4. চমৎকার ভিজ্যুয়ালাইজেশন স্বজ্ঞাতভাবে বাণিজ্য সংকেত উপস্থাপন করে

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

  1. ভুল থ্রেশহোল্ড সেটিং বাণিজ্য সুযোগ মিস করতে পারে
  2. অনুপযুক্ত অ্যাক্টিভেশন ফাংশনগুলি বাজারের তথ্যকে অতিরিক্ত ফিল্টার করতে পারে
  3. রিপেইন্টিং-প্ররোচিত সংকেত বিকৃতি পরীক্ষার প্রয়োজন

সমাধান:

  1. সর্বোত্তম খুঁজে পেতে থ্রেশহোল্ড পরামিতি সামঞ্জস্য করুন
  2. সেরা ম্যাচ খুঁজে পেতে বিভিন্ন অ্যাক্টিভেশন ফাংশন চেষ্টা করুন
  3. বৈধ সংকেত নিশ্চিত করার জন্য পুনরায় পেইন্টিং সনাক্তকরণ লজিক যোগ করুন

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

  1. অভিযোজিত থ্রেশহোল্ড সেটিং যুক্ত করুন
  2. অ্যাক্টিভেশন ফাংশন প্যারামিটার অপ্টিমাইজ করুন
  3. স্বয়ংক্রিয় স্টপ লস অন্তর্ভুক্ত করুন
  4. আরও ফ্যাক্টর দিয়ে সংকেত ফিল্টার করুন

সিদ্ধান্ত

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


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author: capissimo
strategy("Scaled Normalized Vector Strategy, ver.4", precision=2, overlay=false)
// This is a modification of my Scaled Normalized Vector Strategy  
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)

price    = input(close,  "Price Data")
tf       = input(18,     "Timeframe", minval=1, maxval=1440)
thresh   = input(14.,    "Threshold", minval=.1, step=.1) 
div      = input(1000000,"Divisor", options=[1,10,100,1000,10000,100000,1000000,10000000,100000000])
mmx      = input(233,    "Minimax Lookback", options=[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584])
showVol  = input(false,  "Volume")
useold   = input(true,   "Use Old System")
method   = input("Swish", "Activation", options=["Step", "LReLU", "Swish", "None"])

scaleMinimax(X, p, min, max) => 
    hi = highest(X, p), lo = lowest(X, p)
    (max - min) * (X - lo)/(hi - lo) + min

getdiff(prc, tf) =>
    prev  = scaleMinimax((useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) 
                                 : security(syminfo.tickerid, tostring(tf), prc[1])), tf, 0, 1)
    curr  = scaleMinimax((useold ? security(syminfo.tickerid, tostring(tf), hlc3, barmerge.gaps_off, barmerge.lookahead_on)  
                                 : security(syminfo.tickerid, tostring(tf), hlc3)), tf, 0, 1)
    (curr/prev) - 1

relu(x) => max(x, 0)
lrelu(x, alpha) => relu(x) - alpha * relu(-x)
step(x) => x >= 0 ? 1 : -1
log2(x) => log(x) / log(2)
sigmoid(x) => 1 / (1 + exp(-x))
swish(x) => x * sigmoid(x)

f(m) => method==m

vol  = useold ? security(syminfo.tickerid, tostring(tf), volume, barmerge.gaps_off, barmerge.lookahead_on) 
              : security(syminfo.tickerid, tostring(tf), volume)
obv  = cum(change(price) > 0 ? vol : change(price) < 0 ? -vol : 0*vol)
prix = showVol ? obv : price
x    = getdiff(prix, tf)
p    = f("Swish") ? swish(x) : f("Step") ? step(x) : f("LReLU") ? lrelu(x, .8) : x
th   = thresh/div
long = crossover(p, th)
short= crossunder(p, -th)

lime  = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10), 
black = color.new(color.black, 100), gray = color.new(color.gray, 50)
bg    = long ? lime : short ? fuchsia : black
cl    = p > th ? color.green : p < -th ? color.red : color.silver

bgcolor(bg, editable=false)
plot(scaleMinimax(th, mmx, -1, 1), color=lime, editable=false, transp=0)
hline(0, linestyle=hline.style_dotted, title="base line", color=gray, editable=false)
plot(scaleMinimax(-th, mmx, -1, 1), color=fuchsia, editable=false, transp=0)
plot(scaleMinimax(p, mmx, -1, 1), color=cl, style=plot.style_histogram, transp=70, editable=false)
plot(scaleMinimax(p, mmx, -1, 1), color=cl, style=plot.style_linebr, title="prediction", transp=0, editable=false)

strategy.entry("L", true, 1, when=long)
strategy.entry("S", false, 1, when=short)

alertcondition(long, title='Long', message='Long Signal!')
alertcondition(short, title='Short', message='Short Signal!')

//*** Karobein Oscillator
per  = input(8, "Karobein Osc Lookback")

prix2 = ema(price, per)
a = ema(prix2 < prix2[1] ? prix2/prix2[1] : 0, per)
b = ema(prix2 > prix2[1] ? prix2/prix2[1] : 0, per)
c = (prix2/prix2[1])/(prix2/prix2[1] + b)
d = 2*((prix2/prix2[1])/(prix2/prix2[1] + c*a)) - 1

plot(scaleMinimax(d, mmx, -1, 1), color=color.orange, transp=0)


আরো