वॉल्यूम-वेटेड औसत मूल्य और अस्थिरता पर आधारित रणनीति के बाद की प्रवृत्ति

लेखक:चाओझांग, दिनांक: 2023-09-21 21:32:40
टैगः

अवलोकन

यह रणनीति मूल्य रुझानों की शुरुआत और अंत की पहचान करने और रुझानों का अनुसरण करने के लिए वॉल्यूम-वेटेड औसत मूल्य, बोलिंगर बैंड्स और समय खंडित वॉल्यूम सहित कई संकेतकों को एकीकृत करती है। कई पुष्टि प्रभावी रूप से झूठे ब्रेकआउट को फ़िल्टर कर सकती है।

रणनीति तर्क

इस रणनीति में निम्नलिखित मुख्य कदम शामिल हैंः

  1. तेजी से और धीमी मात्रा-भारित औसत मूल्य रेखाओं की गणना करें। वास्तविक व्यापार मूल्य को बेहतर ढंग से प्रतिबिंबित करने के लिए बंद मूल्य के बजाय VWAP का उपयोग किया जाता है।

  2. बोलिंगर बैंड्स को ग्राफ करने के लिए वीडब्ल्यूएपी लाइनों का औसत लें। बैंड्स द्वारा दिखाए गए अस्थिरता का विस्तार एक प्रवृत्ति की शुरुआत का सुझाव देता है।

  3. व्यापार की मात्रा में वृद्धि की पुष्टि करने और प्रवृत्ति को मान्य करने के लिए समय खंडित मात्रा (टीएसवी) का परिचय दें।

  4. खरीद संकेत उत्पन्न करें जब तेजी से VWAP धीमी VWAP से ऊपर पार करता है, कीमत बोलिंगर ऊपरी बैंड से ऊपर टूट जाती है, और TSV सकारात्मक होता है। जब रिवर्स होता है तो सिग्नल बेचें।

  5. स्टॉप लॉस सिग्नल के रूप में वीडब्ल्यूएपी पुलबैक और बोलिंगर लोअर बैंड का प्रयोग करें।

लाभ

  • कई पुष्टिकरण प्रभावी रूप से झूठे ब्रेकआउट को फ़िल्टर करते हैं और प्रवृत्ति की शुरुआत की पहचान करते हैं

  • वीडब्ल्यूएपी की गणना वास्तविक व्यापारिक मूल्य को बेहतर ढंग से दर्शाती है

  • अस्थिरता संकेतक एक प्रवृत्ति की उपस्थिति का आकलन करता है

  • ट्रेडिंग वॉल्यूम प्रवृत्ति की निरंतरता की पुष्टि करता है

  • उचित स्टॉप लॉस और लाभ नियंत्रण जोखिम

  • विन्यास योग्य मापदंडों लचीला अनुकूलन की अनुमति देते हैं

जोखिम

  • कई संकेतकों के अनुकूलन में कठिनाई

  • वीडब्लूएपी और बोलिंगर बैंड्स की विलंबित प्रकृति स्टॉप लॉस में देरी

  • विभिन्न बाजारों के लिए पैरामीटर ट्यूनिंग के प्रति संवेदनशील टीएसवी

  • सीमाबद्ध बाजारों में अधिक झूठे संकेत

  • ट्रेडिंग लागतों को अनदेखा करता है, वास्तविक लाभ और हानि बैकटेस्ट से कम है

सुधार

  • पैरामीटर संयोजनों को स्वचालित रूप से अनुकूलित करने के लिए मशीन लर्निंग लागू करें

  • लाभ में बेहतर लॉक करने के लिए गतिशील या ट्रेलिंग स्टॉप लॉस सेट करें

  • विचलन से बचने के लिए वॉल्यूम गति संकेतक जोड़ें

  • प्रवृत्ति चरणों को निर्धारित करने के लिए एलीट तरंगों को शामिल करें, तदनुसार मापदंडों को समायोजित करें

  • व्यापार लागतों पर विचार करें, लागत दक्षता को नियंत्रित करने के लिए न्यूनतम लाभ लक्ष्य निर्धारित करें

निष्कर्ष

यह रणनीति कई संकेतकों को एकीकृत करके एक अच्छी प्रवृत्ति पहचान प्रदान करती है। यह वास्तविक रुझानों की शुरुआत और अंत को प्रभावी ढंग से निर्धारित कर सकती है। पैरामीटर अनुकूलन, स्टॉप लॉस अनुकूलन और फिल्टर अनुकूलन के माध्यम से स्थिरता में और सुधार हासिल किया जा सकता है। लेकिन समग्र रूप से, एक प्रवृत्ति के बाद की रणनीति के रूप में, यह अभी भी कुछ स्तरों के ड्रॉडाउन और जोखिम-इनाम अनुपात को लेती है। व्यापारियों को अवसरों की प्रतीक्षा करने के लिए धैर्य और सख्त जोखिम प्रबंधन मानसिकता की आवश्यकता होती है।


/*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)

अधिक