गति-आधारित ब्रेकआउट ट्रेडिंग रणनीति


निर्माण तिथि: 2024-02-04 10:55:31 अंत में संशोधित करें: 2024-02-04 10:55:31
कॉपी: 0 क्लिक्स: 689
1
ध्यान केंद्रित करना
1617
समर्थक

गति-आधारित ब्रेकआउट ट्रेडिंग रणनीति

अवलोकन

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

रणनीति सिद्धांत

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

  1. ईएमए औसत रेखा का उपयोग करके मूल्य प्रवृत्ति की दिशा का निर्धारण करें। कीमत के ऊपर औसत रेखा एक bullish संकेत के रूप में और नीचे एक bearish संकेत के रूप में है।

  2. एटीआर संकेतक बाजार में उतार-चढ़ाव की दर का आकलन करता है। एटीआर को स्टॉप लॉस के रूप में गुणा किया जाता है। यह एकल नुकसान को प्रभावी ढंग से नियंत्रित कर सकता है।

  3. आरएसआई सूचकांक ने ओवरबॉट और ओवरसोल का फैसला किया। एटीआर स्टॉप लॉस प्राइस और औसत रेखा के फैसले के साथ एक ब्रेकआउट ट्रेड को आरएसआई द्वारा ओवरबॉट और ओवरसोल के बिना ट्रिगर किया जाना चाहिए। इससे झूठे ब्रेकआउट से बचा जा सकता है।

  4. स्टॉप आउट के आधार के रूप में पूर्व-उच्च या निम्न बिंदुओं का उपयोग करना। स्टॉप आउट की कीमतों को ट्रैक करने से अधिक मुनाफे को लॉक किया जा सकता है।

  5. सख्त स्टॉप लॉस नियम. एटीआर स्टॉप लॉस, जो कि अस्थिरता के संकेतकों के साथ जुड़ा हुआ है, जोखिम को नियंत्रित करता है, जबकि स्टॉप लॉस सेटिंग्स लाभप्रदता को लॉक करती हैं।

प्रवेश सिग्नल मूल्य के माध्यम से औसत रेखा के माध्यम से तोड़ने के लिए है और एटीआर स्टॉप लॉन्ज है। यदि यह एक bullish संकेत है, तो कीमत को उस उच्च बिंदु को पार करने की आवश्यकता है; यदि यह एक bearish संकेत है, तो कीमत को उस निम्न बिंदु को तोड़ने की आवश्यकता है।

श्रेष्ठता विश्लेषण

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

  1. बहु-सूचक निर्णय से झूठी घुसपैठ से बचा जा सकता है, सिग्नल की सटीकता में सुधार होता है

  2. एटीआर स्टॉप हानि रेंज सेटिंग्स एक उचित स्तर पर नियंत्रण हानि

  3. गतिशील ट्रैक रोक से अधिकतम लाभ प्राप्त करें

  4. सख्त स्टॉप-लॉस नियम जोखिम को नियंत्रित करने में मदद करते हैं

  5. सूचकांक और पैरामीटर अनुकूलन के लिए जगह है, विभिन्न बाजारों के लिए अनुकूलित किया जा सकता

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

इस रणनीति के साथ निम्नलिखित जोखिम भी हैं:

  1. लाभप्रदता बाजार में उतार-चढ़ाव की दर से संबंधित है। जब बाजार की प्रवृत्ति स्पष्ट नहीं होती है या चक्र लंबा होता है, तो लाभप्रदता के लिए जगह सीमित होती है।

  2. स्टॉप प्राइस के उतार-चढ़ाव के बाद एक बार फिर से ब्रेकआउट की स्थिति हो सकती है। इस स्थिति में स्टॉप प्राइस में उचित छूट दी जा सकती है।

  3. chasing。

अनुकूलन दिशा

इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

  1. विभिन्न किस्मों और आवृत्तियों के अनुसार औसत रेखा पैरामीटर, एटीआर पैरामीटर आदि को समायोजित करें।

  2. अधिक सूचकांक निर्णय, जैसे कि MACD, KDJ आदि को ओवरबाय ओवरसोल के रूप में पेश किया जा सकता है।

  3. एटीआर मूल्य के आधार पर वास्तविक समय में रोकथाम गुणांक को समायोजित किया जा सकता है। यह रोकथाम को बाजार में उतार-चढ़ाव के लिए अधिक अनुकूल बनाता है।

  4. विभिन्न समय चक्रों के संकेतकों के संयोजन से संकेत की गुणवत्ता में सुधार होता है।

  5. मशीन लर्निंग तकनीक का उपयोग करके मापदंडों और मापदंडों का परीक्षण और अनुकूलन करें ताकि रणनीति पैरामीटर को इष्टतम बनाया जा सके।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol. 
// Inputs
emaLengh = input(2, title = "emaLengh")
a = input(3.0,     title = "Key Vaule. 'This changes the sensitivity'")
c = input(10,    title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")
emaLengh2 = input(9, title = "emaLengh show")




rate = input(0.00025,    title = "波动率min")
rateMax = input(0.00045,    title = "波动率max")
adx_length =   input(20,    title = "adx_length")
adx_min =   input(14,    title = "adx_min")

sma_length =   input(11,    title = "sma_length")
rsi_len = input(9, title = "rsi_len")

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close

// boll 通道----------------------------------------------------
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
// plot(upper, color = color.rgb(46, 59, 240), title="upper")
// plot(lower, color = color.rgb(46, 59, 240), title="lower")


// plot(bbr, "Bollinger Bands %B", color=#26A69A)
// band1 = hline(1, "Overbought", color=#787B86, linestyle=hline.style_dashed)
// hline(0.5, "Middle Band", color=color.new(#787B86, 50))
// band0 = hline(0, "Oversold", color=#787B86, linestyle=hline.style_dashed)
// fill(band1, band0, color=color.rgb(38, 166, 154, 90), title="Background")
// boll 通道----------------------------------------------------

// 线性回归 --------------------------------------------------------------
zlsma_length = input(title="zlsma-Length", type=input.integer, defval=50)
zlsma_offset = input(title="zlsma-Offset", type=input.integer, defval=0)
lsma = linreg(src, zlsma_length, zlsma_offset)
lsma2 = linreg(lsma, zlsma_length, zlsma_offset)
eq= lsma-lsma2
zlsma = lsma+eq
// plot(zlsma , color = color.rgb(243, 243, 14), title="zlsma",linewidth=3)
// 线性回归 --------------------------------------------------------------



// --------------------------------
rsi = rsi(src, 6)

// xHH = sma(high, sma_length)
// xLL = sma(low, sma_length)
// movevalue = (xHH - xLL) / 2
// xHHM = xHH + movevalue
// xLLM = xLL - movevalue

// plot(xHHM, color = color.rgb(208, 120, 219), title="xHHM")
// plot(xLLM, color = color.rgb(208, 120, 219), title="xLLM")


xATR  = atr(c)
nLoss = a * xATR



xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))


 
pos = 0   
pos :=	iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
   
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema   = ema(src,emaLengh)
// sma   = sma(src,emaLengh)
emaFast   = ema(src,100)
emaSlow   = ema(src,576)
emaShow   = ema(src, emaLengh2)
// sma       =  sma(src, 8)

// [superTrend, dir] = supertrend(3, 200) 
// 判断连续涨

[diplus, diminus, adx] = dmi(adx_length, adx_length)


above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)
// above = ema == xATRTrailingStop
// below = xATRTrailingStop== ema

// smaabove = crossover(src, sma)
// smabelow = crossover(sma, src)
// smaabove = src > sma
// smabelow = sma > src
close_rate (n)=>
    abs(close[n]-open[n])/min(close[n],open[n])

