
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.
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:
Melalui kitaran logik ini, trend harga naik dan turun dapat ditangkap dan trend dapat dikesan.
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 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.
Strategi ini boleh terus dioptimumkan dengan cara berikut:
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.
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.
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.
Menggunakan parameter terbaik untuk latihan pembelajaran mesin. Melalui latihan data sejarah yang banyak, dapatkan ENTRY dan EXIT yang optimum untuk persekitaran pasaran semasa.
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.
/*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())