गति का ब्रेकअप रणनीति की पहचान करता है

लेखक:चाओझांग, दिनांकः 2023-11-02 14:39:22
टैगः

img

अवलोकन

यह रणनीति तेजी से बढ़ते स्टॉक की पहचान करती है और जब कीमत नए उच्च स्तरों को तोड़ती है तो लंबी स्थिति लेती है। यह मुनाफे में लॉक करने के लिए निश्चित प्रतिशत ले लाभ का उपयोग करती है। यह रणनीति प्रवृत्ति के बाद की रणनीतियों से संबंधित है।

सिद्धांत

यह रणनीति मुख्यतः दो संकेतकों पर आधारित हैः

  1. फास्ट आरएसआईः यह मूल्य गति का न्याय करने के लिए हाल के 3 बार के उदय और गिरावट की गणना करता है। जब फास्ट आरएसआई 10 से नीचे होता है, तो इसे ओवरसोल्ड स्थिति माना जाता है।

  2. शरीर फिल्टर: यह हाल के 20 बार के औसत शरीर के आकार की गणना करता है। जब शरीर का आकार औसत शरीर के 2.5 गुना से अधिक होता है, तो इसे वैध ब्रेकआउट माना जाता है।

जब फास्ट आरएसआई 10 से नीचे होता है और बॉडी फिल्टर मान्य होता है, तो एक लंबी स्थिति खोली जाएगी। उसके बाद, 20% का एक निश्चित ले लाभ सेट किया जाता है। जब कीमत खुली कीमत * (1 + ले लाभ प्रतिशत) से अधिक होती है, तो स्थिति बंद हो जाएगी।

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

लाभ विश्लेषण

इस रणनीति के फायदे:

  1. तेजी से आरएसआई ओवरसोल्ड स्तरों की पहचान करता है और प्रवेश की सटीकता को बढ़ाता है।

  2. बॉडी फिल्टर उतार-चढ़ाव के कारण होने वाले झूठे ब्रेकआउट से बचाता है।

  3. निश्चित प्रतिशत लाभ प्राप्त स्थिर लाभ प्राप्त करता है और रुझानों को पकड़ता है।

  4. तर्क सरल और स्पष्ट है, इसे समझना और लागू करना आसान है।

  5. महान विस्तार के साथ सुरुचिपूर्ण कोड संरचना, अनुकूलित करने में आसान।

  6. बैकटेस्ट में स्थिर सकारात्मक रिटर्न और उच्च जीत दर।

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

ध्यान देने योग्य कुछ जोखिमः

  1. कोई स्टॉप लॉस तंत्र नहीं, घाटे के विस्तार का जोखिम।

  2. अनुचित लाभ लेने के स्तर से समय से पहले या बहुत गहरा बाहर निकलने का कारण बन सकता है।

  3. अस्थिर बाजारों में लगातार छोटे नुकसान हो सकते हैं।

  4. वित्तपोषण की लागत पर विचार नहीं किया जाता है, वास्तविक लाभ कम हो सकता है।

  5. विभिन्न उत्पादों में अपर्याप्त पैरामीटर अनुकूलन।

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

कुछ पहलुओं को अनुकूलित किया जा सकता हैः

  1. एकल व्यापार हानि को नियंत्रित करने के लिए स्टॉप लॉस जोड़ें.

  2. प्रवृत्तियों का अनुसरण करने के लिए गतिशील लाभ प्राप्त करें।

  3. प्रवेश सटीकता में सुधार के लिए ब्रेकआउट तर्क को बढ़ाएं।

  4. पूंजी उपयोग को अनुकूलित करने के लिए स्थिति आकार मॉड्यूल जोड़ें।

  5. विभिन्न उत्पादों के लिए पैरामीटर अनुकूलन मॉड्यूल जोड़ें.

  6. अस्थिर बाजारों में घाटे से बचने के लिए फ़िल्टर जोड़ें।

  7. औसत लागत प्रबंधन जोड़ने पर विचार करें।

निष्कर्ष

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


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

//@version=4
// this is based on https://www.tradingview.com/v/PbQW4mRn/
strategy(title = "ONLY LONG V4 v1", overlay = true, initial_capital = 1000, pyramiding = 1000,
   calc_on_order_fills = false, calc_on_every_tick = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_value = 0.075)

//study(title = "ONLY LONG V4 v1", overlay = true)

//Fast RSI
src = close
fastup = rma(max(change(src), 0), 3)
fastdown = rma(-min(change(src), 0), 3)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Body Filter
body = abs(close - open)
abody = sma(body, 20)

mac = sma(close, 20)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)
up = close < open and len > sma * 2 and min < min[1] and fastrsi < 10 and body > abody * 2.5

// Strategy
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

var bool longCondition = na

longCondition := up == 1 ? 1 : na

// Get the price of the last opened long

var float last_open_longCondition = na

last_open_longCondition := longCondition ? close : nz(last_open_longCondition[1])

// Get the bar time of the last opened long

var int last_longCondition = 0

last_longCondition := longCondition ? time : nz(last_longCondition[1])

// Take profit
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

tp = input(20, "TAKE PROFIT %", type = input.float, minval = 0, step = 0.5)

long_tp = crossover(high, (1+(tp/100))*last_open_longCondition) and not longCondition

// Get the time of the last tp close

var int last_long_tp = na

last_long_tp := long_tp ? time : nz(last_long_tp[1])

Final_Long_tp = long_tp and last_longCondition > nz(last_long_tp[1])

// Count your long conditions

var int sectionLongs = 0

sectionLongs := nz(sectionLongs[1])

var int sectionTPs = 0

sectionTPs := nz(sectionTPs[1])

// Longs Counter

if longCondition
    sectionLongs := sectionLongs + 1
    sectionTPs := 0

if Final_Long_tp
    sectionLongs := 0
    sectionTPs := sectionTPs + 1
    
// Signals
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

// Long

// label.new(
//    x = longCondition[1] ? time : na, 
//    y = na, 
//    text = 'LONG'+tostring(sectionLongs), 
//    color=color.lime, 
//    textcolor=color.black,  
//    style = label.style_labelup, 
//    xloc = xloc.bar_time, 
//    yloc = yloc.belowbar,
//    size = size.tiny)
   
// Tp

// label.new(
//    x = Final_Long_tp ? time : na, 
//    y = na, 
//    text = 'PROFIT '+tostring(tp)+'%', 
//    color=color.orange, 
//    textcolor=color.black,  
//    style = label.style_labeldown, 
//    xloc = xloc.bar_time, 
//    yloc = yloc.abovebar,
//    size = size.tiny) 

ltp = iff(Final_Long_tp, (last_open_longCondition*(1+(tp/100))), na), plot(ltp, style=plot.style_cross, linewidth=3, color = color.white, editable = false)

// Backtesting
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

testStartYear = input(2019, "BACKTEST START YEAR", minval = 1, maxval = 2222) 
testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

strategy.entry("long", strategy.long, when = longCondition and (time >= testPeriodStart))
strategy.exit("TP", "long", limit = (last_open_longCondition*(1+(tp/100))))

// Alerts
// ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

alertcondition(longCondition[1], title="Long Alert", message = "LONG")
alertcondition(Final_Long_tp, title="Long TP Alert", message = "LONG TP")


अधिक