VWAP से Z-दूरी पर आधारित ZVWAP रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-10 12:02:19
टैगः

img

अवलोकन

यह रणनीति LazyBear द्वारा VWAP संकेतक से Z-दूरी पर आधारित है। यह मूल्य और VWAP के बीच Z-दूरी का उपयोग ओवरबॉट और ओवरसोल्ड स्थितियों, साथ ही प्रविष्टियों और निकासों को निर्धारित करने के लिए करता है। यह रणनीति कुछ शोर को फ़िल्टर करने के लिए EMA लाइनों और Z-दूरी क्रॉसिंग 0 स्तर को शामिल करती है।

रणनीति तर्क

  1. VWAP मान की गणना करें
  2. मूल्य और VWAP के बीच Z-दूरी की गणना करें
  3. ओवरबॉट लाइन (2.5) और ओवरसोल्ड लाइन (-0.5) सेट करें
  4. जब तेज ईएमए > धीमी ईएमए, जेड-दूरी < ओवरसोल्ड लाइन और जेड-दूरी 0 से ऊपर पार हो जाती है तो लंबी हो जाती है।
  5. बंद पोजीशन जब Z-distance > overbought line हो
  6. स्टॉप लॉस लॉजिक शामिल करें

मुख्य कार्य:

  • calc_zvwap: मूल्य और VWAP के बीच Z-दूरी की गणना करें
  • वीडब्ल्यूएपी मान: वीडब्ल्यूएपी ((एचएलसी3)
  • फास्ट ईएमएः ईएमए (अगला, फास्ट ईएमए)
  • धीमी ईएमए: ईएमए (अगला, धीमी ईएमए)

लाभ विश्लेषण

  1. Z-distance अंतर्ज्ञानी रूप से ओवरबॉट/ओवरसोल्ड स्तर दिखाता है
  2. ईएमए झूठे ब्रेकआउट को फ़िल्टर करता है
  3. पिरामिडिंग को रुझानों का लाभ उठाने की अनुमति देता है
  4. जोखिम को नियंत्रित करने के लिए स्टॉप लॉस लॉजिक है

जोखिम विश्लेषण

  1. लाइनों, ईएमए अवधि जैसे मापदंडों को सही ढंग से सेट करने की आवश्यकता है
  2. Z-दूरी संकेतक देरी, महत्वपूर्ण मोड़ बिंदुओं को याद कर सकते हैं
  3. यदि प्रवृत्ति उलट जाए तो पिरामिडिंग से नुकसान बढ़ सकता है
  4. स्टॉप लॉस को उचित रूप से सेट करने की आवश्यकता है

समाधान:

  1. बैकटेस्टिंग के माध्यम से मापदंडों का अनुकूलन
  2. फ़िल्टर संकेतों में अन्य संकेतक जोड़ें
  3. पिरामिड बनाने के लिए उचित परिस्थितियां तैयार करें
  4. गतिशील स्टॉप लॉस का प्रयोग करें

अनुकूलन दिशाएँ

  1. ईएमए अवधि का अनुकूलन
  2. विभिन्न ओवरबॉट/ओवरसोल्ड मानदंडों का परीक्षण करें
  3. शोर फ़िल्टर करने के लिए अन्य संकेतक जोड़ें
  4. विभिन्न स्टॉप लॉस तकनीकों का परीक्षण करें
  5. प्रवेश, पिरामिड और स्टॉप लॉस लॉजिक का अनुकूलन करें

सारांश

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4
//This is based on Z distance from VWAP by Lazybear
strategy(title="ZVWAP[LB] strategy", overlay=false,pyramiding=2, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)
length=input(13,"length")

calc_zvwap(pds, source1) =>
	mean = sum(volume*source1,pds)/sum(volume,pds)
	vwapsd = sqrt(sma(pow(source1-mean, 2), pds) )
	(close-mean)/vwapsd


upperTop=2.5  //input(2.5)
upperBottom=2.0  //input(2.0)
lowerTop=-0.5  //input(-0.5)
lowerBottom=-2.0 //input(-2.0)

buyLine=input(-0.5, title="OverSold Line",minval=-2, maxval=3)
sellLine=input(2.0, title="OverBought Line",minval=-2, maxval=3)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)

stopLoss =input(5, title="Stop Loss",minval=1) 

hline(0, title="Middle Line", linestyle=hline.style_dotted, color=color.green)

ul1=plot(upperTop, "OB High")
ul2=plot(upperBottom, "OB Low")
fill(ul1,ul2, color=color.red)
ll1=plot(lowerTop, "OS High")
ll2=plot(lowerBottom, "OS Low")
fill(ll1,ll2, color=color.green)
zvwapVal=calc_zvwap(length,close)
plot(zvwapVal,title="ZVWAP",color=color.purple, linewidth=2)


longEmaVal=ema(close,slowEma)
shortEmaVal=ema(close,fastEma)  

vwapVal=vwap(hlc3)


zvwapDipped=false

for i = 1 to 10
    zvwapDipped := zvwapDipped or zvwapVal[i]<=buyLine

longCondition=  shortEmaVal > longEmaVal  and zvwapDipped and  crossover(zvwapVal,0)

barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ZVWAPLE", long=true,  when= longCondition  and strategy.position_size<1) 


//Add
strategy.entry(id="ZVWAPLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(zvwapVal,0)) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ZVWAPLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss

strategy.close(id="ZVWAPLE",comment="TPExitAll",    qty=strategy.position_size ,   when= crossunder(zvwapVal,sellLine))   //close all      zvwapVal>sellLine

अधिक