वॉल्यूम ब्रेकआउट और ट्रेलिंग स्टॉप लॉस के साथ समर्थन और प्रतिरोध रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-11 17:58:26
टैगः

img

अवलोकन

इस रणनीति का मुख्य विचार प्रवेश संकेतों को निर्धारित करने के लिए समर्थन/प्रतिरोध स्तरों और वॉल्यूम ब्रेकआउट को जोड़ना और अधिक संभावित लाभ प्राप्त करने के लिए लाभ लेने के लिए गतिशील रूप से स्टॉप लॉस को समायोजित करने के लिए एटीआर संकेतक का उपयोग करना है।

रणनीति तर्क

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

  1. पिछले L_Bars मोमबत्तियों की उच्चतम कीमत और पिछले R_Bars मोमबत्तियों की सबसे कम कीमत, प्रतिरोध और समर्थन स्तर के रूप में गणना करने के लिए ta.pivothigh और ta.pivotlow का उपयोग करें।

  2. जब बंद मूल्य प्रतिरोध स्तर से ऊपर जाता है और वॉल्यूम वॉल्यूम रेंज की सीमा से ऊपर जाता है, तो लंबा हो जाता है। जब बंद मूल्य समर्थन स्तर से नीचे जाता है और वॉल्यूम वॉल्यूम रेंज की सीमा से ऊपर जाता है, तो छोटा हो जाता है।

  3. लंबे प्रवेश के बाद, बंद-एटीआर_एलओ पर स्टॉप लॉस सेट करें। छोटे प्रवेश के बाद, बंद+एटीआर_एसएच पर स्टॉप लॉस सेट करें। यह गतिशील ट्रेलिंग स्टॉप लॉस समायोजन का एहसास करता है।

  4. प्रत्येक दिन केवल ट्रेडिंग घंटों (0915-1445) के भीतर पहला संकेत लें। जोखिम इनपुट द्वारा परिभाषित दैनिक जोखिम सीमा तक पहुंचने के बाद कोई नया आदेश नहीं।

लाभ विश्लेषण

  1. प्रवेश की सटीकता में सुधार के लिए वॉल्यूम संकेतक के साथ समर्थन/प्रतिरोध सिद्धांत का प्रयोग करें।

  2. एटीआर के आधार पर स्टॉप लॉस को ट्रेलिंग करने से बाजार की अस्थिरता के आधार पर स्टॉप लेवल को लचीलापन से समायोजित किया जा सकता है, जिससे मुनाफे की संभावना कम हो जाती है।

  3. दैनिक व्यापार समय और व्यापार जोखिम पर उचित नियंत्रण प्रवृत्ति को पकड़ने और अत्यधिक स्टॉप लॉस से बचने में मदद करता है।

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

  1. समर्थन/प्रतिरोध स्तर विफल हो सकते हैं और प्रभावी प्रवेश संकेत प्रदान करने में असमर्थ हो सकते हैं।

  2. एटीआर गुणक को बहुत अधिक सेट करने से स्टॉप लॉस बहुत दूर हो सकता है, जिससे हानि का जोखिम बढ़ जाता है।

  3. बहुत कम वॉल्यूम थ्रेशोल्ड सेट करने से अवसर चूक सकते हैं, बहुत अधिक झूठे संकेत पैदा कर सकते हैं।

समाधान:

  • विभिन्न उत्पादों की विशेषताओं के आधार पर समर्थन/प्रतिरोध मापदंडों को समायोजित करें।

  • एटीआर गुणक और वॉल्यूम सीमा मापदंडों का अनुकूलन करें।

  • प्रवेश संकेतों की पुष्टि करने के लिए अन्य संकेतक जोड़ें।

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

  1. प्रवेश संकेतों को निर्धारित करने में सहायता के लिए चलती औसत जैसे अन्य संकेतक जोड़ें।

  2. एटीआर गुणक और वॉल्यूम थ्रेशोल्ड जैसे मापदंडों का अनुकूलन करें।

  3. गतिशील मापदंड अनुकूलन का एहसास करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करें।

  4. पैरामीटर पैटर्न खोजने के लिए अन्य उत्पादों के लिए रणनीति का विस्तार करें।

