مومنٹم بریک آؤٹ ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-04 10:55:31
ٹیگز:

img

جائزہ

یہ ایک رفتار پر مبنی بریکآؤٹ ٹریڈنگ حکمت عملی ہے۔ یہ مارکیٹ کے رجحانات اور اتار چڑھاؤ کا فیصلہ کرنے کے لئے چلتی اوسط ، اے ٹی آر ، آر ایس آئی اور دیگر اشارے استعمال کرتی ہے ، جس میں تجارت کے لئے سخت اسٹاپ نقصان / منافع حاصل کرنے کی ترتیبات کے ساتھ مل کر تجارت ہوتی ہے۔ حکمت عملی بنیادی طور پر فیصلہ کرتی ہے کہ آیا قیمتیں چلتی اوسط کے علاوہ اے ٹی آر رینج سے نیچے گرتی ہیں یا نہیں تاکہ تجارتی سگنل پیدا کیے جاسکیں۔

حکمت عملی کا اصول

اس حکمت عملی کے اہم نکات یہ ہیں:

  1. قیمتوں کی رجحان کی سمت کا فیصلہ کرنے کے لئے ای ایم اے کا استعمال کریں۔ ای ایم اے سے اوپر کی قیمت عبور کرنا ایک تیزی کا اشارہ ہے اور اس سے نیچے عبور کرنا ایک کمی کا اشارہ ہے۔

  2. اے ٹی آر مارکیٹ کی اتار چڑھاؤ کی نشاندہی کرتا ہے۔ اے ٹی آر کو ایک گتانک سے ضرب دینے سے اسٹاپ نقصان کی حد بنتی ہے۔ اس سے مؤثر طریقے سے سنگل نقصان پر قابو پایا جاسکتا ہے۔

  3. آر ایس آئی زیادہ خرید / زیادہ فروخت کی حیثیت کی نشاندہی کرتا ہے۔ اسٹاپ نقصان کی قیمت اور ای ایم اے کراس اوور کی طرف سے اشارہ کردہ بریک آؤٹ ٹریڈز اس وقت ہونا چاہئے جب آر ایس آئی زیادہ خرید / زیادہ فروخت والے زون میں نہیں ہے۔ اس سے غلط بریک آؤٹ سے بچتا ہے۔

  4. پچھلی مدت کے اعلی / کم پوائنٹس کو منافع حاصل کرنے کی بنیاد کے طور پر استعمال کریں۔ منافع حاصل کرنے کی قیمت کو ٹریک کرنے سے زیادہ منافع حاصل ہوسکتا ہے۔

  5. سخت اسٹاپ نقصان / منافع حاصل کرنے کے قواعد۔ اے ٹی آر پر مبنی اسٹاپ نقصان خطرات کو کنٹرول کرتا ہے اور منافع میں منافع حاصل کرتا ہے۔

انٹری سگنل اس وقت ٹرگر ہوتا ہے جب قیمت ای ایم اے کے علاوہ اے ٹی آر اسٹاپ نقصان کی حد سے باہر نکل جاتی ہے۔ بولش سگنلز کے لئے ، قیمت کو اعلی نقطہ سے اوپر عبور کرنے کی ضرورت ہوتی ہے۔ bearish سگنلز کے لئے ، قیمت کو کم نقطہ سے نیچے توڑنے کی ضرورت ہوتی ہے۔

فوائد کا تجزیہ

اس حکمت عملی کے فوائد:

  1. متعدد اشارے غلط وقفے سے بچنے اور درستگی کو بہتر بناتے ہیں

  2. اے ٹی آر سٹاپ نقصان نقصانات کو مناسب سطح پر رکھتا ہے

  3. متحرک منافع لینے سے زیادہ سے زیادہ منافع ملتا ہے

  4. سخت قواعد خطرے کے کنٹرول کو آسان بناتے ہیں

  5. مختلف مارکیٹوں کے مطابق ڈھالنے کے لئے اشارے اور پیرامیٹرز کے لئے زیادہ سے زیادہ اصلاح کی گنجائش

خطرے کا تجزیہ

اس حکمت عملی کے خطرات:

  1. منافع بخش مارکیٹ میں اتار چڑھاؤ کے ساتھ وابستہ ہے۔ اگر رجحان غیر واضح ہے یا سائیکل لمبا ہے تو فوائد محدود ہوسکتے ہیں۔

  2. اسٹاپ نقصان کی قیمت دوبارہ توڑنے سے پہلے ہی پھسل سکتی ہے۔ اس سے رجحانات غائب ہوجاتے ہیں۔ اسٹاپ نقصان کی قیمت میں تھوڑا سا نرمی ہوسکتی ہے۔

3۔موجودہ مارکیٹوں میں پیچھا کرنے کی صلاحیت موجود ہے۔

اصلاح کی ہدایات

اصلاح کے خیالات:

  1. مختلف مصنوعات اور وقت کے فریم کے لئے ایم اے، اے ٹی آر پیرامیٹرز کو ایڈجسٹ کریں.

  2. مزید اشارے شامل کریں جیسے MACD، KDJ overbought/oversold کے لیے۔

  3. متحرک طور پر ایڈجسٹ کریں ATR ضارب کو ریئل ٹائم ATR اقدار کی بنیاد پر موافقت پذیر رکاوٹوں کے لئے.

  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)

  






مزید