Trend Mengikuti Strategi Pembalikan


Tarikh penciptaan: 2024-01-03 16:34:28 Akhirnya diubah suai: 2024-01-03 16:34:28
Salin: 0 Bilangan klik: 654
1
fokus pada
1621
Pengikut

Trend Mengikuti Strategi Pembalikan

Gambaran keseluruhan

Strategi trend-following reversal adalah strategi perdagangan trend berdasarkan purata bergerak dan harga yang melampau. Strategi ini menggunakan dua rata-rata bergerak untuk mengikuti trend harga dan membuka kedudukan terbalik apabila trend berbalik. Ia juga mengira saluran harga berdasarkan harga tertinggi dan terendah beberapa garis K terkini, dan menetapkan stop loss apabila harga mendekati sempadan saluran, untuk mengawal risiko lebih lanjut.

Prinsip Strategi

Strategi ini menggunakan HMA dan LMA dengan ketinggian 3 dan ketinggian 3 untuk mengesan trend harga. Interpret sebagai bullish apabila harga melintasi HMA; Interpret sebagai bearish apabila harga melintasi LMA.

Strategi ini juga akan mengira harga tertinggi dan terendah dalam barbakar K barisan terkini berdasarkan uplevel dan dnlevel. uplevel akan menambah satu faktor penyesuaian (corr) berdasarkan harga tertinggi dalam barbakar K barisan terkini; dan dnlevel akan mengurangkan satu faktor penyesuaian (corr) berdasarkan harga terendah dalam barbakar K barisan terkini.

Apabila membuka banyak pesanan, harga berhenti adalah saluran atas; apabila membuka pesanan kosong, harga berhenti adalah saluran bawah. Ini dapat mengawal risiko kerugian yang disebabkan oleh pembalikan harga.

Apabila isyarat pembalikan muncul, strategi ini akan segera membuka kedudukan terbalik dan mengikuti trend harga baru. Ini adalah prinsip pembalikan.

Kelebihan Strategik

  • Strategi ini memanfaatkan kelebihan trend-tracking moving averages untuk menangkap trend harga dengan cepat.
  • Menggunakan saluran harga dan membuka kedudukan terbalik untuk mengawal risiko dan mengunci keuntungan dengan berkesan;
  • Logik strategi mudah difahami, mudah difahami dan mudah dilaksanakan;
  • Parameter yang boleh disesuaikan seperti panjang trend, faktor penyesuaian, dan lain-lain, sesuai dengan pelbagai jenis;
  • Ia juga boleh digunakan untuk menjimatkan masa dan wang yang diperlukan untuk menjana pendapatan.

Risiko Strategik

  • Ia juga boleh menyebabkan kemerosotan harga yang boleh menyebabkan isyarat salah.
  • Ia juga menunjukkan bahawa perubahan trend tidak semestinya akan mencetuskan stop loss, dan kerugian maksimum tidak dapat dikawal.
  • Tetapan parameter yang tidak betul boleh menyebabkan terlalu sensitif atau lambat;
  • Ia perlu dipilih mengikut jenis dan tempoh yang sesuai untuk memberi kesan yang baik.

Kaedah pengoptimuman:

  1. Menapis isyarat yang tidak sah dalam kombinasi dengan penunjuk lain;
  2. Meningkatkan stop loss bergerak untuk mengunci keuntungan dan mengurangkan pengeluaran maksimum;
  3. Ujian parameter dan pengoptimuman untuk pelbagai jenis dan kitaran.

Arah pengoptimuman strategi

Strategi ini masih boleh dioptimumkan lagi:

  1. Kombinasi penunjuk lain boleh diperkenalkan untuk menyaring beberapa isyarat tidak sah. Contohnya MACD, KD dan sebagainya.

  2. Logik hentian adaptif boleh dimasukkan, seperti hentian bergerak, hentian baki, dan sebagainya, untuk mengawal risiko lebih lanjut.

  3. Anda boleh menguji kesan parameter yang berbeza terhadap kesan strategi, mengoptimumkan kombinasi parameter. Contohnya, panjang kitaran MA, saiz faktor pemulihan, dan sebagainya.

  4. Strategi ini adalah untuk berdagang pada waktu-waktu tertentu dan boleh disesuaikan untuk berdagang sepanjang hari. Ini mungkin memerlukan peraturan penapisan lain.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi perdagangan berbalik arah yang menggunakan saluran harga yang digabungkan dengan rata-rata bergerak. Dengan mengikuti trend dan membuka posisi terbalik pada masa yang tepat, ia dapat mengesan pergerakan harga dengan berkesan.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showos = input(true, defval = true, title = "Show Levels one side")
showcl = input(false, defval = false, title = "Show Levels continuous line")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
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")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

len = input(3)

hma = sma(high, len)
lma = sma(low, len)
plot(hma)
plot(lma)

//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]

//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)

//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)

//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Long stop", strategy.short, 0, stop = lma)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)
    strategy.entry("Short stop", strategy.long, 0, stop = hma)
    
// if time > timestamp(toyear, tomonth, today, 23, 59)
//     strategy.close_all()