
Strategi ini didesain berdasarkan ide untuk membeli di titik rendah dan menjual di titik tinggi di pasar. Strategi ini melacak harga tertinggi dan terendah dalam periode tertentu di masa lalu, membangun posisi multihead ketika harga melampaui harga terendah, dan melonggarkan posisi ketika harga jatuh di bawah harga tertinggi atau mencapai kondisi stop. Strategi ini juga menambahkan filter tren opsional yang hanya akan dibeli ketika harga berada dalam tren naik.
Harga terendah ((lowcriteria): Panggilan fungsi ta.lowest untuk menghitung harga terendah dalam periode tertentu yang lalu, dan menggambar garis harga terendah berdasarkan siklus review yang ditetapkan pengguna (default 20 K-line).
Highcriteria: Menggunakan fungsi ta.highest untuk menghitung harga tertinggi dalam periode tertentu, dan menggambar garis harga tertinggi.
Ketika harga saat ini menembus garis harga terendah, maka sinyal beli akan dibuat dan posisi multihead akan dibuat.
Ada dua opsi untuk bermain:
Hentikan: Jika harga mencapai level hentikan yang ditetapkan (jika lebih dari 8% dari harga masuk), maka posisi akan dihapus.
Penembusan harga tertinggi: Ketika harga jatuh di bawah garis harga tertinggi, perhitungan tren berbalik, posisi terhenti.
Untuk menentukan arah tren, Anda hanya akan membeli jika harga lebih tinggi dari rata-rata EMA (disebut tren naik). Filter ini dapat dipilih untuk menyalakan atau mematikan.
Strategi yang digunakan untuk membeli di titik terendah dan menjual di titik tertinggi sesuai dengan aturan dasar pasar.
Menambahkan mekanisme penilaian tren, menghindari sering membuka posisi saat harga bergejolak.
Ada dua opsi untuk bermain, yaitu untuk mengejar stop loss yang tinggi dan untuk mengurangi kerugian.
Parameter yang dapat disesuaikan untuk menyesuaikan dengan lingkungan pasar yang lebih luas.
Ada banyak ruang untuk mengoptimalkan strategi, yang dapat disempurnakan melalui penyesuaian parameter, desain filter, dan sebagainya.
Stop-loss tetap tidak dapat disesuaikan dengan tren pasar yang sebenarnya, yang dapat menyebabkan stop-loss prematur atau stop-loss yang terlalu kecil.
Penjualan di atas harga teratas mungkin telah menghasilkan kerugian besar yang tidak dapat dikendalikan secara efektif.
EMA menilai tren hanya dari periode sejarah tertentu dan mungkin tertinggal dari perubahan tren aktual.
Data pengamatan tidak dapat mewakili masa depan, dan efeknya tidak pasti.
Tambah stop mode: seperti stop bergerak, stop level, dan lain-lain, sehingga level stop dapat disesuaikan secara real-time dengan pergerakan pasar.
Optimalkan sinyal berangkat: misalnya, mengubah berangkat dalam kelompok, atau menambahkan penilaian indikator lainnya.
Optimalkan penilaian tren: seperti menambahkan lebih banyak indikator, atau penilaian pembelajaran mesin.
Parameter optimasi: menemukan kombinasi parameter yang optimal melalui umpan balik yang lebih luas.
Peningkatan Stop Loss: Membuat pengendalian kerugian lebih fleksibel dan efektif.
Strategi ini secara keseluruhan menggunakan prinsip jual beli rendah klasik, dalam kondisi tertentu dapat mencapai efek yang lebih baik. Namun, strategi itu sendiri masih memiliki ruang untuk pengoptimalan, dengan penyesuaian parameter, pengoptimalan keluar, perbaikan cara menghentikan kerugian, dll. Dapat memperoleh keuntungan yang lebih stabil.
/*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/
// @version=5
// Author = TradeAutomation
strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110)
// Backtest Date Range Inputs //
StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time')
InDateRange = true
// Strategy Calculations //
lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1]
highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1]
plot(highcriteria, color=color.green)
plot(lowcriteria, color=color.red)
// Take Profit //
TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?")
TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25))))
// Operational Functions //
TrendFilterInput = input(true, "Only buy when price is above EMA trend?")
ema = ta.ema(close, input(200, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)
// Entry & Exit Functions//
if (InDateRange and TrendFilterInput==true)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong)
if (InDateRange and TrendFilterInput==false)
strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria))
if (InDateRange and TakeProfitInput==true)
strategy.close("Long", when = TakeProfit)
if (InDateRange and TakeProfitInput==false)
strategy.close("Long", when = ta.crossunder(close, highcriteria))
if (not InDateRange)
strategy.close_all()