Breakout Mengikuti Strategi Trend


Tarikh penciptaan: 2023-12-08 17:16:34 Akhirnya diubah suai: 2023-12-08 17:16:34
Salin: 1 Bilangan klik: 573
1
fokus pada
1621
Pengikut

Breakout Mengikuti Strategi Trend

Gambaran keseluruhan

Strategi ini membolehkan untuk mengesan trend harga cryptocurrency dengan menetapkan titik tinggi dan rendah di mana harga menembusi. Melakukan kenaikan apabila harga menembusi titik tertinggi, dan mengambil posisi kosong apabila harga menembusi titik terendah, untuk menangkap trend.

Prinsip Strategi

Strategi ini terutamanya menggunakan kaedah rata-rata bergerak yang diimbangi untuk menentukan sama ada harga menunjukkan trend naik atau turun yang jelas. Khususnya, ia akan mengkaji harga tertinggi dan harga terendah dalam tempoh tertentu, apabila harga dagangan sebenar melebihi harga tertinggi statistik, ia akan berlaku sebagai trend naik; apabila harga dagangan sebenar lebih rendah daripada harga terendah statistik, ia akan berlaku sebagai trend menurun.

Harga pembukaan kedudukan kosong yang lebih tinggi ditetapkan melalui parameter ENTRY, dan harga kedudukan kosong ditetapkan melalui parameter EXIT. Masa pengembalian juga boleh ditetapkan melalui parameter. Oleh itu, anda boleh mencari kombinasi combo terbaik dengan menyesuaikan parameter.

Secara khusus, logik utama strategi ini ialah:

  1. Harga tertinggi dan terendah dalam tempoh tertentu (boleh ditetapkan)
  2. Menentukan sama ada harga sebenar lebih tinggi daripada harga tertinggi
    1. Jika lebih tinggi daripada, peluang untuk melakukan lebih banyak, buka lebih banyak kedudukan berdasarkan paras harga yang ditetapkan oleh parameter ENTRY
    2. Jika harga yang sebenarnya diperdagangkan adalah di bawah harga terendah, peluang untuk melakukan shorting muncul dan membuka kedudukan kosong berdasarkan paras harga yang ditetapkan oleh parameter EXIT
  3. Selepas membuka kedudukan berlebih, tutup kedudukan apabila harga lebih rendah daripada harga yang ditetapkan oleh parameter EXIT
  4. Posisi kosong selepas membuka kedudukan apabila harga lebih tinggi daripada harga yang ditetapkan oleh parameter ENTRY

Melalui kitaran logik ini, trend harga naik dan turun dapat ditangkap dan trend dapat dikesan.

Kelebihan Strategik

Kelebihan utama strategi ini adalah bahawa ia dapat menangkap trend harga secara automatik melalui penyesuaian parameter, tanpa perlu menilai arah trend secara manual. Apabila parameter ditetapkan dengan betul, ia dapat secara automatik mengesan turun naik harga cryptocurrency.

Selain itu, strategi ini sangat sesuai untuk perdagangan kuantitatif, yang dapat dengan mudah mewujudkan pesanan automatik. Tidak memerlukan operasi manual, mengurangkan risiko perdagangan emosi, yang dapat meningkatkan kecekapan perdagangan.

Akhirnya, strategi ini juga dapat memaksimumkan keuntungan dengan menyesuaikan parameter. Dengan menguji parameter ENTRY dan EXIT yang berbeza, parameter terbaik dapat dijumpai dan keuntungan dapat dimaksimumkan.

Risiko Strategik

Risiko terbesar strategi ini adalah bahawa parameter yang tidak betul boleh menyebabkan perdagangan yang terlalu kerap, meningkatkan kos perdagangan dan kehilangan titik tergelincir. Jika ENTRY ditetapkan terlalu rendah, dan EXIT ditetapkan terlalu tinggi, ia mudah menghasilkan isyarat perdagangan palsu.

