Strategi ini membeli kejatuhan dan mengambil keuntungan untuk kadar kemenangan yang tinggi dengan menjejaki harga yang rendah secara dinamik, pergi lama selepas kejatuhan harga, dan mengunci keuntungan dan mengawal risiko melalui mengambil keuntungan adaptif dan menghentikan kerugian.
Logik teras strategi ini adalah untuk menggunakan penunjuk ATR untuk mengira kedudukan keuntungan dan stop loss dinamik. Khususnya, isyarat panjang diaktifkan apabila harga penutupan berada di bawah paras terendah dalam n hari yang lalu (ditentukan kepada 7 hari dalam kod); semasa kedudukan panjang, harga keuntungan dan harga stop loss akan dikira secara dinamik berdasarkan penunjuk ATR (ditentukan melalui kelipatan ATR) dan dipaparkan pada carta dalam masa nyata.
Strategi ini menggabungkan pendekatan pembelian yang paling mudah dengan idea stop loss / mengambil keuntungan dinamik untuk menangkap peluang dengan tepat pada masanya sambil mengawal risiko.
Kelebihan utama strategi ini ialah:
Menggunakan penunjuk ATR dinamik untuk menetapkan stop loss dan mengambil keuntungan boleh menyesuaikan tahap P / L berdasarkan turun naik pasaran, mengelakkan kerugian yang tidak perlu atau kehilangan peluang keuntungan yang lebih besar kerana terlalu tetap stop loss / mengambil keuntungan.
Membeli strategi penurunan cenderung mempunyai kadar kemenangan yang lebih tinggi semasa penyatuan pasaran apabila harga turun di bawah tahap sokongan secara tidak normal dan mungkin akan bangkit semula.
Menganggarkan nisbah mengambil keuntungan / berhenti kerugian melalui nilai ATR adalah munasabah dan boleh ditetapkan secara fleksibel mengikut keadaan pasaran dan toleransi risiko peribadi.
Logik kod adalah mudah dan jelas, mudah difahami. Tetapan parameter juga intuitif. Ia sesuai sebagai strategi teladan untuk pembelajaran.
Risiko utama strategi ini ialah:
Tidak dapat menentukan amplitudo dan kekuatan rebound selepas penurunan. Terdapat risiko bahawa jangkaan keuntungan kurang. Ini boleh ditangani dengan menyesuaikan parameter ATR untuk menetapkan julat keuntungan yang berbeza.
Risiko terperangkap dalam kerugian apabila harga memecahkan sokongan dan terus jatuh, menghadapi kerugian yang lebih besar.
Stop loss yang terlalu ketat juga boleh tersingkir tanpa perlu.
Backtest risiko overfit. Ujian di bawah keadaan pasaran yang berbeza adalah perlu, dengan tetapan slippage / komisen yang betul.
Strategi ini boleh ditingkatkan dalam aspek berikut:
Mengoptimumkan tahap sokongan dan penentuan isyarat. Penunjuk yang lebih canggih seperti KDJ atau Bollinger Bands boleh digunakan untuk menilai isyarat pembalikan dengan lebih dipercayai.
Mengoptimumkan peraturan saiz kedudukan. Sesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pasaran dll.
Melaksanakan modul Stop Loss Trailing, mengetatkan stop selepas harga maju dengan julat tertentu, untuk mengunci keuntungan separa.
Menambah penapis perpaduan. Masuk panjang hanya jika sektor/pasaran yang sama juga mencapai sokongan, mengesahkan kebolehpercayaan isyarat.
Strategi ini menangkap peluang pembalikan purata melalui pembelian penurunan, dengan mengambil keuntungan / berhenti kerugian untuk kawalan risiko. Walaupun ruang untuk lebih canggih, ia cukup mudah untuk dimengerti dan dipelajari oleh pemula. Penambahbaikan lanjut dapat meningkatkan ketahanan dan kesesuaian.
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 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/ // © racer8 //@version=4 strategy("Buy-The-Dip", overlay=true) atn = input(15, "ATR Period") atr = sma(tr,atn)[1] bought = strategy.position_size[0] > strategy.position_size[1] slm = input(2.0,"ATR SL Multiple",minval=0) StopPrice = strategy.position_avg_price - slm*atr // determines stop loss's price FixedStopPrice = valuewhen(bought,StopPrice,0) // stores original StopPrice plot(FixedStopPrice,"Stop Loss",color=color.red,linewidth=2,style=plot.style_cross) tpm = input(1.0,"ATR TP Multiple",minval=0) TakePrice = strategy.position_avg_price + tpm*atr // determines Take Profit's price FixedTakePrice = valuewhen(bought,TakePrice,0) // stores original TakePrice plot(FixedTakePrice,"Take Profit",color=color.green,linewidth=2,style=plot.style_cross) nn = input(7,"Channel Length") ll = lowest(low,nn) if close<ll[1] strategy.entry("Buy",strategy.long) if strategy.position_size > 0 strategy.exit(id="XL SL", stop=FixedStopPrice, limit=FixedTakePrice) // commands stop loss order to exit! plot(ll,color=color.orange)