Strategi Pelarian Penyu Berganda


Tarikh penciptaan: 2023-11-28 16:25:41 Akhirnya diubah suai: 2023-11-28 16:25:41
Salin: 0 Bilangan klik: 689
1
fokus pada
1619
Pengikut

Strategi Pelarian Penyu Berganda

Gambaran keseluruhan

Strategi penembusan dua pantai menggabungkan strategi penembusan dalam undang-undang perdagangan pantai dan prinsip berhenti bergerak Linda Raschke, dengan prestasi penembusan yang sangat baik dan kawalan risiko yang ketat. Strategi ini secara serentak memantau kenaikan harga dan penurunan harga, membina kedudukan lebih atau lebih rendah apabila penembusan berlaku, dan menggunakan stop loss bergerak dan kedudukan pengurusan berhenti bergerak.

Prinsip Strategi

Logik teras adalah untuk melakukan penutupan apabila menembusi tempoh masa kecil pada tempoh masa yang tinggi, dan melakukan lebih banyak apabila menembusi tempoh masa kecil di bawah tempoh masa yang rendah. Setelah meletakkan kedudukan, menetapkan berhenti bergerak dan berhenti bergerak, terlebih dahulu menghentikan risiko pengesahan. Apabila jumlah pegangan terakumulasi ke jumlah berhenti yang ditetapkan, membatalkan pesanan berhenti pada tempoh masa berikutnya, dan kemudian keluar dari separuh kedudukan dan menetapkan berhenti bergerak dan berhenti bergerak untuk mengunci keuntungan dan mengesan perbezaan harga.

Langkah-langkah yang perlu diambil ialah:

  1. Hitung tempoh besar ((20 kitaran) titik tinggi prevHigh dan tempoh kecil ((4 kitaran) titik tinggi smallPeriodHigh。
  2. Apabila garis K terkini tinggi lebih besar daripada prevHigh, dan prevHigh lebih besar daripada kecilPeriodHigh, menunjukkan bahawa puncak kitaran besar menembusi puncak kitaran kecil, pada masa ini jika tidak ada kedudukan kosong.
  3. Menetapkan stop loss bergerak selepas membina gudang, membatalkan stop loss selepas membalikkan kedudukan, untuk mengelakkan stop loss.
  4. Apabila jumlah pemegang kedudukan mencapai jumlah kitaran berhenti bergerak yang ditetapkan (pada masa ini adalah 0 kitaran), keluarkan separuh kedudukan pada kitaran seterusnya, dan tetapkan berhenti bergerak dan berhenti bergerak, lacak perbezaan harga dan kunci keuntungan.
  5. Untuk penembusan titik rendah sama, berdasarkan hubungan penembusan titik rendah kitaran besar dan titik rendah kitaran kecil membuat banyak kedudukan.

Analisis kelebihan

Ini adalah strategi yang komprehensif dan inovatif, dengan kelebihan berikut:

  1. Gabungan dengan kaedah perdagangan dua kitaran, ia dapat mengesan isyarat penembusan dengan berkesan.
  2. Menggunakan teknologi hentian bergerak dan hentian bergerak untuk mengawal risiko dengan ketat dan mengelakkan kerugian besar.
  3. Bermula dengan bermain dua kali, sekali berhenti separuh daripada kedudukan, kemudian berhenti sepenuhnya dengan bergerak, mengunci keuntungan.
  4. Mengambil kira kedua-dua arah operasi, sesuai dengan ciri-ciri pasaran pertukaran banyak ruang.
  5. Hasil pengesanan yang sangat baik, dengan keupayaan prestasi cakera keras yang sangat kuat.

Analisis risiko

Risiko utama dan tindakan yang diambil adalah seperti berikut:

  1. Risiko penembusan palsu. Parameter kitaran harus disesuaikan dengan betul untuk memastikan keberkesanan penembusan.
  2. Mengekalkan risiko kejatuhan. Penapisan harus dilakukan dengan trend dan bentuk, dan mengelakkan meletakkan posisi pada akhir trend.
  3. Hentikan risiko diserang. Amplitud hentikan boleh dikurangkan dengan sewajarnya, memastikan terdapat ruang yang mencukupi.
  4. Risiko terlalu sensitif untuk berhenti bergerak. Tetapan titik slider selepas berhenti harus disesuaikan untuk mengelakkan berhenti yang tidak perlu.

Arah pengoptimuman

Strategi ini juga boleh dioptimumkan dalam beberapa aspek:

  1. Meningkatkan penapisan penembusan untuk memastikan penembusan itu benar.
  2. Menambah indikator untuk menilai trend dan mengelakkan meletakkan kedudukan di akhir trend.
  3. Ia juga boleh digunakan untuk mengesan masa yang tepat untuk membuat keputusan.
  4. Menambah algoritma pembelajaran mesin, parameter pengoptimuman dinamik.
  5. Menggabungkan strategi lain untuk melaksanakan penargetan statistik.

ringkaskan

Strategi terobosan dua pantai menggunakan teknologi dua kitaran, teori terobosan, dan kaedah pengurusan risiko yang ketat untuk memastikan kestabilan pendapatan sambil mengekalkan kadar kemenangan yang tinggi. Model strategi ini sederhana dan jelas, mudah difahami dan digunakan, dan merupakan strategi kuantitatif yang sangat baik. Strategi ini juga mempunyai ruang pengoptimuman yang besar, dan pelabur boleh membuat inovasi berdasarkan sistem perdagangan yang lebih baik.

Kod 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()