Strategi Rujukan Rujukan Kuantitatif

Penulis:ChaoZhang, Tarikh: 2024-02-21 10:58:01
Tag:

img

Ringkasan

Strategi ini adalah strategi pegangan jangka panjang berdasarkan menentukan arah trend dengan garis purata bergerak mudah dan membentuk isyarat terobosan dengan garis rintangan dan sokongan. Dengan mengira titik harga Pivot High dan Pivot Low, merangka garis rintangan dan sokongan, pergi lama apabila harga menembusi garis rintangan, dan menutup kedudukan apabila harga menembusi garis sokongan. Strategi ini sesuai untuk saham dengan trend yang jelas dan boleh mendapatkan nisbah risiko-balasan yang baik.

Prinsip Strategi

  1. Mengira garis purata bergerak mudah 20 hari sebagai garis asas untuk menentukan trend
  2. Mengira titik Pivot High dan Pivot Low berdasarkan parameter input pengguna
  3. Menggambar garis rintangan dan sokongan berdasarkan titik Pivot High dan Pivot Low
  4. Pergi panjang apabila harga penutupan lebih tinggi daripada garis rintangan
  5. Penutupan kedudukan apabila garis sokongan melintasi di bawah garis rintangan

Strategi ini menggunakan purata bergerak mudah untuk menentukan arah trend keseluruhan, dan kemudian menggunakan terobosan titik utama untuk menjana isyarat perdagangan, yang merupakan strategi breakout biasa.

Analisis Kelebihan

  1. Strategi ini mempunyai peluang yang mencukupi dan sesuai untuk stok turun naik yang tinggi, menjadikannya mudah untuk menangkap trend
  2. Kawalan risiko yang baik untuk kedudukan panjang, nisbah risiko-balasan yang tinggi
  3. Gunakan isyarat terobosan untuk mengelakkan risiko terobosan palsu
  4. Parameter yang boleh disesuaikan, kebolehsesuaian yang tinggi

Analisis Risiko

  1. Bergantung pada pengoptimuman parameter, parameter yang tidak betul akan meningkatkan kebarangkalian pecah palsu
  2. Kelewatan dalam isyarat terobosan, mungkin kehilangan beberapa peluang
  3. Mudah dihentikan di pasaran yang tidak menentu
  4. Kegagalan untuk menyesuaikan garis sokongan tepat pada masanya boleh membawa kepada kerugian

Risiko boleh dikurangkan dengan mengoptimumkan parameter melalui perdagangan langsung, dan menggabungkan strategi stop loss / mengambil keuntungan.

Arahan pengoptimuman

  1. Mengoptimumkan parameter tempoh purata bergerak
  2. Mengoptimumkan rintangan dan sokongan garis parameter
  3. Tambah strategi stop loss/take profit
  4. Meningkatkan mekanisme pengesahan kejayaan
  5. Isyarat penapis dengan jumlah dagangan dan penunjuk lain

Ringkasan

Secara keseluruhan, strategi ini adalah strategi pecah biasa yang bergantung pada pengoptimuman parameter dan kecairan, sesuai untuk peniaga trend. Sebagai rangka kerja rujukan, ia boleh diperluaskan mengikut keperluan sebenar dengan menambah mekanisme seperti stop loss / mengambil keuntungan, penapisan isyarat untuk mengurangkan risiko dan meningkatkan kestabilan.


/*backtest
start: 2023-02-14 00:00:00
end: 2024-02-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CheatCode1

//@version=5
strategy("Quantitative Trend Strategy- Uptrend long", 'Steady Uptrend Strategy', overlay=true, initial_capital = 1500, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity)


length = input.int(20, minval=1)
src = input(close, title="Source")
basis = ta.sma(src, length)
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)

inp1 = input.int(46, 'LookbackLeft')
inp2 = input.int(32, 'LookbackRight')

l1 = ta.pivothigh(close, inp1, inp2)
S1 = ta.pivotlow(close, inp1, inp2)

// plot(l1, 'Pivothigh', color.red, 1)
// // plot(S1, 'Pivot Low', color.red)

l1V = ta.valuewhen(l1, close, 0)
S1V = ta.valuewhen(S1, close, 0)

Plotl1 = not na(l1) ? l1V : na
PlotS1 = not na(S1) ? S1V : na

plot(Plotl1, 'Resistance', color.green, 1, plot.style_stepline, true)
plot(PlotS1, 'Support', color.red, 1, plot.style_stepline, true)

Priceforlong = close > l1V ? true : na
Priceforshort = close < S1V ? true : na

plotshape(Priceforlong ? high : na, 'p', shape.arrowup, location.abovebar, color.green, size = size.small)
plotshape(Priceforshort ? low : na, 's', shape.arrowdown, location.belowbar, color.red, size = size.small)

vol = volume
volma = ta.sma(vol, 20)

Plotl1C = ta.valuewhen(na(Plotl1), l1V, 0)
PlotS1C = ta.valuewhen(na(PlotS1), S1V, 0)
//Strategy Execution
volc = volume > volma 

Lc1 = Priceforlong 

Sc1 = Priceforshort

sL = Plotl1 < PlotS1 ? close : na
sS = PlotS1 > Plotl1 ? close : na


if Lc1 
    strategy.entry('Long', strategy.long)
// if Sc1 and C2
//     strategy.entry('Short', strategy.short)

if Priceforshort
    strategy.cancel('Long')
if Priceforlong   
    strategy.cancel('Short')


// Stp1 = ta.crossover(k, d)
// Ltp1 = ta.crossunder(k, d)
// Ltp = d > 70  ? Ltp1 : na
// Stp = d < 30  ? Stp1 : na


if strategy.openprofit >= 0 and sL
    strategy.close('Long')
if strategy.openprofit >= 0 and sS
    strategy.close('Short')
takeP = input.float(2, title='Take Profit') / 100
stopL = input.float(1.75, title='Stop Loss') / 100


// // Pre Directionality

Stop_L = strategy.position_avg_price * (1 - stopL)

Stop_S = strategy.position_avg_price * (1 + stopL)

Take_S= strategy.position_avg_price * (1 - takeP)

Take_L = strategy.position_avg_price * (1 + takeP)
     
// sL = Plotl1 < PlotS1 ? close : na
// sS = PlotS1 < Plotl1 ? close : na
     
// //Post Excecution
if strategy.position_size > 0 and not (Lc1)
    strategy.exit("Close Long", stop = Stop_L, limit = Take_L)

if strategy.position_size < 0 and not (Sc1)
    strategy.exit("Close Short", stop = Stop_S, limit = Take_S)

Lebih lanjut