পিভট পয়েন্ট এবং ঢালের উপর ভিত্তি করে লাইভ ট্রেন্ডলাইন ট্রেডিং

ATR ADX MA
সৃষ্টির তারিখ: 2024-04-26 15:34:28 অবশেষে সংশোধন করুন: 2024-04-26 15:34:28
অনুলিপি: 2 ক্লিকের সংখ্যা: 859
1
ফোকাস
1617
অনুসারী

পিভট পয়েন্ট এবং ঢালের উপর ভিত্তি করে লাইভ ট্রেন্ডলাইন ট্রেডিং

ওভারভিউ

PivotHigh এবং PivotLow) ব্যবহার করে দামের উচ্চ ও নিম্ন স্থানের বৈচিত্র্য চিহ্নিত করে এবং এর উপর ভিত্তি করে একটি উর্ধ্বমুখী এবং নিম্নমুখী ট্রেন্ড লাইন আঁকেন। ট্রেন্ড লাইনের স্লাইডটি ATR (অর্ধ-সত্যিকারের ব্যাপ্তি), স্ট্যান্ডার্ড ডিফারেনশিয়াল বা লিনিয়ার রিগ্রেশন দ্বারা গণনা করা হয় এবং একটি স্লাইডিং ফ্যাক্টর দ্বারা গুণিত হয়। যখন দাম ট্রেন্ড লাইনটি ভেঙে যায় তখন এই কৌশলটি একটি ক্রয় বা বিক্রয় সংকেত তৈরি করে।

