Strategi Breakout Kura-kura Ganda


Tanggal Pembuatan: 2023-11-28 16:25:41 Akhirnya memodifikasi: 2023-11-28 16:25:41
menyalin: 0 Jumlah klik: 690
1
fokus pada
1621
Pengikut

Strategi Breakout Kura-kura Ganda

Ringkasan

Strategi penembusan ganda berpasangan dengan strategi penembusan hukum perdagangan berpasangan dan prinsip stop loss bergerak Linda Raschke, dengan kinerja penembusan yang sangat baik dan kontrol risiko yang ketat. Strategi ini secara bersamaan memantau kenaikan dan penurunan harga, membangun posisi over atau under saat terjadi penembusan, dan menggunakan stop loss bergerak dan posisi manajemen stop loss bergerak.

Prinsip Strategi

Logika inti adalah melakukan shorting pada saat breakout pada periode tinggi pada periode tinggi, dan melakukan over pada saat breakout pada periode rendah pada periode tinggi. Setelah posisi dibuat, pengaturan stop loss bergerak dan stop loss bergerak, pertama stop loss mengkonfirmasi risiko.

Langkah-langkah operasionalnya adalah sebagai berikut:

  1. Hitung periode besar ((20 siklus) titik tinggi prevHigh dan periode kecil ((4 siklus) titik tinggi smallPeriodHigh。
  2. Ketika garis K terbaru lebih tinggi dari prevHigh, dan prevHigh lebih besar dari smallPeriodHigh, menunjukkan bahwa periode tinggi yang besar melewati periode kecil yang tinggi, pada saat ini jika tidak ada posisi kosong.
  3. Setelah membangun gudang, atur stop loss bergerak, tunggu posisi terbalik untuk membatalkan stop loss, untuk mencegah stop loss.
  4. Ketika jumlah posisi yang dipegang mencapai jumlah siklus stop-loss bergerak yang ditetapkan (sekarang 0 siklus), keluarkan setengah posisi pada siklus berikutnya, dan atur stop-loss bergerak dan stop-loss bergerak, lacak selisih harga dan kunci keuntungan.
  5. Untuk terobosan pada titik terendah sama, berdasarkan hubungan terobosan pada periode rendah dan periode rendah untuk membuat multi-posisi.

Analisis Keunggulan

Ini adalah strategi terobosan yang komprehensif, dengan keuntungan berikut:

  1. Kombinasi dengan metode perdagangan mata uang kripto dua periode, dapat secara efektif mengidentifikasi sinyal-sinyal penembusan.
  2. Menggunakan Stop Loss Mobile dan Stop Stop Mobile untuk mengontrol risiko dan menghindari kerugian besar.
  3. Bermain dua kali, sekali berhenti setengah posisi, kemudian berhenti penuh posisi dengan bergerak, mengunci keuntungan.
  4. Hal ini sesuai dengan karakteristik pasar pertukaran multi ruang.
  5. Efek deteksi yang sangat baik, dengan kemampuan kinerja yang sangat kuat.

Analisis risiko

Risiko utama dan tindakan pencegahannya adalah sebagai berikut:

  1. Resiko penembusan palsu. Parameter siklus harus disesuaikan untuk memastikan efektivitas penembusan.
  2. Mengikuti risiko penurunan. Anda harus memfilter dalam kombinasi dengan tren dan bentuk, dan menghindari posisi di akhir tren.
  3. Stop loss dapat diukur dengan memperluas stop loss agar ada ruang yang cukup.
  4. Stop loss mobile adalah risiko yang terlalu sensitif. Anda harus menyesuaikan pengaturan slider setelah stop loss untuk menghindari stop loss yang tidak perlu.

Arah optimasi

Strategi ini juga dapat dioptimalkan dalam beberapa hal:

  1. Meningkatkan filter penembusan lalu lintas untuk memastikan keaslian penembusan.
  2. Menambahkan indikator penilaian tren, menghindari posisi di akhir tren.
  3. Dengan lebih banyak siklus waktu, kita bisa menentukan waktu terobosan.
  4. Menambahkan algoritma pembelajaran mesin, parameter optimasi dinamis.
  5. Menggabungkan strategi lain, menerapkan statistical arbitrage.

Meringkaskan

Strategi terobosan dua samudra menggunakan teknik siklus ganda, teori terobosan, dan metode manajemen risiko yang ketat untuk memastikan stabilitas pendapatan sambil mempertahankan tingkat kemenangan yang tinggi. Model strategi ini sederhana dan jelas, mudah dipahami dan diterapkan, dan merupakan strategi kuantitatif yang sangat baik. Strategi ini juga memiliki ruang pengoptimalan yang besar, dan investor dapat melakukan inovasi atas dasar ini untuk membangun sistem perdagangan yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2022-11-21 00:00:00
end: 2023-11-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Turtle soup plus one", shorttitle = "Turtle soup plus one", overlay=true)

bigPeriod = input(20)
smallPeriod = input(4)
takeProfitBars = input(0)
trailingStop = input(5, title = "Trailing stop percentages")
if (strategy.position_size == 0)
    strategy.cancel("Long")
    strategy.cancel("Short")
    strategy.cancel("Stop")



stopLossPrice = 0.1
stopLossPrice := nz(stopLossPrice[1])
takeProfitStarted = false
takeProfitStarted := nz(takeProfitStarted[1])

prevHigh = highest(high, bigPeriod - smallPeriod)[smallPeriod]
smallPeriodHigh = highest(high, smallPeriod - 1)[1]
if (high > prevHigh and prevHigh > smallPeriodHigh and close > prevHigh and strategy.position_size == 0)
    strategy.order("Short", strategy.short, stop = prevHigh)

if strategy.position_size < 0 and strategy.position_size[1] == 0
    stopLossPrice := high[1]
    strategy.order("Stop", strategy.long, qty = -strategy.position_size, stop = stopLossPrice)
    takeProfitStarted := false

if (strategy.position_size < 0 and sum(strategy.position_size, takeProfitBars) == strategy.position_size * takeProfitBars and close < strategy.position_avg_price and not takeProfitStarted)
    takeProfitStarted := true
    strategy.cancel("Stop")
    strategy.order("ExitHalf", strategy.long, qty = ceil(-strategy.position_size / 2), stop = close)
    if (strategy.position_size != -1)
        strategy.exit("ExitFull", "Short", qty = -strategy.position_size - ceil(-strategy.position_size / 2), loss = stopLossPrice, trail_price  = close, trail_offset = -(close - strategy.position_avg_price) * trailingStop / 100 / syminfo.mintick)
        

prevLow = lowest(low, bigPeriod - smallPeriod)[smallPeriod]
smallPeriodLow = lowest(low, smallPeriod - 1)[1]
if (low < prevLow and prevLow < smallPeriodLow and close < prevLow and strategy.position_size == 0)
    strategy.order("Long", strategy.long, stop = prevLow)

if strategy.position_size > 0 and strategy.position_size[1] == 0
    stopLossPrice := low[1]
    strategy.order("Stop", strategy.short, qty = strategy.position_size, stop = stopLossPrice)
    takeProfitStarted := false

if (strategy.position_size > 0 and sum(strategy.position_size, takeProfitBars) == strategy.position_size * takeProfitBars and close > strategy.position_avg_price and not takeProfitStarted)
    takeProfitStarted := true
    strategy.cancel("Stop")
    strategy.order("ExitHalf", strategy.short, qty = ceil(strategy.position_size / 2), stop = close)
    if (strategy.position_size != 1)
        strategy.exit("ExitFull", "Long", qty = strategy.position_size - ceil(strategy.position_size / 2),loss = stopLossPrice, trail_price  = close, trail_offset = (close - strategy.position_avg_price) * trailingStop / 100 / syminfo.mintick)

// === Backtesting Dates ===
testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(3, "Backtest Start Month")
testStartDay = input(6, "Backtest Start Day")
testStartHour = input(08, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2038, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(14, "Backtest Stop Day")
testStopHour = input(14, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = testPeriodSwitch == true ? testPeriod() : true
// === /END
if not isPeriod
    strategy.cancel_all()
    strategy.close_all()