ভলিউম-ওয়েটেড গড় মূল্য এবং অস্থিরতার উপর ভিত্তি করে কৌশল অনুসরণ করে প্রবণতা

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

সারসংক্ষেপ

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

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

কৌশলটি নিম্নলিখিত মূল পদক্ষেপগুলিকে অন্তর্ভুক্ত করেঃ

  1. দ্রুত এবং ধীর ভলিউম-ওয়েটেড গড় মূল্য লাইন গণনা করুন। প্রকৃত ট্রেডিং মূল্যকে আরও ভালভাবে প্রতিফলিত করার জন্য বন্ধ মূল্যের পরিবর্তে ভিডাব্লুএপি ব্যবহার করা হয়।

  2. বোলিংগার ব্যান্ডগুলি গ্রাফ করার জন্য ভিডাব্লুএপি লাইনগুলির গড় নিন। ব্যান্ডগুলির দ্বারা প্রদর্শিত প্রসারিত অস্থিরতা একটি প্রবণতা শুরু করার পরামর্শ দেয়।

  3. ট্রেডিং ভলিউম বৃদ্ধি এবং প্রবণতা যাচাই করার জন্য টাইম সেগমেন্টেড ভলিউম (টিএসভি) প্রবর্তন করুন।

  4. যখন দ্রুত ভিডাব্লুএপি ধীর ভিডাব্লুএপি এর উপরে ক্রস করে, যখন দাম বোলিংগারের উপরের ব্যান্ডের উপরে ভাঙে এবং টিএসভি ইতিবাচক হয় তখন ক্রয় সংকেত উত্পন্ন করে। বিপরীত ঘটলে বিক্রয় সংকেত।

  5. স্টপ লস সিগন্যাল হিসেবে ভিডব্লিউএপি পলব্যাক এবং বোলিংগারের নিম্ন ব্যান্ড ব্যবহার করুন।

সুবিধা

  • একাধিক নিশ্চিতকরণ কার্যকরভাবে মিথ্যা ব্রেকআউট ফিল্টার করে এবং ট্রেন্ড শুরু সনাক্ত করে

  • ভিডাব্লুএপি গণনা প্রকৃত ট্রেডিং মূল্যকে আরও ভালভাবে প্রতিফলিত করে

  • অস্থিরতা সূচকটি একটি প্রবণতা উপস্থিত কিনা তা বিচার করে

  • লেনদেনের পরিমাণ প্রবণতা অব্যাহত রাখার বিষয়টি নিশ্চিত করেছে

  • স্টপ লস এবং লাভ নিয়ন্ত্রণের জন্য যুক্তিসঙ্গত ঝুঁকি

  • কনফিগারযোগ্য পরামিতিগুলি নমনীয় অপ্টিমাইজেশানকে অনুমতি দেয়

ঝুঁকি

  • একাধিক সূচক অপ্টিমাইজ করার অসুবিধা

  • ভিডব্লিউএপি এবং বোলিংজার ব্যান্ডের বিলম্বিত স্টপ লস

  • বিভিন্ন বাজারের জন্য প্যারামিটার টিউনিংয়ের জন্য সংবেদনশীল টিএসভি

  • পরিসীমা-সীমাবদ্ধ বাজারে আরও মিথ্যা সংকেত

  • ট্রেডিং খরচ উপেক্ষা করে, ব্যাকটেস্টের তুলনায় প্রকৃত লাভ ও লস দুর্বল

উন্নতি

  • স্বয়ংক্রিয়ভাবে প্যারামিটার সমন্বয় অপ্টিমাইজ করার জন্য মেশিন লার্নিং প্রয়োগ করুন

  • মুনাফা আরও ভালভাবে লক করার জন্য গতিশীল বা ট্রেলিং স্টপ লস সেট করুন

  • বৈষম্য এড়াতে ভলিউম ইম্পোমেন্ট সূচক যোগ করুন

  • প্রবণতা পর্যায়ে নির্ধারণের জন্য Elliott Waves অন্তর্ভুক্ত করুন, সেই অনুযায়ী পরামিতি সামঞ্জস্য

  • ট্রেডিং খরচ বিবেচনা করুন, খরচ দক্ষতা নিয়ন্ত্রণ করতে সর্বনিম্ন মুনাফা লক্ষ্য নির্ধারণ করুন

সিদ্ধান্ত

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


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4

// Credits

// "Vwap with period" code which used in this strategy to calculate the leadLine was written by "neolao" active on https://tr.tradingview.com/u/neolao/
// "TSV" code which used in this strategy was written by "liw0" active on https://www.tradingview.com/u/liw0. The code is corrected by "vitelot" December 2018.

strategy("HYE Trend Hunter [Strategy]", overlay = true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, commission_value = 0.025, pyramiding = 0)
  
// Strategy inputs 

slowtenkansenPeriod = input(9, minval=1, title="Slow Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
slowkijunsenPeriod = input(26, minval=1, title="Slow Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fasttenkansenPeriod = input(5, minval=1, title="Fast Tenkan Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
fastkijunsenPeriod = input(13, minval=1, title="Fast Kijun Sen VWAP Line Length", group = "Tenkansen / Kijunsen")
BBlength = input(20, minval=1, title= "Bollinger Band Length", group = "Bollinger Bands")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Band StdDev", group = "Bollinger Bands")
tsvlength  = input(13, minval=1, title="TSV Length", group = "Tıme Segmented Volume")
tsvemaperiod = input(7, minval=1, title="TSV Ema Length", group = "Tıme Segmented Volume")

// Make input options that configure backtest date range  
 
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group = "Backtest Range")
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group = "Backtest Range")
startYear = input(title="Start Year", type=input.integer,
     defval=2000, minval=1800, maxval=2100, group = "Backtest Range")