কৌশল নীতি

  1. ta.pivothigh ((() এবং ta.pivotlow ((() ফাংশন ব্যবহার করে অতীতের একটি নির্দিষ্ট সময়কালের মধ্যে ওঠানামা উচ্চতা (((ph)) এবং ওঠানামা নিম্নতা (((pl)) ।
  2. নির্বাচিত গণনা পদ্ধতির (ATR, স্ট্যান্ডার্ড ডিফেন্ডার বা লিনিয়ার রিগ্রেশন) উপর নির্ভর করে ট্রেন্ড লাইনের স্লাইডটি গণনা করা হয় এবং স্লাইড ফ্যাক্টর (মাল্ট) দ্বারা গুণিত করা হয়।
  3. বর্তমান মূল্যের জন্য uptrend line (উপরে) এবং downtrend line (নিচে) ব্যবহার করে slope এবং support price গণনা করুন।
  4. বর্তমান ক্লোজিং মূল্য ট্রেন্ড লাইন অতিক্রম করেছে কিনা তা নির্ধারণ করুনঃ যদি ক্লোজিং মূল্য ঊর্ধ্বমুখী ট্রেন্ড লাইনের উপরে থাকে তবে একটি ঊর্ধ্বমুখী ব্রেকিং সিগন্যাল উৎপন্ন হয়; যদি ক্লোজিং মূল্য ঊর্ধ্বমুখী ট্রেন্ড লাইনের নীচে থাকে তবে একটি নিম্নমুখী ব্রেকিং সিগন্যাল উৎপন্ন হয়।
  5. ট্রেন্ড লাইন চার্টে আঁকা এবং প্রসারিত করা যাবে কিনা তা বেছে নেওয়া যায়।
  6. ব্রেকিং সিগন্যাল অনুযায়ী লেনদেন করা হয়ঃ ওপরে ব্রেকিং করে মাল্টিপল খোলা হয়, নীচে ব্রেকিং করে খালি পল খোলা হয়।

কৌশলগত সুবিধা

  1. এই কৌশলটি নির্দিষ্ট নির্ভরযোগ্যতা এবং স্থায়িত্বের সাথে মূল্যের ক্রিয়াকলাপের বস্তুনিষ্ঠ তথ্যের উপর ভিত্তি করে ট্রেডিং সিগন্যাল তৈরি করে (উদাহরণস্বরূপ, বেসপয়েন্ট এবং ট্রেন্ড লাইন) ।
  2. ট্রেন্ড লাইনের স্লাইডটি বাজারের অস্থিরতার সাথে সামঞ্জস্যপূর্ণ এবং বিভিন্ন বাজারের অবস্থার সাথে সামঞ্জস্যপূর্ণ।
  3. ব্যবহারকারীরা কৌশলটির কার্যকারিতা অপ্টিমাইজ করার জন্য স্কেলেন্স গণনা পদ্ধতি এবং প্যারামিটার সেটিংয়ের নমনীয়তা পছন্দ করতে পারেন।
  4. কৌশলটি রিয়েল-টাইম সিগন্যাল এবং বিলম্বিত সিগন্যাল উভয় মোড সরবরাহ করে যা বিভিন্ন ব্যবহারকারীর চাহিদা মেটাতে পারে।
  5. বিল্ট-ইন অ্যালার্ম ব্যবহারকারীকে সময়মত লেনদেনের সুযোগ পেতে সহায়তা করে।

কৌশলগত ঝুঁকি

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

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

  1. ট্রেডিং ভলিউম, অস্থিরতা ইত্যাদির মতো আরও প্রযুক্তিগত সূচক বা দামের আচরণের বৈশিষ্ট্যগুলি প্রবর্তন করুন, যাতে ট্রেন্ড লাইন ব্রেকিংয়ের সংকেত সনাক্তকরণ এবং সংকেতের গুণমান উন্নত করতে সহায়তা করে।
  2. ট্রেডিং সিগন্যাল ফিল্টার করা হয়, যেমন ট্রেন্ড লাইন ব্রেকআপের সময়কাল, ব্রেকআপের মাত্রা ইত্যাদির মতো বিষয়গুলি বিবেচনা করা হয় যাতে ভুয়া সংকেতগুলি হ্রাস করা যায়।
  3. পজিশন ম্যানেজমেন্ট এবং ঝুঁকি নিয়ন্ত্রণের অনুকূলীকরণ, যেমন বাজারের প্রবণতার শক্তি বা অস্থিরতার গতিশীলতার উপর ভিত্তি করে পজিশন আকারের পরিবর্তন, যুক্তিসঙ্গত স্টপ লস এবং স্টপ পজিশন সেট করা।
  4. প্যারামিটার অপ্টিমাইজেশান, যেমন মেশিন লার্নিং বা অপ্টিমাইজেশান অ্যালগরিদম ব্যবহার করে প্যারামিটারগুলির সর্বোত্তম সংমিশ্রণ খুঁজে বের করা।

সারসংক্ষেপ

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

কৌশল সোর্স কোড
/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(" only Ajay ", overlay=true)

//------------------------------------------------------------------------------
//Settings
//------------------------------------------------------------------------------{
length = input.int(14, 'Swing Detection Lookback')
mult = input.float(1., 'Slope', minval = 0, step = .1)
calcMethod = input.string('Atr', 'Slope Calculation Method', options = ['Atr','Stdev','Linreg'])
backpaint = input(true, tooltip = 'Backpainting offset displayed elements in the past. Disable backpainting to see real time information returned by the indicator.')

//Style
upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style')
dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style')
showExt = input(true, 'Show Extended Lines')

//------------------------------------------------------------------------------}
//Calculations
//------------------------------------------------------------------------------{
var upper = 0.
var lower = 0.
var slope_ph = 0.
var slope_pl = 0.

var offset = backpaint ? length : 0

n = bar_index
src = close

ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

//Slope Calculation Method
slope = switch calcMethod
    'Atr'    => ta.atr(length) / length * mult
    'Stdev'  => ta.stdev(src,length) / length * mult
    'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult

//Get slopes and calculate trendlines
slope_ph := ph ? slope : slope_ph
slope_pl := pl ? slope : slope_pl

upper := ph ? ph : upper - slope_ph
lower := pl ? pl : lower + slope_pl

var upos = 0
var dnos = 0
upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos
dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos

//------------------------------------------------------------------------------}
//Extended Lines
//------------------------------------------------------------------------------{
// var uptl  = line.new(na,na,na,na, color = upCss, style = line.style_dashed, extend = extend.right)
// var dntl  = line.new(na,na,na,na, color = dnCss, style = line.style_dashed, extend = extend.right)

// if ph and showExt
//     uptl.set_xy1(n-offset, backpaint ? ph : upper - slope_ph * length)
//     uptl.set_xy2(n-offset+1, backpaint ? ph - slope : upper - slope_ph * (length+1))

// if pl and showExt
//     dntl.set_xy1(n-offset, backpaint ? pl : lower + slope_pl * length)
//     dntl.set_xy2(n-offset+1, backpaint ? pl + slope : lower + slope_pl * (length+1))

//------------------------------------------------------------------------------}
//Plots
//------------------------------------------------------------------------------{
plot(backpaint ? upper : upper - slope_ph * length, 'Upper', color = ph ? na : upCss, offset = -offset)
plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset)

//Breakouts
upBreakout = upos > upos[1]
dnBreakout = dnos > dnos[1]

if (upBreakout)
    strategy.entry("Up Breakout", strategy.long)

if (dnBreakout)
    strategy.entry("Down Breakout", strategy.short)

//------------------------------------------------------------------------------}
//Alerts
//------------------------------------------------------------------------------{
alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward')

//------------------------------------------------------------------------------}