rate_val = close_rate(0)
rate_val1 = close_rate(1)

buy  = src > xATRTrailingStop and above  and src > zlsma  and adx >adx_min
// and  src>emaShow
// and rate_val < rate_val1*2 and rate_val >=rate_val1
// and rate_val1<rateMax
// and close[1]>open[1] 
sell = src < xATRTrailingStop and below  and src < zlsma and adx >adx_min
// and  src<emaShow
// and rate_val < rate_val1*2  and rate_val >=rate_val1
//  and rate_val1<rateMax
// and open[1]>close[1]  and rate_val1 > rate  

// buy  = src > xATRTrailingStop 
// sell = src < xATRTrailingStop 
// plot(rate_val1 , color = color.red, title="rate_val1")



barbuy  = src > xATRTrailingStop 
barsell = src < xATRTrailingStop

atrRsi = rsi(xATRTrailingStop,rsi_len)

// plot(emaFast , color = color.rgb(243, 206, 127), title="emaFast")
// plot(ema , color = color.rgb(47, 227, 27), title="ut-ema")



// plot(emaShow , color = color.rgb(47, 227, 27), title="ema9")

plot(xATRTrailingStop, color = color.rgb(233, 233, 232), title="xATRTrailingStop")

plotshape(buy,  title = "Buy",  text = 'Buy',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, size = size.tiny)


// plotshape(buy,  title = "Sell",  text = 'Sell',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
// plotshape(sell, title = "buy", text = 'buy', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

// barcolor(barbuy  ? color.green : na)
// barcolor(barsell ? color.red   : na)

// strategy.entry("short",   false, when = buy)
// strategy.entry("long ", true, when = sell)


strategy.entry("long",   true, when = buy and strategy.position_size == 0)
strategy.entry("short", false, when = sell and strategy.position_size == 0)


//动态止盈start------------------------------------------------------------------------------------------
profit = input( 0.015,     title = "最小收益率")
close_profit_rate = input( 10,     title = "平仓收益回撤比")
loss = input(0.004,    title = "回撤率")

// 收益回撤比例
profit_price_scale =profit/close_profit_rate

var float profit_price = 0


// 计算小收益价格

get_profit_price(long) =>
    float res = 0
    if long == true
        res := strategy.position_avg_price * (1+profit)
    if long == false
        res := strategy.position_avg_price * (1-profit)
    res

// 止盈平仓条件
close_profit_position(long)=>
    bool result=false
    if long == true and profit_price>0 and profit_price*(1-profit_price_scale) >=close and  get_profit_price(true) <= close 
        result:=true
    if long == false and profit_price>0 and profit_price*(1+profit_price_scale) <=close and  get_profit_price(false) >= close 
        result:=true
    result

// 更新动态止盈价格
update_profit_price(price)=>
    float res = price
   // 无仓位时 动态止盈价格为0
    if strategy.position_size == 0 
        res := 0
   // long - 价格大于最小收益时保存
    if strategy.position_size > 0 and get_profit_price(true) <= close and (res==0 or res < close)
        res := close
   // short - 价格小于最小收益时保存
    if strategy.position_size < 0 and get_profit_price(true) >= close and (res==0 or res > close)
        res := close
    res
   
///////



profit_price := update_profit_price(profit_price)
long_close_profit_position = close_profit_position(true)
short_close_profit_position = close_profit_position(false)

// plot(profit_price, color = color.green, title="profit_price")
//动态止盈end------------------------------------------------------------------------------------------




strategy.close("long",comment="long-止盈",when = strategy.position_size > 0 and long_close_profit_position)

strategy.close("long",comment="long-止损",when = strategy.position_size >0 and strategy.position_avg_price * (1-loss) >= close)

strategy.close("short",comment="short-止盈",when = strategy.position_size <0 and short_close_profit_position)

strategy.close("short",comment="short-止损",when = strategy.position_size <0 and strategy.position_avg_price * (1+loss) <= close)