Strategi ini menjejaki trend harga mata wang kripto dengan menetapkan harga tinggi dan rendah. Ia pergi lama apabila harga memecahkan di atas harga tertinggi dan pergi pendek apabila harga memecahkan di bawah harga terendah untuk menangkap trend.
Strategi ini terutamanya menggunakan kaedah purata bergerak yang ditimbang untuk menentukan sama ada terdapat trend menaik atau menurun yang jelas. Khususnya, ia akan merekodkan harga tertinggi dan terendah dalam tempoh tertentu. Apabila harga dagangan sebenar melebihi harga tertinggi yang direkodkan, ia dinilai bahawa trend menaik telah berlaku, dan ia akan menjadi panjang. Apabila harga dagangan sebenar lebih rendah daripada harga terendah yang direkodkan, ia dinilai bahawa trend menurun telah berlaku, dan ia akan menjadi pendek.
Harga pembukaan untuk panjang dan pendek ditetapkan melalui parameter input
Secara khusus, logik utama strategi adalah:
Melalui gelung logik ini, ia dapat menangkap trend harga ke atas dan ke bawah dan mencapai trend berikut.
Kelebihan terbesar strategi ini ialah dengan menyesuaikan parameter, ia boleh menangkap trend harga secara automatik tanpa perlu menilai arah trend secara manual. Selagi parameter ditetapkan dengan betul, ia boleh menjejaki turun naik harga cryptocurrency secara automatik.
Di samping itu, strategi ini sangat sesuai untuk perdagangan kuantitatif dan dengan mudah dapat mencapai penempatan pesanan automatik. Tanpa operasi manual, ia mengurangkan risiko perdagangan emosi dan sangat meningkatkan kecekapan perdagangan.
Akhirnya, strategi ini juga dapat memaksimumkan pulangan dengan menyesuaikan parameter. Dengan menguji parameter ENTRY dan EXIT yang berbeza, parameter optimum dapat dijumpai untuk memaksimumkan pulangan.
Risiko terbesar strategi ini adalah bahawa tetapan parameter yang tidak betul boleh menyebabkan perdagangan yang terlalu kerap, meningkatkan yuran dagangan dan kerugian slippage.
Di samping itu, penyesuaian parameter yang tidak betul juga boleh menyebabkan kegagalan untuk menangkap trend harga tepat pada masanya, kehilangan peluang perdagangan.
Akhirnya, strategi ini terlalu sensitif terhadap bunyi bising pasaran jangka pendek, yang boleh menghasilkan isyarat dagangan yang salah.
Aspek berikut boleh dioptimumkan lagi untuk strategi ini:
Tambah logik stop loss. Ini membolehkan stop loss apabila kerugian melebihi peratusan tertentu untuk mengelakkan kerugian yang lebih besar.
Tambah penapis penunjuk teknikal seperti purata bergerak, KDJ untuk menilai trend keseluruhan untuk mengelakkan terlalu banyak perdagangan kerana bunyi bising jangka pendek.
Mengoptimumkan logik tetapan parameter. Mekanisme perubahan adaptif boleh ditetapkan untuk parameter ENTRY dan EXIT dan bukannya tetapan statik supaya mereka boleh menyesuaikan diri berdasarkan keadaan pasaran.
Gunakan pembelajaran mesin untuk melatih parameter optimum. Dapatkan tetapan ENTRY dan EXIT yang optimum untuk persekitaran pasaran semasa melalui latihan data sejarah yang besar.
Kelebihan terbesar strategi ini ialah dengan menangkap trend harga ia mencapai perdagangan automatik, yang dapat mengurangkan kesan emosi manusia pada perdagangan, mengurangkan risiko, dan meningkatkan kecekapan.
Risiko utama strategi adalah tetapan parameter yang tidak betul dan terlalu sensitif terhadap bunyi pasaran. Ini perlu ditingkatkan melalui stop loss, penapis penunjuk, pengoptimuman parameter adaptif dan banyak lagi.
Secara keseluruhan, ini adalah trend yang mudah dan berkesan mengikuti strategi yang sesuai untuk perdagangan kuantitatif dan automatik. Dengan pengoptimuman berterusan, kestabilan strategi dapat ditingkatkan lagi.
/*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())