Strategi dagangan pelarian penunjuk momentum


Tarikh penciptaan: 2023-09-18 21:28:22 Akhirnya diubah suai: 2023-09-18 21:28:22
Salin: 0 Bilangan klik: 691
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini menggunakan indikator momentum Bollinger Bands untuk melakukan perdagangan pecah-belah, yang menentukan sama ada harga menembusi Bollinger Bands dan turun ke bawah, untuk menghantar isyarat beli atau jual.

Prinsip

Strategi ini adalah berdasarkan pada indikator Brin Belt untuk menentukan arah trend. Brin Belt adalah kawasan seperti pita yang terdiri daripada purata bergerak dan perbezaan standardnya.

Secara khusus, strategi pertama mengira harga tertinggi dan terendah dalam n hari, dan mengira harga tengah (((harga tertinggi + harga terendah) / 2). Kemudian mengira harga penutup dan jarak jarak harga tengah untuk membentuk garis tengah Brin, di mana setiap garis tengah ditambah 2 kali perbezaan piawai untuk membentuk tren atas dan bawah.

Jika harga penutupan menembusi ke atas, menunjukkan bahawa ia sedang dalam trend naik; jika ia menembusi ke bawah, menunjukkan bahawa ia sedang dalam trend menurun. Apabila ia menembusi ke atas, lakukan lebih banyak, dan apabila ia menembusi ke bawah, lakukan kosong.

Di samping itu, strategi ini juga memperkenalkan mekanisme bukaan posisi terbalik. Apabila harga menembusi Burin dan berada di landasan, jika MACD turun, ia akan mengambil operasi pasar balik untuk menutup.

Kelebihan

  1. Menggunakan Brinband untuk menentukan arah trend, mempunyai keupayaan untuk mengesan trend.

  2. Reka bentuk terbalik boleh menghasilkan keuntungan negatif.

  3. Anda boleh menyesuaikan parameter seperti kitaran Brin dan kali ganda perbezaan piawai untuk berdagang dalam kitaran yang berbeza.

  4. Ia boleh ditutup dan dibuka semula untuk mengurangkan risiko.

Risiko dan tindakan

  1. Brinband sering digunakan untuk saham yang berfluktuasi tinggi, mungkin tidak sesuai untuk varieti seperti Resources atau indeks yang mempunyai kitaran panjang. Anda boleh menguji keberkesanan parameter kitaran yang berbeza.

  2. Isyarat penembusan mungkin berlaku penembusan palsu. Isyarat penapisan boleh digabungkan dengan faktor lain.

  3. Reverse Opening Positions (ROP) boleh menambah kerugian. Modul Reverse Opening Positions (ROP) boleh ditutup.

  4. Penarikan balik mungkin lebih besar. Anda boleh menyesuaikan saiz kedudukan dengan sewajarnya.

Arah pengoptimuman

  1. Anda boleh pertimbangkan untuk memasukkan penapis trend untuk mengelakkan pergerakan pasaran yang tidak jelas.

  2. Anda boleh menguji Brin untuk mencari parameter yang lebih sesuai.

  3. Anda boleh memperkenalkan strategi stop loss untuk mengawal kerugian tunggal.

  4. Anda boleh mengoptimumkan logik pembukaan dan penambahan kedudukan, menjadikan isyarat dagangan lebih jelas.

ringkaskan

Strategi ini menggunakan indikator Brin sebagai asas, untuk menilai trend harga yang pecah. Strategi pengesanan trend asas dapat dicapai dengan menggunakan penetapan parameter sederhana. Tetapi terdapat risiko pecah palsu tertentu, yang perlu disaring dengan indikator lain.

Overview

This strategy uses Bollinger Bands momentum indicator for breakout trading, mainly judging if price breaks through the upper or lower Bollinger Bands for trading signals.

Principles

The strategy is primarily based on Bollinger Bands indicator to determine trend direction. Bollinger Bands consist of a middle band based on a moving average and upper/lower bands defined by standard deviations. The middle band is a n-period moving average, the upper band is middle band + 2 standard deviations, and the lower band is middle band - 2 standard deviations. When price approaches the upper band it indicates overbought conditions, and when it approaches the lower band it signals oversold conditions.

Specifically, the strategy first calculates the highest high and lowest low over last n periods, and the middle price ((highest high + lowest low)/2). It then calculates the distance between close price and middle price, uses exponential moving average of the distance to form the middle band, and adds/subtracts 2 times standard deviation above and below to form the upper and lower bands.

When close price breaks through the upper band, it signals an uptrend; when it breaks the lower band, it signals a downtrend. The strategy goes long when the upper band is broken, and goes short when the lower band is broken.

In addition, the strategy incorporates a counter-trend mechanism. When price breaks the upper band but MACD is falling, it will take a counter-trend short position.

Advantages

  1. Using Bollinger Bands to determine trend direction provides certain trend following capability.

  2. Counter-trend design allows profiting from reversals.

  3. Customizable parameters like period and standard deviation multiples make it adaptable to different trading horizons.

  4. Disable counter-trend trading to reduce risk.

Risks and Mitigations

  1. Bollinger Bands work best for high volatility stocks, may not be suitable for stable commodities or indices. Can test different period parameters.

  2. Breakout signals may have false breakouts. Can add filters with other indicators.

  3. Counter-trend trading can further increase losses. Can disable counter-trend module.

  4. Drawdowns may be significant. Can adjust position sizing.

Enhancement Opportunities

  1. Consider adding trend filter to avoid whipsaw in non-directional markets.

  2. Test different standard deviation multiples to find optimal parameters.

  3. Incorporate stop loss to control single trade loss.

  4. Optimize entry and add-on logic for clearer trading signals.

Summary

The strategy uses Bollinger Bands as the primary indicator and trades based on trend breakouts. With simple parameters it provides basic trend following capabilities. But false breakout risks exist, requiring additional filters. Parameters, stop loss and risk controls can be enhanced. Overall it serves as a reasonable baseline breakout strategy.

Kod sumber strategi
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bands Scalper Strategy v1.6", shorttitle = "Scalper str 1.6", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needbe = input(true, defval = true, title = "Bands Entry")
needct = input(false, defval = false, title = "Counter-trend entry")
bodylen = input(10, defval = 10, minval = 0, maxval = 50, title = "Body length")
trb = input(1, defval = 1, minval = 1, maxval = 5, title = "Trend bars")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
chd = close > hd
cld = close < ld
uptrend = trb == 1 and chd ? 1 : trb == 2 and chd and chd[1] ? 1 : trb == 3 and chd and chd[1] and chd[2] ? 1 : trb == 4 and chd and chd[1] and chd[2] and chd[3] ? 1 : trb == 5 and chd and chd[1] and chd[2] and chd[3] and chd[4] ? 1 : 0
dntrend = trb == 1 and cld ? 1 : trb == 2 and cld and cld[1] ? 1 : trb == 3 and cld and cld[1] and cld[2] ? 1 : trb == 4 and cld and cld[1] and cld[2] and cld[3] ? 1 : trb == 5 and cld and cld[1] and cld[2] and cld[3] and cld[4] ? 1 : 0
trend = dntrend == 1 and high < center ? -1 : uptrend == 1 and low > center ? 1 : trend[1]

//trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30) / 10 * bodylen

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and bar == -1)) ? 1 : 0
dn7 = trend == 1 and ((bar == 1 and bar[1] == 1) or (close > hd and needbe == true)) and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and ((bar == -1 and bar[1] == -1) or (close < ld2 and needbe == true)) and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and bar == 1)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00)
    strategy.close_all()