কারোবাইন মিড ইনভার্সন সহ স্কেলড নরমালাইজড ভেক্টর কৌশল

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

img

সারসংক্ষেপ

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

কৌশল নীতি

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

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

যখন মূল্য গতির সূচক একটি সংকেত উৎপন্ন করে, যদি কারোবাইন মিডন রিভার্সন সূচকটি সংশ্লিষ্ট দিকনির্দেশক এলাকায় থাকে, তখন একটি প্রবেশ সংকেত উৎপন্ন হয়।

সুবিধা

  1. কৌশলটি মূল্যের গতি এবং গড় বিপরীতমুখী ফ্যাক্টরগুলিকে ব্যাপকভাবে বিবেচনা করে, শক্তিশালী প্রবণতা মূল্যায়ন ক্ষমতা সহ।

  2. কারোবাইন মিডন রিভার্সন সূচকটি মূল্যের টার্নিং পয়েন্টগুলি সঠিকভাবে সনাক্ত করতে পারে এবং এন্ট্রি টাইমিংয়ের নির্ভুলতা উন্নত করতে পারে।

  3. বিভিন্ন সময়সীমার জন্য উপযুক্ত প্যারামিটার সামঞ্জস্যের মাধ্যমে ধরে রাখার সময়সীমা অবাধে নিয়ন্ত্রণ করা যায়।

  4. বাজারের পরিবর্তনের জন্য অভিযোজিত প্রতিক্রিয়া জন্য গতিশীল থ্রেশহোল্ড রিয়েল টাইমে সামঞ্জস্য করা যেতে পারে।

ঝুঁকি

  1. ট্রেন্ড অনুসরণকারী কৌশল হিসাবে, এটি রেঞ্জ-বান্ধব প্রবণতায় আটকা পড়ে।

  2. কারোবাইন মিডিয়ান রিভার্সনের সূচকটির একটি নির্দিষ্ট বিলম্ব রয়েছে, যা মূল্যের টার্নিং পয়েন্টগুলি মিস করতে পারে।

  3. অতিরিক্ত হোল্ডিংয়ের কারণে ক্ষতির বিস্তার এড়াতে হোল্ডিং পিরিয়ড প্যারামিটারটি পর্যবেক্ষণ করা উচিত।

  4. ডায়নামিক থ্রেশহোল্ড যথাযথভাবে নির্ধারণ করা উচিত, খুব বেশি নয়, অন্যথায় প্রবেশের সুযোগগুলি মিস করা যেতে পারে।

সংশ্লিষ্ট ঝুঁকি ব্যবস্থাপনা পদ্ধতিঃ

  1. প্রবণতা মূল্যায়ন সূচকগুলি সময়মতো বাজারের পরিসীমা এবং প্রস্থান অবস্থানগুলি পূর্বাভাস দিতে ব্যবহার করা যেতে পারে।

  2. বিলম্ব হ্রাস করার জন্য কারোবাইন মিডন রিভার্সনের সূচকের জন্য যুক্তিসঙ্গত বিলম্ব নির্বাচন করুন।

  3. বিভিন্ন মুল্যবান প্যারামিটার পরীক্ষা করুন এবং উপযুক্ত প্যারামিটার নির্বাচন করুন।

  4. অনুপস্থিত এন্ট্রিগুলি এড়ানোর জন্য গতিশীল থ্রেশহোল্ড পরিসীমা সামঞ্জস্য করুন।

উন্নতির নির্দেশাবলী

  1. প্যারামিটার অপ্টিমাইজ করার জন্য মূল্য গতির গণনার জন্য বিভিন্ন সময় পরীক্ষা করুন।

  2. ভোল্টেবিলিটি ইন্ডিকেটর যোগ করুন যাতে বাজারের ব্যাপ্তি সনাক্ত করা যায় এবং স্টপ লস সেট করা যায়।

  3. কারোবাইন মিডান রিভার্সনের সূচকটির প্যারামিটারগুলিকে আরও সংবেদনশীল করার জন্য অপ্টিমাইজ করুন।

  4. সিগন্যালের গুণমান উন্নত করতে ভলিউমের মতো অতিরিক্ত ফিল্টার যুক্ত করুন।

  5. মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে গতিশীলভাবে পরামিতি অপ্টিমাইজ করতে।

সিদ্ধান্ত

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


/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author: capissimo
strategy("Normalized Vector Strategy, ver.3 (sc)", precision=2, overlay=false)
// This is a scaled Normalized Vector Strategy with a Karobein Oscillator
// original: Drkhodakarami (https://www.tradingview.com/script/Fxv2xFWe-Normalized-Vector-Strategy-By-Drkhodakarami-Opensource/)

// Repainting: in general there two types of repainting:
// * when the last candle is constantly being redrawn
// * when the indicator draws a different configuration after it has been deactivated/reactivated, i.e. refreshed

// The former is a natural behaviour, which presents a constant source of frustration, 
// when a signal directly depends on the current market situation and can be overcome 
// with various indirect techniques like divergence.

// The latter suggests a flaw in the indicator design.
// Unfortunately, the Normalized Vector Strategy is repainting in the latter sense, although being
// really promising. Would be nice if our community suggests a solution to this problem ))

// This strat consistently performs with high accuracy, showing up to 96% scores
// Here are some of the best parameters:
// TF     Lookback   Performance (ca.)
// 1m     13         92%
// 3m     34         92%
// 5m     85         92%
// 15m    210        90%
// 30m    360        89%
// 1H     1440,720   94%, 87%

// The Karobein Oscillator has an intrinsic sinusoidal behaviour that helps in determining direction and timing.
// It does not repaint.
// original: alexgrover (https://www.tradingview.com/script/JiNi0f62-Karobein-Oscillator/)

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

price    = input(close,  "Price Data")
tf       = input(34,     "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])
showVol  = input(false,  "Volume")
useold   = input(true,   "Use Old System")

lime  = color.new(color.lime, 10), fuchsia = color.new(color.fuchsia, 10), 
black = color.new(color.black, 100), gray = color.new(color.gray, 50)

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
    
getdiff(prc, tf) =>
    prev  = useold ? security(syminfo.tickerid, tostring(tf), prc[1], barmerge.gaps_off, barmerge.lookahead_on) :
                     security(syminfo.tickerid, tostring(tf), prc[1])
    curr  = useold ? security(syminfo.tickerid, tostring(tf), prc, barmerge.gaps_off, barmerge.lookahead_on) : 
                     security(syminfo.tickerid, tostring(tf), prc)
    (curr/prev) - 1
    
p  = getdiff(prix, tf)
up = thresh/div, dn = -thresh/div
longCondition  = crossover(p, up)
shortCondition = crossunder(p, dn)

bg = longCondition ? lime : shortCondition ? fuchsia : black
cl = p > up ? color.green : p < dn ? color.red : color.silver

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

strategy.entry("L", true, 1, when=longCondition)
strategy.entry("S", false, 1, when=shortCondition)

alertcondition(longCondition, title='Long', message='Long Signal!')
alertcondition(shortCondition, 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, 2500, -1, 1), color=color.orange, transp=0)


আরো