Selain itu, jika parameter disesuaikan dengan tidak betul, ia juga boleh menyebabkan ketidakupayaan untuk menangkap trend harga tepat pada masanya, kehilangan peluang perdagangan. Ini memerlukan banyak pengulangan untuk mencari parameter yang optimum.

Akhirnya, strategi ini terlalu sensitif terhadap bunyi pasaran jangka pendek dan mungkin menghasilkan isyarat perdagangan yang salah. Ini perlu dielakkan dengan menetapkan parameter kitaran masa perdagangan dengan betul.

Arah pengoptimuman strategi

Strategi ini boleh terus dioptimumkan dengan cara berikut:

  1. Tambah logik stop loss. Dengan cara ini, anda boleh berhenti dan keluar dari kerugian apabila kerugian anda meningkat kepada peratusan tertentu, dan mengelakkan kerugian yang lebih besar.

  2. Tambah penapis kepada penunjuk teknikal seperti purata bergerak. Gunakan MA, KDJ dan lain-lain untuk menilai trend besar, mengelakkan bunyi jangka pendek yang membawa kepada terlalu banyak perdagangan.

  3. Logik tetapan parameter yang dioptimumkan. Anda boleh menetapkan mekanisme perubahan penyesuaian parameter ENTRY, EXIT, dan bukan tetapan statik, yang membolehkan anda menyesuaikan parameter mengikut keadaan pasaran.

  4. Menggunakan parameter terbaik untuk latihan pembelajaran mesin. Melalui latihan data sejarah yang banyak, dapatkan ENTRY dan EXIT yang optimum untuk persekitaran pasaran semasa.

ringkaskan

Strategi ini membolehkan perdagangan automatik dengan menangkap trend harga, kelebihan utamanya adalah dapat mengurangkan kesan emosi manusia terhadap perdagangan, mengurangkan risiko, meningkatkan kecekapan. Ia juga dapat mencari titik keuntungan terbaik dengan menyesuaikan parameter.

Risiko utama strategi adalah parameter yang tidak betul dan terlalu sensitif terhadap bunyi pasaran. Ini memerlukan peningkatan dengan cara menghentikan kerugian, penapisan indikator, dan pengoptimuman penyesuaian parameter.

Secara keseluruhannya, strategi ini adalah strategi yang mudah dan berkesan untuk mengesan trend, sesuai untuk kuantiti dan perdagangan automatik. Dengan pengoptimuman berterusan, anda boleh meningkatkan lagi kestabilan strategi.

Kod sumber strategi
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © JstMtlQC

//@version=4
strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)


/////////////// INPUT ENTRY EXIT
entry= input(100, "ENTRY H/L")
exit= input(50, "EXIT H/L")

/////////////// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")

/////////////// Backtest Setting
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false 

/////////////// BUY OPEN PLOT
highestpricelong = highest(high,entry)[1]
plot(highestpricelong, color=color.green, linewidth=2)

/////////////// BUY CLOSE PLOT
lowestpricelong = lowest(high,exit)[1]
plot(lowestpricelong, color=color.green, linewidth=2)

/////////////// SHORT OPEN PLOT
lowestpriceshort = lowest(low,entry)[1]
plot(lowestpriceshort, color=color.red, linewidth=2)

/////////////// SHORT CLOSE PLOT
highestpriceshort = highest(low,exit)[1]
plot(highestpriceshort, color=color.red, linewidth=2)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CONDITION LONG SHORT //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// SHORT 

entryshort= crossunder(close, lowestpriceshort)
exitshort= crossover(close,highestpriceshort)

/////////////// LONG 

exitlong= crossover(close, lowestpricelong)
entrylong= crossover(close,highestpricelong)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// LONG and SHORT ORDER //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// LONG 

if (entrylong)
    strategy.entry("LongEntry", strategy.long, when = window())
if (exitlong or entryshort)
    strategy.close("LongEntry", when=window())

/////////////// SHORT 

if (entryshort)
    strategy.entry("short", strategy.short, when = window())
if (exitshort or entrylong)
    strategy.close("short", when=window())