endDate = input(title="End Date", type=input.integer, 
     defval=31, minval=1, maxval=31, group = "Backtest Range")
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12, group = "Backtest Range") 
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group = "Backtest Range")
     
inDateRange =  true

//Slow Tenkan Sen Calculation

typicalPriceTS = (high + low + close) / 3
typicalPriceVolumeTS = typicalPriceTS * volume
cumulativeTypicalPriceVolumeTS = sum(typicalPriceVolumeTS, slowtenkansenPeriod)
cumulativeVolumeTS = sum(volume, slowtenkansenPeriod)
slowtenkansenvwapValue = cumulativeTypicalPriceVolumeTS / cumulativeVolumeTS

//Slow Kijun Sen Calculation

typicalPriceKS = (high + low + close) / 3
typicalPriceVolumeKS = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKS = sum(typicalPriceVolumeKS, slowkijunsenPeriod)
cumulativeVolumeKS = sum(volume, slowkijunsenPeriod)
slowkijunsenvwapValue = cumulativeTypicalPriceVolumeKS / cumulativeVolumeKS

//Fast Tenkan Sen Calculation

typicalPriceTF = (high + low + close) / 3
typicalPriceVolumeTF = typicalPriceTF * volume
cumulativeTypicalPriceVolumeTF = sum(typicalPriceVolumeTF, fasttenkansenPeriod)
cumulativeVolumeTF = sum(volume, fasttenkansenPeriod)
fasttenkansenvwapValue = cumulativeTypicalPriceVolumeTF / cumulativeVolumeTF

//Fast Kijun Sen Calculation

typicalPriceKF = (high + low + close) / 3
typicalPriceVolumeKF = typicalPriceKS * volume
cumulativeTypicalPriceVolumeKF = sum(typicalPriceVolumeKF, fastkijunsenPeriod)
cumulativeVolumeKF = sum(volume, fastkijunsenPeriod)
fastkijunsenvwapValue = cumulativeTypicalPriceVolumeKF / cumulativeVolumeKF

//Slow LeadLine Calculation
 
lowesttenkansen_s = lowest(slowtenkansenvwapValue, slowtenkansenPeriod)
highesttenkansen_s = highest(slowtenkansenvwapValue, slowtenkansenPeriod)

lowestkijunsen_s = lowest(slowkijunsenvwapValue, slowkijunsenPeriod)
highestkijunsen_s = highest(slowkijunsenvwapValue, slowkijunsenPeriod)

slowtenkansen = avg(lowesttenkansen_s, highesttenkansen_s)
slowkijunsen = avg(lowestkijunsen_s, highestkijunsen_s)
slowleadLine = avg(slowtenkansen, slowkijunsen)

//Fast LeadLine Calculation
 
lowesttenkansen_f = lowest(fasttenkansenvwapValue, fasttenkansenPeriod)
highesttenkansen_f = highest(fasttenkansenvwapValue, fasttenkansenPeriod)

lowestkijunsen_f = lowest(fastkijunsenvwapValue, fastkijunsenPeriod)
highestkijunsen_f = highest(fastkijunsenvwapValue, fastkijunsenPeriod)

fasttenkansen = avg(lowesttenkansen_f, highesttenkansen_f)
fastkijunsen = avg(lowestkijunsen_f, highestkijunsen_f)
fastleadLine = avg(fasttenkansen, fastkijunsen)

// BBleadLine Calculation

BBleadLine = avg(fastleadLine, slowleadLine)

// Bollinger Band Calculation
 
basis = sma(BBleadLine, BBlength)
dev = BBmult * stdev(BBleadLine, BBlength)
upper = basis + dev
lower = basis - dev

// TSV Calculation

tsv = sum(close>close[1]?volume*(close-close[1]):close<close[1]?volume*(close-close[1]):0,tsvlength)
tsvema = ema(tsv, tsvemaperiod)

// Rules for Entry & Exit  

if(fastleadLine > fastleadLine[1] and slowleadLine > slowleadLine[1] and tsv > 0 and tsv > tsvema and close > upper and inDateRange)
    strategy.entry("BUY", strategy.long)
 
if(fastleadLine < fastleadLine[1] and slowleadLine < slowleadLine[1])
    strategy.close("BUY")

// Plots 

colorsettingS = input(title="Solid Color Slow Leadline", defval=false, type=input.bool)
plot(slowleadLine, title = "Slow LeadLine", color = colorsettingS ? color.aqua : slowleadLine > slowleadLine[1] ? color.green : color.red, linewidth=3)

colorsettingF = input(title="Solid Color Fast Leadline", defval=false, type=input.bool)
plot(fastleadLine, title = "Fast LeadLine", color = colorsettingF ? color.orange : fastleadLine > fastleadLine[1] ? color.green : color.red, linewidth=3)

p1 = plot(upper, "Upper BB", color=#2962FF)
p2 = plot(lower, "Lower BB", color=#2962FF)
fill(p1, p2, title = "Background", color=color.blue)

আরো