सारांश

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


/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//   ____________                _________                      _____________
//  |____________|             ||________|                      ||__________|
//       ||            ____    ||        ||                     ||                    ______ ________    _____ ________
//       ||    |   || ||       ||________|| |   || ||    ||     ||     |   ||   /\\   |   // |______| || ||    |______|
//       ||    |===|| |===     ||__________ |   || ||    ||     ||     |===||  /__\\  |===      ||    ||   \\     ||
//       ||    |   || ||___    ||        || |___|| ||___ ||___  ||     |   || /    \\ |   \\    ||    || ___||    ||
//       ||                    ||________||                     ||__________
//       ||                    ||________|                      ||__________|
  
//@version=5
strategy("SUPPORT RESISTANCE STRATEGY [5MIN TF]",overlay=true )
L_Bars = input.int(defval = 10, minval = 1 , maxval = 50, step =1)
R_Bars = input.int(defval = 15, minval = 1 , maxval = 50, step =1)
volumeRange = input.int(20, title='Volume Break [threshold]', minval = 1)

// ═══════════════════════════ //
// ——————————> INPUT <——————— //
// ═══════════════════════════ //

EMA1 = input.int(title='PRICE CROSS EMA', defval = 150, minval = 10 ,maxval = 400)
factor1 = input.float(title='_ATR LONG',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL LONG")
factor2 = input.float(title='_ATR SHORT',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL SHORT")
risk = input.float(title='RISK',defval = 200 , minval = 1 , maxval = 5000 , step = 50, tooltip = "RISK PER TRADE")


var initialCapital = strategy.equity
t = time(timeframe.period, '0915-1445:1234567')
time_cond = not na(t)

// ══════════════════════════════════ //
// ———————————> EMA DATA <——————————— //
// ══════════════════════════════════ //
ema1 = ta.ema(close, EMA1)

plot(ema1, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema1')

// ══════════════════════════════════ //
// ————————> TRAIL DATA <———————————— //
// ══════════════════════════════════ //
// *******Calculate LONG TRAIL data*****
ATR_LO = ta.atr(14)*factor1

// *******Calculate SHORT TRAIL data*****
ATR_SH = ta.atr(14)*factor2

long_trail = close - ATR_LO
short_trail = close + ATR_SH

// Plot atr data
//plot(longStop, color=color.new(color.green, 0), style=plot.style_linebr, title='Long Trailing Stop')
//plot(shortStop , color=color.new(color.red, 0), style=plot.style_linebr, title='Short Trailing Stop')

// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //
// ————————————————————————————————————————————————————————> RESISTANCE/SUPPORT LEVELS DATA <————————————————————————————————————————————————————————————————————————————————————————————— //
// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //

Resistance_pi = fixnan(ta.pivothigh(L_Bars, R_Bars)[1])
Support_pi = fixnan(ta.pivotlow(L_Bars, R_Bars)[1])
r1 = plot(Resistance_pi, color=ta.change(Resistance_pi) ? na : color.red,  offset=-(R_Bars + 1),linewidth=2, title='RESISTANCE')
s1 = plot(Support_pi, color=ta.change(Support_pi) ? na : color.green, offset=-(R_Bars + 1),linewidth=2, title='SUPPORT')

//Volume 
vol_1 = ta.ema(volume, 5)
vol_2 = ta.ema(volume, 10)
osc_vol = 100 * (vol_1 - vol_2) / vol_2

// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( ta.crossover(close, Resistance_pi) and osc_vol > volumeRange and not(open - low > close - open) and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close >= ema1 )
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "BUY")
    
plot(long_trail , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = long_trail ,comment='SELL')
 
// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( ta.crossunder(close, Support_pi) and osc_vol > volumeRange and not(open - close < high - open)  and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close <= ema1 )
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "SELL") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" ,  stop = short_trail ,comment='BUY')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 55)

// ════════════════════════════════════════//
// ————————> MAX INTRADAY LOSS  <————————— //
// ════════════════════════════════════════//
// strategy.risk.max_intraday_loss(type = strategy.cash, value = risk)



अधिक